2.1 Азбука Морзе на светодиоде
Азбука Морзе — это двоичное кодирование, которое позволяет передавать сообщение по буквам при помощи звука или мигающего света.
В этом проекте мы напишем скрипт, чтобы получить мерцание светодиодного индикатора Omega2 для передачи азбуки Морзе при помощи интерфейса командной строки Omega.
Уровень навыков: начинающий
Необходимое время: 15 минут
Что потребуется:
- Onion Omega2 или Omega2+
- Любая док-станция Onion. Для этого проекта мы выбрали Mini Dock.
В этом проекте будем использовать LED утилиту morse, которая уже загружена в Omega. Мы проверим, как это работает, затем напишем скрипт для перевода текста по мере его ввода!
1. Подготовим все необходимое
Ваш Omega2 должен быть готов к работе. Выполните все действия из инструкции по подключению Omega2, чтобы подключиться к WiFi и обновить последнюю прошивку.
Для этого проекта необходима работа с командной строкой (терминалом) Omega2. Для того чтобы больше узнать о работе с командной строкой Omega2, прочитайте эту инструкцию.
2. Управление LED при помощи команды Morse
В Omega2 уже установлен модуль ядра, который может переводить текст в код Морзе и вызвать мигание LED индикаторов, но вам нужно будет дать ядру инструкцию, какой именно индикатор должен мигать. Ядро раскрывает состояние оборудования и опции конфигурации через виртуальную файловую систему в каталоге /sys.
Файлы в /sys фактически не являются файлами, но они выглядят и действуют, как файлы, чтобы к ним можно было легко получить доступ из командной строки, а также в скриптах и программах.
Для того чтобы дать ядру указание, что мы собираемся использовать модуль азбуки Морзе, задайте условие для триггера LED при помощи команды echo. Настройки будут прописаны в виртуальном файле:
echo morse > /sys/class/leds/omega2\:amber\:system/trigger
Если вы работаете на Omega2+, то в коде omega2 необходимо заменить на omega2p
В этом случае, команда будет выглядеть так:
echo morse > /sys/class/leds/omega2p\:amber\:system/trigger
Вы можете убедиться, что все работает, используя cat, заглянуть в виртуальный файл:
root@Omega-2757:~# cat /sys/class/leds/omega2\:amber\:system/trigger none mmc0 timer default-on netdev transient gpio heartbeat [morse] oneshot
Квадрантные скобки указывают, что сейчас выбран триггер morse. Текст в этом файле показывает и другие доступные опции, которые можно применить к данной конкретной части ядра (в данном случае - режиму мигания встроенным в Омегу светодиодом).
Итак, у нас все настроено!
Как только будет выбрана опция morse, ядро начнет создавать новый виртуальный файл под названием message. Команда echo выведет нужный нам текст:
echo Hello, Onion > /sys/class/leds/omega2\:amber\:system/message
Теперь посмотрите на светодиод!
Цикл будет продолжаться бесконечно. Для того чтобы его остановить, вы можете либо полностью очистить файл message:
echo > /sys/class/leds/omega2\:amber\:system/message
или изменить триггер LED на что-то еще:
echo default-on > /sys/class/leds/omega2\:amber\:system/trigger
Если мигание LED индикаторов слишком быстрое или слишком медленное, то вы можете изменить скорость при помощи файла delay:
root@Omega-12D9:~# cat /sys/class/leds/omega2\:amber\:system/delay 50
Для того чтобы немного замедлить работу, мы пропишем большее число:
root@Omega-12D9:~# echo 100 > /sys/class/leds/omega2\:amber\:system/delay
3. Shell-скрипт вместо echo
В корневой директории создайте файл под названием morse.sh при помощи следующей команды:
vi /root/morse.sh
Вы откроете пустой файл. Для того чтобы начать печатать, можете ввести a.
С более удобным способом работы с файлами вы можете ознакомиться в статье Знакомство с Терминалом и Редактором Omega 2.
Скопируйте код ниже в терминал.
. /lib/ramips.sh board=$(ramips_board_name) # устанавливаем функцию, которая приведет светодиод в необходимый режим мерцания _MorseMain () { echo morse > /sys/class/leds/$board\:amber\:system/trigger echo 120 > /sys/class/leds/$board\:amber\:system/delay echo $* > /sys/class/leds/$board\:amber\:system/message } ##### Основная программа ##### # Запускаем функцию _MorseMain с аргументом $* _MorseMain $* exit
Эта схема показывает шаги, которые совершает функция _MorseMain:
Теперь, для того чтобы сохранить файл, вы должны войти в режим команд, нажав на клавишу ESC на своей клавиатуре.
Режим команд в редакторе vi позволяет нажимать на клавиши и выполнять такие команды, как сохранить и выйти, выйти без сохранения или удалить строки.
Введите :wq и нажмите enter, чтобы сохранить файл и выйти.
Теперь вы готовы конвертировать текст в азбуку Морзе!
4. Запуск!
Для запуска своего скрипта, введите следующую команду:
sh /root/morse.sh <VASH TEKST>
Введите сообщение, которое нужно передать азбукой Морзе:
root@Omega-2757:~# sh /root/morse.sh Hello World
Как только вы закончили, вы можете вернуть мигание индикаторов обратно в режим default-on (по умолчанию) при помощи следующей команды:
echo default-on > /sys/class/leds/omega2\:amber\:system/trigger
Не забывайте, что в Omega2+, LED имеет название omega2p:amber:system, в отличие от omega2:amber:system, поэтому команда будет выглядеть так:
/sys/class/leds/omega2p\:amber\:system/trigger
0 Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign In Now