piątek, 30 września 2016

Własny program - co zrobić gdy brakuje klocka LEGO?

Nie ma łatwo

Udostępnianie gotowych projektów innym wiąże się z koniecznością dopasowania niektórych parametrów do nowego użytkownika. Widać to szczególnie boleśnie w aplikacji BLYNK, która musi mieć połączenie WiFi z Internetem. Wpisanie własnych ustawień dostępu  do sieci WiFi nie zda się na nic, a pozyskiwanie tych danych od klienta nie zawsze jest możliwe czy celowe. Najlepiej by klient sam mógł je zmienić według własnych potrzeb. Tylko jak ma to zrobić bez możliwości ingerencji w oprogramowanie? Najlepiej by nowe dane logowania do sieci wprowadzone w jakiś sposób do urządzenia zostały trwale zapisane w pamięci. Podczas restaru program powinien wiedzieć, że ma użyć nowych danych do logowania w sieci WiFi.

Przeszukania Internetu by odnaleźć kawałek potrzebnego do tego kodu trwały dni kilka i przyniosły mizerne efekty. Jest co prawda bardzo dobry  program (biblioteka) o nazwie WiFiManager autorstwa tazapu tu>>>>>> rozwiązująca ten problem kompleksowo ale .....jedynie dla modułu ESP8266. Dla Arduino połączonego z ESP taka biblioteka czy rozwiązanie chyba nie istnieje.

Nadeszła więc chwila prawdy - czy można coś takiego napisać samemu przy moim poziomie umiejętności (a raczej poziomie niewiedzy) w programowaniu językiem C.

Spróbujemy
Na początek założenia.
  1. Nowe parametry logowania do sieci (nazwa punktu dostępowego tzw SSID i hasło do routera) musi mieć możliwość wprowadzenia sam klient i to najlepiej bez dodatkowej pomocy poza instrukcją obsługi.
  2. Moduł nie ma innych elementów do komunikacji człowiek <> procesor poza aplikacją BLYNK. Żadnych dodatkowych klawiatur wyświetlaczy LED czy LCD - no może jedynie  diodę LED
  3.  Wpisanie nowych danych nie może wiązać się ze zmianą oprogramowania - to oczywiste - klient nie ma ochoty na uczenie się programowania w C
  4. Najlepiej by klient nie był zmuszany do otwierania obudowy by wprowadzić nowe ustawienia
Z punktu 1 i 2 wynika, że jedynym narzędziem możliwym do wprowadzenia nowych danych jest  widget TERMINAL w aplikacji BLYNK umożliwiający dwustronną komunikację. Trzeba "tylko" zapewnić jakiekolwiek chwilowe połączenie modułu z Internetem  na moment wprowadzania danych. Choć wydaje się to kwadraturą koła (żeby wpisać nowe dane klient musi mieć połączenie z internetem, ażeby się z tym internetem połączyć te dane muszą już być wpisane) to sprawa jest dość prosta do rozwiązania. Jak?

Należy z dużą dozą pewności założyć, że klient posługuje się już nowoczesnym telefonem, smartfonem czy tabletem. Nie może być inaczej jeśli chce korzystać z urządzenia za pomocą aplikacji BLYNK. Oznacza to, ze ma on w zasięgu ręki (w swoim telefonie) narzędzie nazywające się HOTSPOT (osobisty lub mobilny). Za pomocą tej funkcji można udostępnić Internet z telefonu innym urządzeniom. Co więcej parametry HOTSPOT (nazwa i hasło) są łatwo definowane przez użytkownika. Jeśli klient ma w instrukcji obsługi nazwę i hasło na jakie oczekuje moduł by zalogować się do sieci - dane te trzeba ustawić na chwilę w parametrach swojego telefonicznego HOTSPOTa. I włączyć urządzenie które automatycznie powinno nawiązać komunikację z Internetem via telefon.
No więc połączenie z Internetem na moment konfiguracji już mamy

Teraz sama konfiguracja.

  1. Użytkownik ustawia przełącznik pracy modułu w  pozycję SET i załącza moduł. U mnie przełącznik dołączony jest do portu nr 8 NANO.
  2. Dane logowania do nowej sieci wprowadzane są aplikacją BLYNK a konkretnie widgetem TERMINAL (rozpoczynamy procedurę przciskiem SETUP)
  3. Dane po wprowadzeniu w polu "Type here" i naciśnięciu ENTER wysyłane są z aplikacji do modułu
  4. Po zatwierdzeniu danych przyciskiem OK następuje zapisanie danych w w pamięci nieulotnej typu EEPROM modulu
  5. możemy sprawdzić jakie dane pamięta moduł - przycisk DOM wyświetla domyślne parametry logowania do HOTSPOT, przycisk TWOJ wyświetla parametry wprowadzone przez użytkownika. Przycisk READ jest bez znaczenia - tylko do testów
  6. Wyłączamy urządzenie i przestawiamy przełącznik w pozycję PRACA
  7. Po ponownym załączeniu urządzenia powinno się automatycznie zalogować do nowej sieci o ile parametry sieci zostały prawidłowo wpisane a sieć jest dostępna (moduł obsługuje szyfrowanie WPA2-PSK). Jeśli nie - trzeba wrócić do punktu 1

Do ustawienia/zmiany danych sieci do logowania posłuży specjalnie stworzony ekran konfiguracji parametrów sieci w aplikacji BLYNK np taki:





W teorii wygląda to dosyć prosto ale napisanie od podstaw działającego kodu tj nauka, pisanie i testowanie całości zabrało mi bite trzy dni z życia.

Kod nie wygląda na mocno skomplikowany:


Kluczem było zrozumienie działania funkcji zamiany typu string na char[] a w zasadzie odkrycie konieczności jej użycia

( y_auth.toCharArray(t_auth, dl_i); //change string to char[]) 

i właściwe zadeklarowanie tablic w linii 12-14. 

Oczywiście  wcześniej wypróbowałem dziesiątki innych wariantów - ale tylko ten dał w miarę oczekiwany i przewidywalny wynik.
No i jeszcze problemy z zapisem do EEPROM - ale o tym przy innej okazji
 
Za plus tego rozwiązania uznaję brak konieczności stosowania wskaźników, struktur, pointerów indeksów i innych zaklęć tak ulubionych przez zawodowych programistów.
Fragment wspomnianego tu programu WiFiManager wygląda mniej więcej tak:

const char* WiFiManagerParameter::getValue() {return _value;}
const char* WiFiManagerParameter::getID() {return _id;}
  server->on("/", std::bind(&WiFiManager::handleRoot, this));
  server->on("/wifi", std::bind(&WiFiManager::handleWifi, this, true));
server->on("/0wifi", std::bind(&WiFiManager::handleWifi, this, false));


I tak przez całe  750 linii!!!!!

A więc jestem o trzy dni starszy i o gram wiedzy mądrzejszy - tylko wciąż pozostaje otwarte pytanie czy warto????

 Nie opisuję programu dokładnie bo to wersja testowa - ale działa!

To tyle. Idę odpocząć bo obawiam się czy cdn ..............



piątek, 16 września 2016

Arduino i ESP8266 w projekcie Home IoT (inteligentnego domu)

Wnioski z działania

Dotychczasowe funkcjonowanie "centrum zarządzania" inteligentnym domem jest więcej niż bardzo dobre.


Praktycznie nie obserwuję jakichkolwiek resetów systemu a wszystkie funkcje (sterowanie cyrkulacją ciepłej wody, sterowanie gniazdami ELRO 433 MHz,sterowanie bramą garażową) działają bezproblemowo. Dodatkowo, po zamontowaniu całości w obudowie czujki PIR całość prezentuje się  naprawdę dobrze. Obudowę pozostawię nie zamkniętą gdyż istotne elementy systemu (NANO, ESP-01, nadajnik i odbiornik 433 MHz) zamontowane są w przejściówkach z goldpinami (jest to układ bądź co bądź testowy) przez co cała konstrukcja jest wyższa niż głębokość obudowy.
Równie ważne jest to że układ praktycznie nie nagrzewa się pomimo zasilania z zasilacza 12 V i konieczności zejścia z napięciem do poziomu 5 i 3,3 V. A to dzięki wysokosprawnej miniaturowej przetwornicy DC DC 12/5 V zamontowanej pod spodem płytki drukowanej. Więcej ciepła wydziela stabilizator 5/3,3V mimo że spadek napięcia na nim to tylko 1,7V i zasila jedynie układ ESP-01. Te chińskie mini przetwornice to naprawdę świetne rozwiązanie do zasilań elektroniki.

O aplikacji BLYNK pisałem już wielokrotnie - bez niej cała ta zabawa w Inteligentny dom nie miałaby większego sensu. Sam nigdy nie napisałbym programu wizualizacyjnego podobnej klasy nie mówiąc już o stworzeniu skutecznego i bezbłędnie działającego łącza internetowego pomiędzy procesorem a aplikacją w telefonie. Chłopaki z BLYNKa wciąż rozbudowują system dodając nowe widgety i funkcjonalności ale nawet to co już jest stanowi rewolucję dla rynku DIY. Trzymam kciuki by ich projekt się powiódł i by zarobili tyle by nie musieć sprzedać się wielkim tego świata. Zobaczymy......

Największa rewolucja od początku tworzenia projektu IoT nastąpiła w oprogramowaniu procesora. Kod programu jest najszybciej zmieniającym elementem w całej zabawie. To zrozumiała bo właśnie w tym zakresie mam najwięcej do nadrobienia. I jakkolwiek kopiowanie fragmentów kodu z innych obcych programów jest podstawowym sposobem jego powstawania  to udaje się mi już z sukcesem tworzyć własne fragmenty działające mniej więcej tak jak tego oczekuję. Najważniejsze jest to, iż program w połączeniu z procesorami (NANO i ESP-01) tworzy w miarę niezawodny system bez zawieszania się czy dziwnych nie planowanych zachowań. To jest nawet ważniejsze niż różnorodność czy elegancja tworzonych funkcji. System na którym w 100% nie można polegać gdy chodzi o ciągłość pracy nie nadaje się praktycznie do stosowania. Świadomie nie wyprowadzam więc na zewnątrz przycisku RESET do przywracania poprawności pracy modułu kiedy dochodzi do jego zaburzenia  np. z powodu zewnętrznych zakłóceń, zaniku napięcia zasilania czy innych zdarzeń "wysypujących" kod programu. Program sam musi sobie poradzić w takich sytuacjach. W programie sporo więc miejsca zajmują elementy samokontroli i autostartu umożliwiające przywracanie prawidłowej jego pracy. Do rozwiązania wciąż pozostaje jednak  problem złej obsługi watchdoga w module NANO. To ostatni element jaki muszę dopracować by uznać tą część programu za w miarę skończoną.

Całość programu na obecną chwile wygląda tak



Linia 17 i 18 to nowy sposób obsługi biblioteki BLYNK (ver 0.3.18) dla połączenia NANO <> ESP-01 poprzez sprzętowy port szeregowy. Niestety działa nieco inaczej niż wersja 0.3.14 choć chyba bardziej stabilnie. Inaczej więc musiałem rozwiązać sprawę kontroli połączenia z serwerem BLYNK . Procedura sprawdzBLYNK() wywoływana co ok 1 sek robi test połączenia i jeśli go nie ma ustawia flagę noconnection, która uaktywni funkcję restartArduino() wywoływaną co 30 sek programowym timerem uruchomionym w linii 258. Timery z biblioteki Timers.h są trzy - 1,5 sek wywołania różnych procedur obsługi, 30 sek resetu i 30 sek do odliczania czasu grzania. 
Wszystko co robi procesor ma swój początek w procedurze timer1sek(). 
  sprawdzBLYNK(); - test połączenia z BLYNK
  miganieLED_ok(); - Miganie LEDem zielonym na płytce potwierdzającym prawidłowe działanie calego systemu
  statusLED_error(); - ustawianie stanu LED ERROR w zależności od analizy poprawności pracy programu
  miganievLED(); - miganie wirtualnym LEDem w telefonie dla kontroli połączenia i poprawności pracy całego systemu
  sensorT(); - odczyt temperatury z czujnika DS18B20
  transmitBLYNK(); - wysyłane danych do aplikacji w telefonie (za pośrednictwem serwera BLYNK)
  swOnOff(); - początek procedury obsługi przełącznika na płycie procesora. W przyszłości będzie on służył do aktywowania pracy systemu kiedy brak jest dostępu do sieci Internet.

LEDy na płytce mają swoje odpowiedniki w aplikacji telefonu (V1 i V2)

Temperatura jest odczytywana z czujnika DS formatowana i zapamiętana do wysłania w zmiennej temperature. Jest ona wysyłana do BLYNKa  procedurą wyslij_V12() w linii 167.

Obsługa gniazd bezprzewodowych ELRO  (ich zdalne radiowe załączanie i wyłączanie) następuje w dwuch miejscach. Linie 176 - 190 to odczyt danych z aplikacji telefonu - wybranego nr gniazda (vPin20) i stanu przycisku on/off (ppilot). W liniach 286 - 338 następuje przyporządkowanie właściwego kodu  pilota do nr wybranego gniazda i wysłanie tego kodu poprzez transmiter 433 MHz.
Odpowiedzialna za to jest biblioteka  <RemoteTransmitter.h> , która po przyporządkowaniu portu do którego przyłączony jest transmiter CYT1 komendą ElroTransmitter elroTransmitter(3);  przejmuje na siebie całą procedurę transmisji.

Funkcjonalności sterowania bramą nie widać w kodzie programu bo realizowane jest to bezpośrednio z poziomu BLYNK. Wirtualny przycisk otwierania i zamykania bramy w telefonie jest bezpośrednio sprzężony z portem procesora, na którym "wisi' transoptor. Naciśnięcie Vprzycisku w telefonie zmienia stan portu i tym samym wysterowuje pilota bramy.  I już - szybko i bezproblemowo

Bardziej rozbudowana jest część związana ze sterowaniem pompą cyrkulacyjną ciepłej wody. Ten fragment programu może działać i działa autonomicznie - niezależnie od połączenia z BLYNK. Za pomocą biblioteki <RCSwitch.h> , która działa na przerwaniu zewnętrznym nr 0 (port nr 2) odbierane są kody z nadajnika, którym jest bezprzewodowa czujka PIR. Sygnał radiowy dekodowany w odbiorniku superheterodynowym CY-15 podawany na port nr 2 jest zamieniany na kod cyfrowy. Procedura sprawdzania tego co odebrało się odbiornikiem 433 MHz startuje w linii 340. Jeśli odebrany jest właściwy kod czujki PIR ( u mnie to 14013756) ustawiany jest licznik czasu grzania (zmienna grzanie) i wysyłany jest nadajnikiem kod załączający gniazdo z przyłączoną pompą cyrkulacyjną. Procedura licznikgrzania() w linii 193 wywoływana Timerem co 30 sek zmniejsza każdorazowo licznik grzania. Po osiągnięciu 0 wysyłany jest kod wyłączający gniazdo pompy. Każdorazowe pojawienie się sygnału z czujki PIR ustawia wartość początkową czasu grzania = 4 tzn 2 min. Czujka PIR też jest ustawiona na wysyłanie sygnałów o ruchu nie częściej niż co 2 min. W moim przypadku te dwie minuty wystarczają by w łazienkowym kranie na piętrze  pojawiła się ciepła woda w obiegu cyrkulacyjnym.
Jako gadżet jest możliwość załączenia pompy na czas cyrkulacji z aplikacji 2 telefonie. Dokonuje się to przyciskiem wirtualnym obsługiwanym w linii 213-223.

Fragment SETUP programu rozpoczyna się od restartu modułu ESP-01 portem nr 4 (245). Potem następuje inicjalizacja Timerów  (257) i inicjalizacja odczytu temperatury (268). Ustawienie portu szeregowego, inicjalizacja BLYNK połączenia z siecią WiFi i wydruk danych o programie to linie 264-269.

Ważnym elementem jest synchronizacja zmiennych programu ze stanem Vpinów aplikacji w telefonie po restarcie procesora. Robi to procedura BLYNK_CONNECTED() (227)

I to na razie tyle w temacie domowej inteligencji

 cdn ............ jak mniemam

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 ...................

sobota, 3 września 2016

Arduino IoT - podsumowanie 5 miesiecy

PROCESORY = Powroty bywają fascynujące


Miał być pryma aprilis a zrobiło się z tego całkiem poważne hobby. Obecny świat procesorów dla opornych okazał się nadzwyczaj przyjazny. Kluczem jest oczywiście Internet i jego nieprzebrane zasoby wiedzy. Ale też możliwość kontaktu z podobnymi pasjonatami tworzących najprzeróżniejsze projekty i udostępniających je całkowicie za darmochę. A sprzęt .... cóż małe chińskie rączki składają nieprzebrane ilości urządzeń i modułów oferując je za przysłowiowy psi grosz z darmową dostawą do domu.
A wszystko to dzieje się i tworzy na naszych oczach. Doskonałym przykładem jest tu projekt BLYNK. Wymyślony przez kilku chłopaków dwa lata temu i sfinansowany poprzez Kickstarter w zeszłym roku. Dziś to komercyjny (ale wciąż śmiesznie tani) produkt otwierający nieograniczone możliwości budowy złożonych systemów procesorowych z dziecinnie łatwym interfejsem na komórki i tablety pozwalającym zarządzać projektem z dowolnego miejsca na świecie.

Pięć miesięcy to czas zasysania wiedzy z wielu dziedzin jednocześnie: procesory, elektronika, język C, projektowanie płytek, mechanika precyzyjna, zakupy w Chinach, a do tego jeszcze tworzenie bloga. I ciągłe doskonalenie kolejnych projektów. Pierwotne założenia systemu IoT pozostały gdzieś daleko w tyle wraz ze stertą niepotrzebnych już choć nigdy nie użytych gotowych modułów i zestawów, kupionych w owczym pędzie na samym początku zabawy.


Nb. oddam je komuś, chętnemu spróbować  przygody z elektroniką procesorową.

Ciekawa jest też ewolucja kolejnych prototypów.  Widać tu stałą tendencję do miniaturyzacji i wykorzystywania optymalnych funkcjonalnie i cenowo modułów uzupełnionych o niezbędne w projekcie dyskretne elementy elektroniczne. Taka zmiana nie udałaby się bez  możliwości tworzenia własnych płytek drukowanych w rozsądnych cenach. Dziś dysponuję już pierwszymi własnymi płytkami prototypowymi  pozwalającymi znakomicie skrócić czas i ograniczyć wysiłek przygotowywania kolejnych projektów.. A powielenie już wykonanych i sprawdzonych projektów stało się przyjemnością.


Najciekawsze jest jednak dopiero przede mną. Zapowiedzią tego jest niepozorna płytka z ESP-12 do pomiaru wilgotności gleby.



Ten ubogi w porty ( 1 analog, 10 cyfrowych) ale z potężnym silnikiem 32-bitowy procesor RISC (80 MHz zegar , 0,5 - 4 MB  flash 96 kB RAM)  daje to coś czego brakuje innym procesorom na rynku - pełnowymiarową komunikację wifi. Znakomicie więc uzupełnia Arduino do komunikacji ze światem zewnętrznym. Co więcej - w wielu zastosowaniach może pracować jako samodzielnie programowany moduł identycznie jak UNO czy NANO (w środowisku Arduino IDE).  I choć same moduły ESP są śmiesznie tanie (1,5 - 2 $) to  układy prototypowe już niekoniecznie. Ale i to wkrótce się zmieni. Moim zdaniem procesor ten szybko opanuje rynek "domowych" procesorów dla hobbystów szczególnie, że bezproblemowo współpracuje z aplikacją BLYNK dając silne narzędzie do zabaw w inteligentny dom. A Chińczyki już zaczynają oferować kolejne wcielenie - ESP32 -  z WiFi i Bluetoothem na pokladzie. Oj będzie się działo ....



cdn...........