czwartek, 15 sierpnia 2019

ZERYNTH - ciekawa koncepcja zastosowania języka Python w obszarze IoT.



Natknąłem się niedawno na ciekawy koncept przeniesienia percepcji programowania MCU 32 bitowych na pułap języka wysokopoziomowego jakim jest Python. Temat mnie zainteresował bo widzę przyszłość dla takiego podejścia. O ile  na rynku są już jakieś lepsze lub gorsze próby implementacji Pythona np. w świecie embedded to ZERYNTH na tym tle wyróżnia się pozytywnie pod każdym względem. Przy czym nie tracimy tutaj możliwości korzystania z języka C . ZERYNTH umożliwia zgrabne łączenie Pythona z C. Wprowadzenie abstrakcji języka wysokopoziomowego jakim jest Python w świat MCU daje wbrew pozorom sporo korzyści. Jedną z nich jest przejrzysty i łatwy w utrzymaniu kod. Świat Pythona sprawia , że sporo rzeczy można zaimplementować małymi zasobami czasu i w sposób bardzo prosty a jednocześnie mamy do dyspozycji przyjazny język wspierający różne paradygmaty programowania, w tym obiektowość. Ponieważ Python rokuje być językiem wiodącym w przyszłym świecie autonomicznych  urządzeń a w szczególności pojazdów autonomicznych , dlatego w/g mnie warto śledzić nowe technologie związane z tym językiem.

ZERYNTH to pakiet narzędzi umożliwiających programowanie popularnych MCU 32-bitowych i podłączanie ich do  systemów działających w chmurze, co pozwala na szybkie wdrażanie technologii IoT. Pakiet oprogramowania to m.in bezpłatne, wieloplatformowe środowisko programistyczne działające w systemach Windows, Linux i Mac OS X.

Zestaw narzędzi obejmuje kompilator, debugger oraz zaawansowany edytor kodu, a także samouczki i przykładowe projekty. Umożliwia  używanie języka Python lub hybrydy języków C/Python. Dodatkowo otrzymujemy RTOS z wielowątkowością obsługiwany z poziomu języka Python. Mamy dostępne z poziomu Pythona zasoby sprzętowe MCU takie jak przerwania, timery, SPI, UART, I2C , I/O. Obsługa zasobów jest bajecznie prosta za pomocą Pythona.


Dla mnie cenną rzeczą jest fakt , że mogę w ten przyjemny sposób poprzez obcowanie z MCU nauczyć się programować w Pythonie. A o Pythonie coraz częściej się słyszy w kontekście sieci neuronowych , przetwarzania Big Data,  zaawansowane obliczenia matematyczne .etc. Bo do takich zadań ten uniwersalny język nadaje się doskonale i warto go znać. Mój znajomy robił niedawno pracę magisterską opartą o bibliotekę Pythona dla sieci neuronowych. Zadaniem było wytrenowanie sieci neuronowej tak aby po pokazaniu jej zdjęcia dowolnego modelu pojazdu sieć określiła jego markę. Zadanie się powiodło. Znajomy dostał bardzo szybko pracę i dobrze płatną w telekomunikacji , gdzie zajmuje się przetwarzaniem danych i modelowaniem sieci neuronowych.

Warto wspomnieć, że w pakiecie dostajemy również aplikację mobilną, którą możemy wykorzystać np. do sterowania urządzeniami podłączonymi do chmury.
I ta opcja jak dla mnie bardzo cenna. Bo w sumie ZERYNTH jest kompleksowym podejściem do tworzenia świata IoT.

ZERYNTH współpracuje z większością popularnych obecnie chmur i jest przemyślany pod kątem zastosowań IoT.  Łatwość podłączenia do chmury to duża zaleta tej technologii. Za pomocą ZERYNTH utworzymy również w bardzo prosty sposób lokalny serwer . Można tu zrealizować wiele ciekawych pomysłów w sposób prosty.

W/g mojego zamysłu ZERYNTH nadałby się doskonale do stworzenia Gateway-a , pośredniczącego pomiędzy wieloma urządzeniami lokalnymi a chmurą. I pod kątem takiego wykorzystania będę tę technologię poznawał. Zachęcam do zapoznania się ze stroną ZERYNTH bo tam jest  wszystko w przejrzysty sposób przedstawione . 

Sama idea ZERYNTH polega na wgraniu do MCU 32 bitowego maszyny wirtualnej VM, która przejmuje kontrolę nad MCU i umożliwia rozmowę za pomocą języka Python. Wgrany wsad zajmuje ok 60-80 kB Flash-a . Listę natywnie wspieranych MCU i płytek znajdziemy tutaj. Widzimy, że produkty Microchipa również są wspierane. Ta baza się sukcesywnie powiększa. Napisałem do firmy ZERYNTH aby dołączyli do tej listy coś z rodziny PIC32 i w szczególności aby był to PIC32MM. Bo on idealnie się nadaje do konceptu ZERYNTH-a m.in mamy tutaj do dyspozycji 256 kB i USB. W odpowiedzi otrzymałem informację od Luigi F. Cerfeda, że PIC32 będą wspiera od Q1 2020 r , więc chłopaki mają to w planach co mnie ucieszyło.

Soft wgrywamy za pomocą USB ale z tego co się zorientowałem jest możliwość wgrania za pomocą JTAG/SWD a to powoduje , że możemy korzystać z ZERYNTH-a w płytkach własnej konstrukcji ale opartych na wspieranych przez ZERYNTH modelach MCU. Defakto jest to jakieś delikatne ograniczenie co do portfolio MCU jakie możemy wykorzystać. Ale projekt się rozwija dynamicznie i ilość obsługiwanych MCU będzie się zapewne powiększać.

Ponieważ pierwsze podejście chcę zrobić na płytce developerskiej natywnie wspieranej przez ZERYNTH-a a płytek Microchipa dedykowanych tutaj nie posiadam, to wyjątkowo na czas pierwszej randki z technologią posłużę się tanią płytką mocno chińską NodeMCU ESP-32S, którą dzisiaj zamówiłem. Nie jestem pewien czy dostanę dokładnie model płytki wspieranej przez ZERYNTH-a , bo jak napisał sklep w którym zamówiłem płytkę, co nowa dostawa to chińczyk co innego przysyła :).

Zatem czekam na płytkę aby móc coś podziałać w ZERYNTH. W międzyczasie w przyszłym tygodniu czeka mnie operacja przepukliny co przypomniało mi o ułomności i marności naszego bytu .Nie wiem kiedy będę mógł usiąść ponownie przed kompem , mam nadzieję, że szybko i szybko powrócę do kontynuowania tego ciekawego w/g mnie tematu.

Z ostatniej chwili wiadomość . Dzięki uprzejmości polskim inżynierom z oddziału Microchipa w naszym kraju. Będę miał możliwość przetestowania ZERYNTH-a na tym sprytnym zestawie Wi-Fi Smart Device Enablement Kit firmy Microchip. Jest to nowa płytka w ofercie Microchipa. Pomimo, że natywnie ten model płytki nie jest jeszcze wspierany przez ZERYNTHA , ale jeśli sam chip jest wspierany a tutaj mamy ATSAML21, to dla takiej płytki da się zaimplementować i skonfigurować maszynę wirtualną ZERYNTHA. Ojejku nie mogę się doczekać kiedy zacznę się tym bawić.


Na razie lecę na operację do usłyszenia :)

 



Pozdrawiam
picmajster.blog@gmail.com

Linki :

ZERYNTH - strona projektu

Brak komentarzy:

Prześlij komentarz