Onion Omega2 — płytka dla IoT

W moje ręce trafiła kolejna płytka służąca do budowania rozwiązań Internetu Rzeczy Onion Omega2, która posiada wbudowany moduł wifi oraz złącza GPIO. Kupiłem ją przede wszystkim bo zainteresowała mnie informacja, że płytka pracuje pod lekkim systemem Open-WRT i przyznam, że tym mnie zachęciła do zakupu. Cebula (z angielskiego Onion) jest udanym projektem crowdfundingowym a jego twórcy wykorzystali do tego platformę kickstarter.

Specyfikacja Onion Omega2


  • Procesor: 580 MHz Mediatek MT7688
  • Pamięć RAM: 64 MB
  • Pamięć Flash: 16 MB
  • Moduł WiFi b/g/n
  • Ilość GPIO: 15
  • Rozstaw pinów: 2mm
  • Interfejsy: 2x PWM, 2x UART, 1x I2C, 1x SPI, 1x I2S
  • Zasilanie i logika: 3,3V

Urządzenie może nie posiada zbyt ciekawych podzespołów jeśli chodzi o procesor i pamięć w porównaniu do np. Raspberry Pi Zero ale ma swój urok bo czy duża wydajność jest potrzebna do rozwiązania IoT, które mają za zadanie zbierać informacje i pozwalać na sterowanie modułami i układami?. Urządzenie na pinach GPIO (oprócz 15 pinów IO) umożliwia dodatkowo podłączenie portu USB 2.0 oraz karty sieciowej 100Mbit za pomocą gotowych modułów oferowanych przez producenta lub własnych. Cena modułu Onion Omega2 to koszt 5$ zaś jego mocniejszej wersja oznaczona "Plus", która posiada 128MB ram i 32MB Flash oraz dodatkowo złącze kart MicroSD kosztuje już 9$. Odpowiednio w polskim sklepie moduły kosztują 49zł i 79zł. Największą bolączką w płytce jest użycie przez producentów rozstawu pinów GPIO z rastrem 2mm przez co jesteśmy zmuszeni albo zrobić sobie sami przejściówkę na raster 2,54 taki jak używa się np w RPi czy Arduino lub oczywiście dokupić jeden z gotowych rozszerzeń do cebuli, które jak się nie trudno domyśleć są droższe od podstawowych modułów. Ceny rozszerzeń zaczynają się od 10$.

Rozszerzenia i moduły


  • Breadboard Dock (10$) - Posiada wyprowadzenia na raster 2.54 do płytki uniwersalnej, złącze microUSB tylko do zasilania i przycisk reset.
  • Expansion Dock (15$) - Posiada wyprowadzenie pinów GPIO na listwie żeńskiej 2.54mm 2x 30, port USB, Włącznik zasilania, przycisk reset, złącze microUSB do zasilania i komunikacji oraz diodę RGB.
  • Power Dock (15$) - Posiada wszystko to samo co Expansion Dock poza diodą RGB oraz dodatkowo moduł zasilający z baterii 3.7V LiPo.
  • Mini Dock (15$) - Posiada port USBm, miniUSB do zasiania i komunikacji, przycisk reset oraz włącznik.
  • Arduino Dock (20$) - płytka posiadająca po prostu układ Arduino UNO ze standardowymi dla niego złączami, wyprowadzenia pinów GPIO, port USB, microUSB do zasilania i komunikacji oraz przycisk reset.

Oprócz rozszerzeń producent przygotował też dodatkowe moduły tj. kontroler sieciowy (15$), dwóch przekaźników (15$), 16 złącz PWM (15$), ekranu OLED (15$), płytki prototypowej (5$) oraz modułu GPS na USB (24.99$).

Jak widać większość modułów można łączyć ze sobą w tak zwaną kanapkę ;)
Dobranie nawet podstawowych portów jest sporym wydatkiem i widać, że producent liczy na zarobek właśnie na rozszerzeniach oraz pokazuje to, że projekt jest dedykowany głównie dla osób zaczynających zabawę z elektroniką bo nie każdy był by w stanie samemu stworzyć płytki rozszerzające.

Oprogramowanie i biblioteki

Producent dostarczył biblioteki do sterowania GPIO oraz w/w modułami dla języków C, Python oraz Javascript (NodeJS). Dodatkowo przygotował pakiety do instalacji dla w/w języków oraz PHP wraz z serwerem do serwowania stron www.
Żeby nie było za mało udostępnił też narzędzia cli do sterowania GPIO, dzięki czemu z poziomu systemu w konsoli możemy wydawać polecenia, sterować i odczytywać stany pinów:


  • gpioctl
  • omega2-ctrl
  • fast-gpio

Najbardziej ciekawym narzędziem jest fast-gpio, za pomocą którego możemy odczytywać i ustawiać stany pinów, kierunek (input, output) oraz sterować pinami PWM


 fast-gpio set-input <gpio>
 fast-gpio set-output <gpio>
 fast-gpio get-direction <gpio>
 fast-gpio read <gpio>
 fast-gpio set <gpio> <value: 0 or 1>
 fast-gpio pwm <gpio> <freq in Hz> <duty cycle percentage>

omega2-ctrl natomiast pozwala odczytywać i zmieniać funkcje pinów.

omega2-ctrl gpiomux set <HARDWARE PIN GROUP> <MODE>

Mało miejsca na dane i aplikacje

Wersja, którą posiadam ma tylko 16MB na dane w tym pliki systemowe, dlatego chcąc zainstalować trochę potrzebnego oprogramowania musimy użyć jakiejkolwiek pamięci na usb (wersja Plus posiada dodatkowo złącze kart pamięci, które można do tego użyć).
Opis jak rozszerzyć pamięć dysku a w rzeczywistość montować katalog /overlay z zewnętrznej pamięci opisany jest w dokumentacji.

Wifi

Wbudowany moduł wifi w obecnej chwili ma problemy z łączeniem się do Routerów Asusa oraz Mikrotika. Póki co producenci cebuli nie potrafią poradzić sobie z tym problemem i nie odpisują w tym temacie użytkownikom od 3 miesięcy co wygląda słabo. Tak się składa, że akurat w domu posiadam Mikrotika RB2011UiAS-2HnD-IN i przewertowałem wszystkie podpowiedzi na forum cebuli i nie udało mi się połączyć jej do mojej domowej sieci. Bez problemu połączyłem się np. do sieci udostępnionej z telefonu. Ciężko mi jest na chwilę obecną powiedzieć co jest przyczyną ale obstawiam, że jest to jakiś problem z konfiguracją lub firmwarem wbudowanej karty Wifi. Sama cebula ustawiona jest w trybie AP i można się z nią połączyć z komputera lub innego urządzenia. Cebula posiada wbudowaną antenę wifi ale również złączę do podłączenia zewnętrznej anteny.

Pierwsze uruchomienie

Jak wspomniałem wyżej po podłączeniu cebuli do prądu jest widoczna sieć Omega-XXXX (gdzie XXXX oznacza ostatnie znaki adresu mac karty sieciowej wifi) a hasło do niej to 12345678.

Po połączeniu do do sieci wystarczy wpisać w przeglądarce adres 192.168.3.1 (lub Omega-XXXX.local) i przeprowadzić wstępną konfigurację. Przed samą konfiguracją musimy się zalogować podając dane:

login: root
hasło: onioneer

W kolejnym etapie musimy podać dane do naszej sieci domowej wybierając sieć z listy i podając hasło do niej. Jeśli połączenie się uda przejdziemy do kolejnej zakładki, gdzie możemy skonfigurować dostęp do usługi Onion Cloud (dostęp również do API), za pomocą której możemy mieć zdalny dostęp do naszej cebuli (ten etap możemy pominąć).

W kolejnym etapie możemy zainstalować aplikację konsola dzięki czemu będziemy mogli w przeglądarce sterować naszą cebulą. Opcjonalnie jeśli zostanie wykryta stara wersja firmware-u pokaże się przycisk aktualizacji.

Jeśli wszystko przebiegnie dobrze otrzymamy informację o zakończeniu instalacji.

Warto poczekać kilkanaście sekund bo w tle jest instalowane oprogramowanie. Po pewnej chwili gdy odświeżymy stronę będziemy mieli już dostęp do aplikacji konsola gdzie możliwe jest sterowanie naszą cebulą.

Od tej chwili możecie po sprawdzeniu na routerze jaki adres otrzymała cebula z waszego routera łączyć się z waszej sieci domowej do niej. Webowa aplikacja pozwala na sterowanie niektórymi modułami, instalowania dodatkowego oprogramowania, konfiguracji cebuli itd.

Sporo informacji o instalacji, konfiguracji i przykładowych projektach znajdziecie na wiki projektu.

SSH

Dla bardziej zaawansowanych użytkowników i nie lubiących ograniczeń polecam pominięcie konfiguracji poprzez przeglądarkę i zalogowanie się od razu do cebuli za pomocą ssh. Dostępne są różne narzędzia m.in. do konfiguracji wifi (skrypt wifisetup) i inne znane z OpenWRT. Możliwa jest instalacja pakietów i programów linuksowych za pomocą instalatora pakietów opkg. W pierwszej kolejności skonfigurować należy dostęp do naszej sieci za pomocą wifisetup.
Następnie warto sprawdzić czy mamy aktualny system. Do tego służy polecenie oupgrade, które sprawdza czy jest nowa wersja i instaluje ją.
Po tym zabiegu możemy rozszerzyć dostępne miejsce na dane i instalować co nam repozytorium daje. Ale zanim zaczniemy cokolwiek instalować musimy odświeżyć repozytoria

opkg update

i instalować co potrzebujemy. Listę dostępnych pakietów możemy sprawdzić za pomocą polecenia

opkg list

Pliki konfiguracyjne znajdziemy w katalogu /etc/config gdzie możemy sami zmienić konfigurację sieci i usług.

Sporo informacji i przykładów o Onion Omega2 znaleźć można w przewodniku, gdzie znajdziemy m.in. opis instalacji i konfiguracji pythona, nodejs, php, C, sterowania pinami GPIO i modułami producenta

.

Trzeba przyznać, że producent postarał się bardziej i dostarczył sporo dokumentacji i materiałów dla użytkowników, ale również nie postarał się o dostateczne wsparcie jeśli chodzi o problemy z niektórymi routerami. Liczę na to, że projekt będzie się rozwijać i producent postara się naprawić niedociągnięcia i problemy użytkowników. Na pewno jeszcze napiszę coś o cebuli bo jest wg mnie fajną alternatywą dla innych płytek i zaprezentuję ją w akcji.