• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

22 проекта на Omega2

  • записей
    10
  • комментария
    2
  • просмотра
    3 732

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

Админ

478 просмотров

Азбука Морзе — это двоичное кодирование, которое позволяет передавать сообщение по буквам при помощи звука или мигающего света. 
В этом проекте мы напишем скрипт, чтобы получить мерцание светодиодного индикатора 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

 




0 комментариев


Нет комментариев для отображения

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас