• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Sign in to follow this  
Followers 0
  • entries
    10
  • comments
    2
  • views
    9842

2.1 Азбука Морзе на светодиоде

Sign in to follow this  
Followers 0
Админ

4485 views

Азбука Морзе — это двоичное кодирование, которое позволяет передавать сообщение по буквам при помощи звука или мигающего света. 
В этом проекте мы напишем скрипт, чтобы получить мерцание светодиодного индикатора Omega2 для передачи азбуки Морзе при помощи интерфейса командной строки Omega. 

2.jpg

Уровень навыков: начинающий

Необходимое время: 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:

1.png

Теперь, для того чтобы сохранить файл, вы должны войти в режим команд, нажав на клавишу ESC на своей клавиатуре. 
Режим команд в редакторе vi позволяет нажимать на клавиши и выполнять такие команды, как сохранить и выйти, выйти без сохранения или удалить строки. 
Введите :wq и нажмите enter, чтобы сохранить файл и выйти. 

2.png

Теперь вы готовы конвертировать текст в азбуку Морзе!

4. Запуск!

Для запуска своего скрипта, введите следующую команду: 

sh /root/morse.sh <VASH TEKST>

Введите сообщение, которое нужно передать азбукой Морзе:   

root@Omega-2757:~# sh /root/morse.sh Hello World

2.jpg

Как только вы закончили, вы можете вернуть мигание индикаторов обратно в режим 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

 


Sign in to follow this  
Followers 0


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