piątek, 4 października 2019

ZERYNTH - Hello World

ZERYNTH to platforma implementująca język PYTHON we wspieranych przez projekt MCU. Umożliwia m.in proste podłączenie MCU do chmury i proste oprogramowanie tego w języku PYTHON. Na projekt ten wpadłem kompletnie przypadkiem ale zainteresował mnie i postanowiłem chwilę się jemu przypatrzeć. W szczególności , że projekt wspiera MCU firmy Microchip obecnie na razie tylko ATSAM-y ale jak mi powiedział twórca projektu na początku 2020 r wspierana będzie seria PIC32. Projekt jest cały czas rozwijany i dodawane są nowe MCU. Moim zdaniem rzecz jest ciekawa i warta zapoznania się z nią. A zaskakujące w tym wszystkim jest to, że to naprawdę działa :) . Spróbujmy na początek zasterować wybranym pinem MCU przy pomocy języka PYTHON.

Niestety płytki Microchipa natywnie wspieranej przez Zerynth-a nie posiadam . Chłopaki z Microchipa PL podesłali mi na szybko płytkę Wi-Fi Smart Device Enablement Kit z ATSAML21G18B  Płytka ta co prawda nie jest natywnie wspierana przez Zerynth-a ale była nadzieja , że się uda ją uruchomić. Niestety nie udało się , Zerynth nie wykrył jej ,więc na razie temat odpuściłem. Zatem moje rozważania od strony sprzętu oprę na na tym co posiadam i jest natywnie wspierane przez Zerynth-a czyli na płytce Nodemcu ESP 32.

Najpierw instalacja IDE za pomocą którego będziemy mogli programować nasz MCU w języku PYTHON. Wchodzimy na stronę projektu ZERYNTH i tam znajdujemy scieżkę do ściągnięcia Zerytnh Studio.




Mój system docelowy to LINUX Mint 18.3 i wyżej. Po ściągnięciu spakowanego pliku tworzymy sobie dowolny katalog  i do niego rozpakowywujemy ściągnięty plik. Odpalamy konsolę Linuxa i  wybieramy ścieżkę dostępu do naszego katalogu z rozpakowanym plikiem . U mnie wygląda to jak poniżej :



Następnie wpisujemy w konsoli  ./zerynth, rozpoczyna się proces instalacji . Pojawi się okienko z wyborem instalacji online lub offline. Wybieramy online.
W kolejnym okienku znowu wybór albo Expert Mode albo Install. Wybierzmy Expert Mode i zaptaszkujmy sobie architekturę MCU z jaką chcemy pracować. Ja zaznaczyłem wszystko i już :) Instrukcja instalacji jest tutaj
W chwili pisania artykułu już miałem zainstalowane IDE więc trochę piszę z głowy :) Instalacja jest banalnie prosta i każdy sobie da radę bez problemu.
Przed pierwszym uruchomieniem zostaniemy poproszeni o założenie konta lub jeśli je mamy o zalogowanie się.


Po zalogowaniu otwiera nam się pełny dostęp do Zerynt Studio. Za darmo możemy korzystać łącznie z 10-ciu urządzeń z zainstalowaną maszyną wirtualną, tutaj mamy warunki licencji . Jak chcemy mieć więcej urządzeń to są to bardzo przystępne ceny . Ale na grzyba więcej ,wystarczy 1-2  szt mając na uwadze, że wykorzystamy to jako Gatewaya do chmury dla innych urządzeń poza Zerynthem.
No dobrze środowisko mamy gotowe do pracy teraz pomówmy trochę o sprzęcie. Zerynth wspiera natywnie płytki wyszczególnione tutaj . Jeśli mamy jakąś płytkę , która nie jest wyszczególniona ale jest na niej MCU z rodziny wyszczególnionej w spisie płytek to taką płytkę można przystosować do współpracy. Oczywiście najprościej jest operować na dedykowanych płytkach bo wszystko nam będzie działać bez żadnej dodatkowej ingerencji użytkownika w ustawienia maszyny wirtualnej.

Przed podłączeniem jakiekolwiek płytki koniecznie trzeba przeczytać informację dotyczące wymagań jakie trzeba spełnić w razie problemów w połączeniu przez USB. W przypadku płytki wzorcowej, którą się podpieram jest płytka Nodemcu ESP 32 i tam szukam w/w informacji . Chodzi dokładnie o te informacje :


Wynika z nich , że trzeba dołączyć użytkownika  LINUX do grupy dialout lub uucp . W ustawieniach systemowych Linuxa znajdujemy Użytkownicy i Grupy. Tam klikamy w spis grup przyłączonych do użytkownika , rozwija się spis wszystkich grup dostępnych i ptaszkuje grupy dialout lub uucp. U mnie widok wygląda mniej więcej tak :



Po dołączeniu grup koniecznie uruchamiamy ponownie system PC. Po ponownym uruchomieniu systemu , uruchamiamy Zerynt Studio. U mnie w systemie nie widzę stosownej ikonki do uruchomienia, dlatego wchodzę w katalog z którego instalowałem Zeryntha i tam wydaję polecenie z konsoli ./zerynth (po ustawieniu ścieżki dostępu w konsoli). Będąc w konsoli podłączam płytkę i sprawdzam na wszelki wypadek czy rozpoznawalna jest przez Linuxa. W tym celu wydaję w konsoli polecenie lsusb i otrzymuję w efekcie spis wszystkiego co chodzi po USB w moim systemie i jest podłączone :


W spisie widzimy, że jest coś podłączone o nazwie Cygnal Integrated Product CP210x. Tak się zgłasza nasza płytka Nodemcu ESP32.

Po uruchomieniu Zerynt Studio nasza płytka jest po krótkiej chwili rozpoznana i widoczna po rozwinięciu opcji wyboru Device  :


Klikamy na nazwę naszej płytki. Teraz musimy przejść przez krótki proces rejestracji naszej płytki, jeśli podłączyliśmy ją po raz pierwszy. W tym celu klikamy małą ikonkę "Z" po prawej stronie nazwy z naszą płytką. Widać to na obrazku poniżej :


Wyskoczy nam okienko jak poniżej w którym klikamy opcję "Register"


Po pomyślnej rejestracji płytki , jeszcze raz klikamy w ikonkę "Z" tym razem tworzony jest obraz wirtualnej maszyny (VM) dla naszej płytki. Nie pokażę już tego procesu bo zrobiłem to wcześniej . Po zakończeniu tworzenia VM klikamy ostatni raz w ikonkę "Z" co uruchomi proces przegrania VM do naszego procka. Od tego momentu możemy już programować nasz MCU w języku Python.

Teraz czas na pierwszy program. Tu jednak mała uwaga. Płytka ,którą nabyłem nie pokrywa się w 100% z płytką prezentowaną w dokumentacji Zeryth-a. Problem tkwi w braku powtarzalności płytek wykonanych przez Chińczyka dla różnych serii tego samego modelu płytki. Na mojej płytce brakuje diody LED do wykorzystania przez użytkownika a na płytce wykazywanej w dokumentacji Zerynth-a taka dioda jest i oznaczona jest jako LED0.


No to jak zamigać diodą LED skoro Chińczyk nie ujął jej w moim modelu płytki NodeMCU 32 :). No cóż pierwsze Hello World zobaczyłem na analizatorze stanów logicznych, sterując stanem pinu D23. Napiszmy wreszcie jakiś program. Klikamy zatem Create w lewym panelu , wyskoczy okienko w którym wpisujemy tylko nazwę projektu np. Nodemcu32s_Blink. Głównym plikiem w Pythonie gdzie piszemy program to plik main.py. Treść jaką umieszczę w tym pliku wygląda jak poniżej :


Plik najpierw kompilujemy ikonką Verify a następnie ikonką Uplink wgrywamy program do MCU i maszyny wirtualnej VM


Od tej chwili pin D23 zacznie zmieniać swój stan co ok 1s. A skąd byłem taki mądry i wiedziałem jaką treścią wypełnić plik main.py ? W Zerynth Studio po lewej stronie mamy ikonkę "żaróweczka", po kliknięciu w nią otworzy nam się cała masa przykładów skąd w pierwszym rzucie należy się uczyć. Na stronie Zeryntha jest też podstawowy tutorial języka Python. Pinologię naszej płytki i oznaczenia pinów w postaci jakiej widzi to Zerynth znajdziemy pod ikonką Device Pinmap.



Pierwsze wrażenie ze spotkania z Zerynth-em jest pozytywne wszystko działa bez zastrzeżeń. Platforma umożliwia nam zbliżenie się do języka Python w maksymalnie przyjemny sposób dla hobbysty poruszającego się w świecie MCU. Moim kolejnym krokiem będzie uruchomienie w Zerynth ,modułu WiFi ,znajdującego się na płytce NodeMCU 32S i połączenie się z chmurą bo to najbardziej zachęciło mnie do zapoznania się z tą platformą.



Pozdrawiam
picmajster.blog@gmail.com



Linki :

NodeMCU 32 S
Zerynth


Brak komentarzy:

Prześlij komentarz