poniedziałek, 12 września 2016

Arduino IoT - podsumowanie cz. 2

Wnioski, uwagi, spostrzeżenia

Hardware

Moduły Arduino zdały egzamin celująco jako baza do nauki programowania współczesnych procesorów. Są dobre, tanie i niebywale przyjazne. A wszelkie problemy jakie można napotkać podczas pracy nad własnymi projektami rozwiązuje błyskawicznie prof. Internet. Idea bootloadera uruchamianego automatycznie z programu kompilującego (Arduino IDE) upraszcza cały proces tworzenia projektu do niezbędnego minimum. I jeszcze znakomita funkcja monitora pozwalająca na błyskawiczną analizę w działaniu napisanego kodu. Na tym poziomie złożoności kodu odpada więc praktycznie potrzeba użycia sprzętowego czy programowego debugera czy innych skomplikowanych narzędzi uruchomieniowych. Kiedyś nie wyobrażałem sobie możliwości uruchamiania płytek elektronicznych bez pomocy oscyloskopu - dziś przy pracy z gotowymi modułami Arduino nie potrzeba nawet sondy logicznej - jeśli coś nie działa wina leży najczęściej w złych połączeniach, które można wyłapać zwykłym miernikiem uniwersalnym lub błędach  programistycznych do znalezienia dzięki monitorowi właśnie.

A więc absolutnie polecam UNO (i tylko UNO) na początek zabawy z procesorami. A potem to już jak to woli - dla bardziej zaawansowanych elektroników miniaturowe NANO, PRO MINI czy MICRO obudowywane innymi modułami i własną elektroniką, dla bardziej programistów  dziesiątki oryginalnych i zgodnych z oryginalnymi modułów Arduino do zastosowania od ręki praktycznie w każdym projekcie.

Słów kilka o gotowych modułach peryferiali współpracujących z płytkami Arduino. Jest ich nieprzebrana masa w całej gamie funkcjonalności i cen. Duża część z nich jest tylko ładną obudową istniejących układów elektronicznych np. LEDa czy wzmacniacza operacyjnego z czujnikiem. Przeznaczona jest dla osób omijających z daleka lutownicę.  Ale spora część modułów rzeczywiście zdejmuje z nas kawał ciężkiej i czasochłonnej roboty i to czasami za śmieszne pieniądze.

Dla mnie najbardziej przydatne okazały się moduły:
- transmisyjne - nadawczo/odbiorcze typu ESP-01 dla wifi  czy  CYxx dla 433 MHz
- zasilające - przetwornice dc-dc step-down i step-up oraz zasilacze

Hardware to także własne płytki drukowane. Na początek wystarczą te uniwersalne (konieczne dwustronne z metalizacją otworów). W dalszej kolejności przychodzi chęć na coś własnego i tu pomocne są firmy oferujące wykonanie takich płytek w przystępnych cenach. Niezbędne do ich zaprojektowania oprogramowanie jest dostępne za free (z pewnymi ograniczeniami).

Ale do takich zabaw potrzebna jest już dobra lutownica - najlepiej z regulacją temperatury. I trochę porządnych narzędzi - ostre ucinaczki, szczypczyki, pinceta (lub pęseta jak chcą puryści), dobre szkło powiększające.
No i przede wszystkim jako taka znajomość podstaw elektroniki - tutaj nie da się już pracować na popularnych w necie schematach typu Fritzing view





bo to schematy dla osób posługujących się płytkami i kabelkami stykowymi. Oczywiście na początek to znakomite ułatwienie i wiele osób pozostaje na tym etapie a nawet ten kierunek jest rozbudowywany o kolejne elementy tu>>>>>>>>
Ale widziałem i takie cudo


 więc bez znajomości czytania i rysowania schematów i znajomości działania podstawowych elektronicznych elementów za daleko się już nie zajedzie.


Praca nad wykonaniem własnych płytek drukowanych to w zasadzie hardwerowy odpowiednik przygotowania własnych bibliotek programowych . Dobrze zaprojektowana i wykonana płytka to dobrze działający projekt a w przyszłości możliwość łatwej i szybkiej adaptacji w kolejnych programach. Nie inaczej jest z przygotowaniem własnych bibliotek - ale o tym dalej

Największym rozczarowaniem okazał się dla mnie temat obudów. W dzisiejszej dobie wszechogarniających wszystko plastyków nie można praktycznie dostać ładnych i niedrogich obudów uniwersalnych do elektroniki. W ofercie wciąż królują obrzydliwe black-boxy z czarnego lichego gatunkowo poli-cośtam. Brrrr - jak w czymś takim umieścić efekty swojego geniuszu elektronicznego!!!! Ale trzeba sobie jakoś radzić - może dżdżownica robić za sznurówkę - można i w firmowej obudowie czujki PIR zgrabnie umieścić gotowy projekt. Trzeba będzie w przyszłości pomyśleć nad ciekawymi niestandardowymi obudowami dla swoich projektów.

Software 

Może to oznaka lenistwa ale wciąż używam standardowego Arduino IDE (a nawet dwóch -cc i -org) zamiast np. Atmel Studio. I całkowicie mi to wystarcza. Rozumiem profesjonalistów języka C że pisanie czegoś poważnego pod tym edytorem/kompilatorem to zabawa w programowanie ale własnie do zabawy w programowanie Arduino uważam ten program za doskonały. Początkowe problemy z kolejnymi wersjami programów i bibliotek okazały się banalnie proste do rozwiązania.

Programy Arduino IDE w wersji org i cc zainstalowałem z plików zip w tym samy katalogu . Mogę każdy z nich uruchamiać i pracować z nim niezależnie od drugiego.  mogę też dodawać kolejne nowsze wersje IDE niezależnie od istniejących starszych. Po co? - by móc kompilować powtórnie archiwalne projekty w IDE w którym zostały stworzone bez obaw że pod nową wersją coś pójdzie nie tak. Dla pewności w kodzie źródłowym programu umieszczam nr IDE pod którym został skompilowany.

Ciekawszą sprawą są biblioteki. Tu zmiany wersji  mogą być dokonywane bardzo często (np. takiego BLYNKa) i mają najczęściej destrukcyjny wpływ na kod programu przygotowany pod wersją wcześniejszą. Trzeba więc bardzo pilnować się jakich wersji bibliotek dotyczy nasz program.
Na szczęście oba programy mają znakomitą funkcjonalność - nie trzeba bibliotek instalować centralnie w programie funkcją "dodaj bibliotekę" aby były one widziane przez kompilator. Wystarczy, że odpowiednie biblioteki znajdują się  w podkatalogu libraries  w tym samym katalogu co podkatalogi z projektami (.ino)


Dzięki takiemu rozwiązaniu w nowych projektach do podkatalogu libraries ładuję najnowsze dostępne biblioteki odpowiednio modyfikując tylko ten projekt. Wcześniejsze projekty jeśli nie chcę ich dostosowywać do nowszych bibliotek mogą ( i najczęściej są) kompilowane łącznie ze starszymi wersjami bibliotek z którymi zostały pierwotnie uruchomione. Bardzo przydatna funkcja.

Jezyk C

Nie ma co ukrywać - to mój najsłabszy element całej układanki. Używanie Arduino IDE ma również swoje negatywne konsekwencje. Toporny C w moich programach nie jest wspomagany przez rozbudowaną strukturę podpowiedzi i ułatwień dostępnych dla programisty w Atmel Studio. Efekty widać gołym okiem - większa część kodu w projektach zaistniała tam tylko dzięki funkcjom CTRL_C/V najczęściej bez zrozumienia POCO. Dotyczy to szczególnie złożonych struktur, obiektów i funkcji tak popularnych w większości bibliotek. O pisaniu własnych bibliotek ułatwiających pracę nad nowymi projektami nie mam jeszcze co marzyć. To śpiewka odległej przyszłości. Tak więc klocek elektroniczny procesorowej układanki (własne płytki) daleko wyprzedził u mnie swój softwerowy odpowiednik (własne biblioteki).


Wizualizacja i sterowanie pracą systemu procesorowego

Wydzieliłem tą część projektu choć do niedawna był to twardy element systemów procesorowych. Bo czasy się zmieniły  na tyle, że według mnie nie ma już żadnego (poza przyzwyczajeniem) powodu i uzasadnienia by całkowicie nie zrezygnować z hardware na rzecz software w kontakcie procesora z człowiekiem.

A wiec wszystkie zadajniki sygnałów typu przyciski, potencjometry, przełączniki jak i elementy wizualizacyjne (lampki, LEDy, wyświetlacze LED i ciekłokrystaliczne a nawet dedykowane monitory) u mnie wędrują do KOSZA.

Co w zamian - OCZYWIŚCIE BLYNK lub programy jemu podobne dostępne za free lub za niewielką opłatą. Programy te instalowane najczęściej w komórkach czy tabletach całkowicie zastępują tradycyjne realne elementy i urządzenia.


I są dostępne z każdego miejsca na ziemi gdzie dociera Internet. O ile mamy przy sobie swoją komórkę
W moich projektach tu i ówdzie poniewierają się jeszcze pojedyncze LEDy- ot tak by na pierwszy rzut oka zobaczyć czy układ żyw jeszcze. Ale wszystkie bardziej skomplikowane elementy komunikacyjne JA < > PROCESOR przenoszę do komórki. I jak na razie nie znajduję uzasadnienia by zmieniać ten kierunek ewolucji.

Na dobrą sprawę jest to powtórzenie drogi jaką przebyła elektronika klasyczna (składająca się z elementów dyskretnych) do elektroniki procesorowej. Tu też nastąpiła rewolucyjna zamiana wielu pojedynczych elementów elektronicznych na jeden uklad z wewnętrznym swobodnie tworzonym oprogramowaniem funkcjonalnie zastępujących działanie urządzenia zbudowanego z tranzystorów oporników i kondensatorów. Komórka i oprogramowanie typu BLYNK to kolejny krok w wirtualizacji wszystkiego co tylko możliwe.

I tyle podsumowania

czas na ciąg dalszy zabaw procesorowymi klockami lego ...................

Brak komentarzy:

Publikowanie komentarza