Linux-сервер на микрокомпьютере Omega 2

omega 2 микрокомпьютер

В жизни каждого тек гика наступает момент, когда обычных микроконтроллеров уже не хватает, а тратить деньги на Raspberry Pi жалко. Именно тут и выходит на сцену устройство под скромным названием Onion Omega 2. По размерам и цене близкий к микроконтроллерам, он обладает возможностями, сравнимыми с возможностями Raspberry Pi.

РЕКОМЕНДУЕМ: Espruino Pico: програмирование USB-микроконтроллера на JavaScript

Чем отличается микроконтроллер от микро-компьютера?

omega 2 микрокомпьютер
Omega 2

На мой взгляд, основное отличие микроконтроллера от мини-компьютера (одноплатника) — операционная система. На микроконтроллере есть программа, прошивка. Да, в некоторых контроллерных прошивках, например Micropython, реализована частичная функциональность операционной системы, работа с файлами, пользовательский интерфейс и прочее, но это не делает их (платы с такой прошивкой) компьютерами.

А поскольку на Omega 2 установлена облегченная версия Linux — LEDE (Linux Embedded Development Environment), базирующаяся на OpenWRT, то, несмотря на свой форм-фактор, Omega 2 — одноплатный компьютер. Кстати, компания-производитель позиционирует его как «самый маленький в мире компьютер с установленной Linux».

Что умеет Omega 2

Сейчас в продаже находится две версии Onion Omega: 2 и 2+. В данной статье рассматривается версия Onion Omega 2. Плата для обзора была любезно предоставлена магазином iarduino.

Сравнение Omega 2 и 2+
Сравнение Omega 2 и 2+

Итак, у нашего компьютера:

  • 580 МГц CPU
  • 64 Мбайт оперативной памяти
  • 16 Мбайт флеш-памяти
  • USB 2.0
  • Wi-Fi
  • 15 GPIO
  • 2 PWM
  • 2 UART
  • 1 I2C
  • 1 SPI
  • 1 I2S

Как можно заметить на картинке, на самой плате есть только пины, нет даже входа для питания. Для того чтобы начать работать с платой, придется раскошелиться на док-станцию. Их существует целых пять штук, каждая удобна в своем случае. Я буду использовать Expansion dock. На ней расположены GPIO, USB-порт, RGB-светодиод, кнопка Reset, выключатель и порт microUSB для питания устройства.

Виды док-станций omega 2
Виды док-станций

Кроме док-станций, для Omega существуют различные стандартные модули: BLE-модуль, модуль для подключения Ethernet, GPS-модуль, модуль OLED-дисплея. Есть и различные шилды: для работы с RFID-метками, для управления реле и сервоприводами.

Начинаем работу с Omega 2

Очень много примеров работы с этой платой уже рассмотрено на форуме, поэтому я только пробегусь по основным пунктам настройки, а затем мы приступим уже к более-менее реальным проектам.

Вставляем плату в шилд, подключаем питание — и поехали!

Если питание благополучно подается, то в списке доступных Wi-Fi-сетей мы вскоре увидим сеть с названием Omega-XXXX, где вместо XXXX будет кусочек MAC-адреса (кстати, пароль стандартный — 12345678). Подключаемся к этой сети и с помощью любого браузера заходим по адресу 192.168.3.1, а дальше, следуя любезным инструкциям разработчиков платы, выполняем первичную настройку: подключаем плату к своему Wi-Fi, чтобы не переключаться между сетями, регистрируемся в облаке и устанавливаем консоль. Логин и пароль по умолчанию — root и onioneer соответственно.

Панель управления Omega 2
Панель управления (консоль) Omega 2

После завершения настройки мы сможем попасть в панель управления Omega. Почему-то она называется консолью, но от привычного нам интерфейса командной строки она довольно далека :). На самом деле больше всего эта панель управления напоминает, по крайней мере мне, Launchpad на macOS. Давай попробуем разобраться, зачем нужна каждая из утилит.

  • GPIO Tool позволяет каждому пину поставить в соответствие режим работы Input/Output и установить значение по умолчанию — 0 или 1.
  • OLED Control — если ты купил еще и модуль с экраном, то эта программка поможет вывести на него текст или картинку.
  • Settings — настройки, их можно посмотреть и отредактировать, в частности обновить прошивку или сбросить плату до заводских настроек.
  • Relay Control — утилита для управления реле, опять же на дополнительном модуле.
  • PWM Control — отличается от предыдущей утилиты лишь тем, что контролирует сервоприводы.

Эти программы поставляются вместе с прошивкой, оставшиеся же требуют отдельной установки.

  • Terminal — привычный всем пользователям Linux интерфейс командной строки.
  • Editor — минималистичный текстовый редактор и файловый менеджер.
  • Webcam — утилита для стриминга с помощью обычной USB-веб-камеры.

Перед тем как начать работу, нужно решить, на мой взгляд, основную проблему — нехватку памяти. 16 Мбайт маловато. Поэтому подключаем флешку и переносим на нее системный раздел.

  1. Открываем терминал и обновляем список доступных пакетов командой
    [/crayon]
  2. Затем устанавливаем нужные нам пакеты:
    [/crayon]
  3. Отмонтируем нашу флешку. Если выдаст ошибку — не переживай:
    [/crayon]
  4. Форматируем флешку в ext4:
    [/crayon]
  5. Ждем завершения форматирования.
  6. Создаем точку монтирования и монтируем в него нашу флешку:
    [/crayon]
  7. Переносим каталог /overlay на флешку:
    [/crayon]
  8. И устанавливаем автоматическое монтирование при включении:
    [/crayon]

Открываем файлик /etc/config/fstab и заменяем в нем

  • option target '/mnt/<device name>' на option target '/overlay';
  • option enabled '0' на option enabled '1'.

Сохраняем и перезагружаемся. Ф-ф-фух! Теперь памяти у нас достаточно. И вот теперь мы действительно начинаем!

Omega 2 и Hello RGB & Node.js

Одно из больших преимуществ данной платы — возможность программировать ее на разных языках. Например, Node.js. Установим его, а также несколько дополнительных пакетов:

В качестве демонстрации разберем, как работает управление Omega 2 с помощью Blynk. Напомню, что Blynk — это облачный сервис, имеющий iOS- и Android-приложения для управления микроконтроллерами (Arduino, ESP8266, Raspberry и подобные) через интернет. Управлять мы будем встроенным в мой шилд RGB-светодиодом. Для работы с ним есть встроенная утилита expled. В качестве параметра подается значение цвета в формате Hex.

Сначала создадим проект в Blynk. Выбираем из доступных плат Onion Omega.

Затем добавляем виджеты zeRGBa (виджет выбора цвета) и Styled Button. Настраиваем виджет zeRGBa: выбираем виртуальные пины для подключения (я выбрал 15 для красного цвета, 16 для зеленого и 17 для синего) и диапазон для цвета — от 0 до 255. Styled Button мы просто подключаем к виртуальному пину 0.

И теперь самое главное — зайдя в настройки проекта, скопируй или отправь на email свой AUTH TOKEN.

Blynk-проект Omega 2
Blynk-проект

Теперь вернемся к Omega. Откроем Editor, создадим папку Scripts, а в ней файлик main.js c вот таким содержимым:

Разберемся, что происходит.

Вначале подключаются необходимые модули. В exec заносится функция вызова утилиты из консоли, в rgbHex — функция конвертации цвета из RGB в Hex, а в blynk — подключение к нашему Blynk-проекту.

Затем объявляются виртуальные пины: 15, 16 и 17 для получения RGB, 0 для обработки кнопки. В три переменные, R, G и B, будут заноситься значения соответствующих составляющих цвета.

А затем описывается, что происходит при отправке данных на каждый виртуальный пин. Функции для трех цветовых составляющих идентичны, отличается лишь переменная, в которую записывается число. Когда пользователь нажимает на кнопку — вызывается функция expled, а в качестве параметра поступает шестнадцатеричное значение цвета.

Выводим сообщения на экран

Хотя уже достаточно давно появилась возможность прослушивать входящие сообщения, например с помощью Siri или Алисы, прочитать сообщение все же для многих быстрее. Хорошо, если ты докупил шилд с экраном, а если нет? Будем выкручиваться! На помощь нам приходит один из самых распространенных модулей для Arduino — I2C LCD Display.

Поскольку с Node.js мы уже работали, этот проект напишем на Python. Для установки достаточно ввести уже привычное opkg install python. Очень часто можно встретить предложение установить так называемый python-light — легкую сборку. Да, можно установить и третью версию питона, но часть библиотек для работы непосредственно с Omega 2+ не устанавливается на нее. Так что будем работать с версией 2.7.

Не забываем установить привычный любому разработчику на Python менеджер пакетов pip: opkg install python-pip, а также все, что необходимо для работы с I2C: opkg install git git-http pyOnionI2C.

Итак, пускай на экран выводится все, что приходит в наш телеграм-бот (благо, несмотря на обещанную блокировку, он продолжает работать).

Устанавливаем PyTelegramBotApi с помощью pip, скачиваем с официального сайта Omega 2 библиотеку git clone https://bitbucket.org/fires/fireonion_i2c_lcd. Подключаем пины на мониторе к соответствующим пинам на плате.

Все очень просто: подключаем необходимые библиотеки, когда приходит сообщение — выводим его на экран вместе с именем отправителя.

Заключение, размышления и выводы

Omega 2 действительно неплохое устройство, но, как и у любого Linux-based устройства, у него есть недостатки.

Во-первых, хорошо работают лишь устройства, подключаемые через модули, запустить внешний OLED-экран через I2C у меня так и не получилось. Во-вторых, несмотря на достаточно обширную документацию аж на трех языках, все какое-то еще сырое. Периодически приходится устанавливать другие библиотеки, рыться на форумах. Кроме того, изначально цена платы колебалась около 5 долларов, а сейчас, чтобы начать работать с платой Omega 2, придется выложить минимум 20,75 доллара, что с учетом курса уже дороговато.

Для чего же хороша эта плата? Для небольших домашних проектов, когда не хочется паять и проще купить модуль, — определенно да. Набор языков программирования, привычный интерфейс командной строки. В качестве небольшого сервера в том случае, если мощностей Omega 2 хватает, — нет смысла покупать более дорогую Raspberry Pi.

РЕКОМЕНДУЕМ: Обзор, установка и программирование на ESP32

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. abm

    Позновательно. Спасибо!

  2. Александр

    Автор статьи, исправьте пожалуйста ошибку в 8-м пункте.
    С block detect > /etc/config/fstab на block detect > /etc/config/fstab

Добавить комментарий