Onion Omega2 — это WiFi-плата на базе LEDE (форк OpenWrt) с процессором Mediatek MT7688 MIPS SoC, предназначенная для IoT-проектов, стоимостью от $5. Существует две версии: Omega2 с 64 МБ ОЗУ и 16 МБ флеш-памяти, а также Omega2+ с 128 МБ ОЗУ, 32 МБ флеш-памяти и слотом для micro SD. Для обзора была предоставлена версия Omega2+ вместе с расширительным доком, который позволяет питать плату через USB, добавляет USB-хост, RGB-светодиод, кнопки и доступ к GPIO через разъем типа «мама». В этом кратком руководстве сначала представлены фотографии распаковки, затем описаны шаги по настройке платы, управлению RGB-светодиодом и подключению светодиода к GPIO через макетную плату.
Распаковка Onion Omega2+
Обе платы поставляются в антистатических пакетах.

Сначала рассмотрим плату Onion Omega2+. На верхней стороне расположены чип-антенна и разъем u.FL для внешней антенны, а также основные компоненты, закрытые экраном с информацией, включая FCC ID и MAC-адрес (последние четыре символа выделены жирным, так как они используются для доступа к плате). На нижней стороне находятся два ряда разъемов и слот для micro SD. Также присутствует посадочное место для дополнительного разъема, но его назначение не указано.

Далее рассмотрим док. На нем установлен 2×15-контактный разъем типа «мама» с четкой маркировкой, включая линии питания, GPIO, I2C, UART и USB.

На верхней панели расположена кнопка питания, под углом 45° — кнопка сброса, а также micro USB для питания, USB-порт для подключения накопителей, RGB-светодиод и разъем для установки платы Onion Omega2.

Установка Omega2 в док проста — достаточно убедиться в правильной ориентации.
Onion Omega2+ — не первая плата на Mediatek MT7688, ранее также тестировалась LinkIt Smart 7688 . Omega2+ компактнее, но LinkIt Smart уже оснащена micro USB для питания.
Первоначальная настройка Onion Omega2 и расширительного дока
После поиска в интернете была найдена страница начала работы , но она относится к первой версии платы Onion Omega (2015 года). Позже был обнаружен актуальный Omega2 Wiki , что позволило завершить настройку.
Для доступа к плате использовался компьютер с Ubuntu 16.04, но также подойдут Windows (с Bonjour Service) и Mac OS X.
Zeroconf необходим для работы с платой, если не используется прямой доступ по IP. В Linux он обычно уже установлен. Плата подключается к источнику питания (например, USB-порту компьютера) через micro USB, после чего включается кнопкой питания.

При включении RGB-светодиод на дока и светодиод Omega2+ кратковременно загораются, затем RGB-светодиод гаснет, а светодиод платы мигает несколько секунд. Когда светодиод перестает мигать и горит постоянно, загрузка завершена.
В списке WiFi-сетей появится точка доступа «Omega-XXXX», где XXXX — последние цифры MAC-адреса платы. Для подключения используется пароль: 12345678.
Веб-конфигурация Omega2
После подключения в браузере нужно перейти по адресу http://192.168.3.1 или http://omega-XXXX.local/ для запуска мастера настройки Omega2.
Нажмите Start и введите стандартные учетные данные (логин: root, пароль: onioneer). На следующей странице можно подключить плату к WiFi-роутеру.
Выберите ESSID, введите пароль и нажмите «Configure WiFi».
Мастер предлагает зарегистрировать плату в облаке, но это необязательно. Можно пропустить шаг и перейти к обновлению прошивки. В рамках обзора была предпринята попытка регистрации. Для регистрации требуется указать имя, email и пароль.
Затем нужно ввести имя устройства и описание для подтверждения.
К сожалению, процесс завершился ошибкой (окно с красным крестом не реагировало на нажатия). В облачном сервисе плата отображалась как офлайн. Проблема известна ( подробнее здесь ), разработчики Onion работают над ее решением.
Далее была предпринята попытка обновить прошивку и установить веб-консоль.
Процесс также завершился неудачно — индикатор прогресса не двигался в течение 20 минут. При этом плата получила IP-адрес от DHCP-сервера роутера, поэтому доступ в интернет должен был быть.
Конфигурация через командную строку Omega2
В качестве альтернативы использовался SSH (логин: root, пароль: onioneer):
ssh root@omega-42d7.local
The authenticity of host 'omega-42d7.local (192.168.0.113)' can't be established.
RSA key fingerprint is SHA256:xxxx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'omega-42d7.local' (RSA) to the list of known hosts.
root@omega-42d7.local's password:
BusyBox v1.25.1 () built-in shell (ash)
____ _ ____
/ __ \___ (_)__ ___ / __ \__ _ ___ ___ ____ _
/ /_/ / _ \/ / _ \/ _ \ / /_/ / ' \/ -_) _ `/ _ `/
\____/_//_/_/\___/_//_/ \____/_/_/_/\__/\_, /\_,_/
W H A T W I L L Y O U I N V E N T ? /___/
-----------------------------------------------------
Ω-ware: 0.1.5 b130
-----------------------------------------------------
Версия прошивки Ω-ware: 0.1.5 b130.
Команда wifisetup позволяет сканировать сети и подключаться к роутеру:
root@Omega-42D7:~# wifisetup
Onion Omega Wifi Setup
Select from the following:
1) Scan for Wifi networks
2) Type network info
q) Exit
Selection: 1
Scanning for wifi networks...
Select Wifi network:
1) CNX-TRANSLATION
2) CNX-SOFTWARE
Selection: 1
Network: CNX-TRANSLATION
Authentication type: WPA2PSK
Enter password: xxxxxxxxx
> Restarting wifimanager for changes to take effect
Обновление прошивки через веб-интерфейс не удалось, но можно повторить через командную строку с помощью oupgrade:
root@Omega-42D7:~# oupgrade
> Device Firmware Version: 0.1.5 b130
> Checking latest version online...
> Repo Firmware Version: 0.1.7 b139
> Comparing version numbers
> New firmware version available, need to upgrade device firmware
> Downloading new firmware ...
/usr/bin/oupgrade: local: line 377: not in a function
--2017-01-14 10:16:17-- http://repo.onion.io/omega2/images/omega2p-v0.1.7-b139.bin
Resolving repo.onion.io... 52.89.44.24, 54.149.140.66
Connecting to repo.onion.io|52.89.44.24|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7078055 (6.8M) [application/octet-stream]
Saving to: '/tmp/omega2p-v0.1.7-b139.bin'
/tmp/omega2p-v0.1.7 100%[===================>] 6.75M 1.02MB/s in 9.6s
2017-01-14 10:16:27 (722 KB/s) - '/tmp/omega2p-v0.1.7-b139.bin' saved [7078055/7078055]
> Starting firmware upgrade....
Saving config files...
killall: watchdog: no process killed
Sending TERM to remaining processes ... uhttpd device-client onion-helper udhcpc avahi-daemon mountd ntpd udhcpc
Прошивка загрузилась, система перезагрузилась, и SSH-сессия прервалась. Светодиод платы горел дольше указанных в документации 15 секунд, после чего погас. В таком случае рекомендуется перезапустить плату кнопкой питания на дока.
Светодиод мигал около 2 минут, затем загорелся постоянно, и вход в систему стал возможен:
BusyBox v1.25.1 () built-in shell (ash)
____ _ ____
/ __ \___ (_)__ ___ / __ \__ _ ___ ___ ____ _
/ /_/ / _ \/ / _ \/ _ \ / /_/ / ' \/ -_) _ `/ _ `/
\____/_//_/_/\___/_//_/ \____/_/_/_/\__/\_, /\_,_/
W H A T W I L L Y O U I N V E N T ? /___/
-----------------------------------------------------
Ω-ware: 0.1.7 b139
-----------------------------------------------------
root@Omega-42D7:~#
Прошивка обновилась до версии 0.1.7 b139. Несмотря на проблемы, настройка завершена. В случае критических ошибок можно выполнить сброс к заводским настройкам, удерживая кнопку сброса 10 секунд.
Информация о системе Omega2 LEDE
Основные данные системы:
root@Omega-42D7:~# uname -a
Linux Omega-42D7 4.4.39 #0 Thu Dec 29 17:07:01 2016 mips GNU/Linux
root@Omega-42D7:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 5.3M 5.3M 0 100% /rom
tmpfs 61.3M 92.0K 61.3M 0% /tmp
/dev/mtdblock6 25.1M 760.0K 24.4M 3% /overlay
overlayfs:/overlay 25.1M 760.0K 24.4M 3% /
tmpfs 512.0K 0 512.0K 0% /dev
root@Omega-42D7:~# free -h
total used free shared buffers cached
Mem: 125644 28728 96916 92 3272 9656
-/+ buffers/cache: 15800 109844
Swap: 0 0 0
root@Omega-42D7:~# cat /proc/cpuinfo
system type : MediaTek MT7688 ver:1 eco:2
machine : Onion Omega2+
processor : 0
cpu model : MIPS 24KEc V5.5
BogoMIPS : 385.84
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
Установлено ядро Linux 4.4, доступно 24.4 МБ пользовательского пространства, общий объем памяти — 125664 КБ, процессор — MIPS 24KEc.
Управление RGB-светодиодом на дока (через PWM)
RGB-светодиод подключен к пинам 15, 16 и 17. В документации приведен пример использования скрипта expled для задания цветов в HEX. Попытка включить красный цвет (синий и зеленый отключены):
root@Omega-42D7:~# expled 0xF20000
Setting LEDs to: F20000
Duty: 6 100 100
Segmentation fault
Segmentation fault
Ошибка segfault. Попытка задать розовый цвет:
root@Omega-42D7:~# expled 0xF21133
Setting LEDs to: F21133
Duty: 6 94 80
root@Omega-42D7:~#
Скрипт выполнился, но светодиод не загорелся. Проблема не аппаратная, так как светодиод работает при загрузке. Скрипт expled (расположен в /usr/bin/expled) использует программу « fast-gpio » для прямого доступа к GPIO. Возможно, это еще одна ошибка прошивки.
Управление GPIO Omega2 — пример со светодиодом
Для теста к пину 1 на разъеме был подключен 5В светодиод через резисторы и транзистор (для преобразования 3.3В в 5В).

Вместо fast-gpio использовалась утилита gpioctl , работающая через sysfs.
Сначала пин настроен как выход (dirout):
root@Omega-42D7:~# gpioctl dirout 1
Using gpio pin 1
Затем светодиод включен (dirout-high):
root@Omega-42D7:~# gpioctl dirout-high 1
Using gpio pin 1.
root@Omega-42D7:~# gpioctl get 1
Using gpio pin 1.
Pin 1 is HIGH
Команда get проверяет состояние пина. Светодиод загорелся. Выключение (dirout-low):
root@Omega-42D7:~# gpioctl dirout-low 1
Using gpio pin 1.
Успешно.
Для работы с мультиплексированными пинами (I2C, SPI, UART, PWM, I2S…) можно использовать программу omega2-ctrl . В этом руководстве она не тестировалась.
Onion Omega2 и макетные платы
Многие IoT-платы совместимы с макетными платами, но разъемы Onion Omega2 имеют шаг 2 мм (вместо стандартных 2.5 мм). Для подключения можно использовать провода или приобрести BreadBoard Dock , как показано ниже.
Если дока нет, плату можно запитать от 3.3В, например, через стабилизатор LD1117 или YwRobot MB102 breadboard power supply .
Платы Omega2 пока недоступны в магазине Onion (док стоит $14.99). На Kickstarter Omega2 предлагалась за $5, Omega2+ — за $9. [Обновление: кампания завершена, но платы можно приобрести на Indiegogo по той же цене, включая доставку].
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.