piątek, 8 lipca 2016

ESP8266 na poważnie cz. 1

Czyli IoT BEZ ARDUINO!

Czekam na miniaturowe przetwornice z Chin by móc dokończyć projektowanie płytki POMPA+BRAMA więc w przerwie poćwiczę ESP w pracy standalone (po naszemu "samodzielnej" to jakby nie do końca to samo).

Najpierw ulubiona płytka stykowa i pajączek połączeń z modułem ESP-12F osadzonym na przejściówce pasującej do modułów 07 i 12. Ten nie jest mój, to tylko zdjęcie z internetu modułu z przejściówką.


 Przejściówka zawiera w sobie polaryzację pinów RST, CH_PD do +3V3 a GPIO15 do GND ponadto wyprowadza piny modułu w standardowym rastrze 2,54. Moim zdaniem płytka ta to zbędny gadżet, niepotrzebnie powiększający obszar zajmowany przez ESP. Jak widać na zdjęciu wcale też nie ułatwia montażu na płytce stykowej. Ale nic lepszego na razie nie ma.

Dlatego mój pająk wygląda tak


Schemat banalnie prosty


Zasilacz wygląda niepozornie ale to całkiem zmyślna konstrukcja - niewielki, z regulacją napięcia (0-30V) prądu (0-3A) i odczytem U,I,P pełnym zabezpieczeniem przeciwzwarciowym.
I niedrogi - 37,50. świetnie nadaje się do testów. Napięcia 19V dostarcza stary zasilacz komputerowy. Reszta elementów w układzie oczywista. Na schemacie nie ma rezystorów podpinających porty  RST  CH_PD i GPIO15 - są na przejściówce.

Początkowo połączyłem ESP z komputerem konwerterem FT232RL. 
(to ten odłączony na górze zdjęcia moduł)
To układ 3V i nie ma problemu z dopasowywaniem poziomów napięć USB -  ESP.  Ale nie chciał współpracować z oprogramowaniem ARDUINO IDE.CC!! Driver konwertetra wysypywał program tak, że musiałem znowu przeprosić się z chińskim klonem na CH340 kosztem dwóch oporników na wejściu RX modułu ESP.

Z tymi ARDUINO IDE też ciekawa sprawa. Niby kompatybilne ale na ARDUINO.ORG nie udało mi się zainstalować sterowników modułu ESP8266 choć ponoć można. A więc po raz  pierwszy uruchomiłem ARDUINO IDE.CC ściągając przedtem najnowsza wersję 1.6.9.
Oczywiście w wersji ZIP tak by go można ręczne zainstalować w wybranym katalogu i bym mógł równolegle korzystać z obydwu IDE.

Do uruchomienia programowania ESP na IDE potrzebnych jest sporo plików z danymi modułów ESP oraz przede wszystkim  odpowiednie biblioteki, które będą konwertować uproszczony C/C++ IDE na coś zrozumiałego przez ESP. Piękne jest to, że chłopaki przygotowujący te biblioteki zadbali o to by programowanie ESP wyglądało identycznie jak płytek ARDUINO. Większość komend jest identyczna i nie trzeba uczyć się niczego nowego. Opisy sposobów oprogramowywania ESP wskazują jednoznacznie na przewagę IDE nad np. systemem LUNA. Dodatkowym plusem jest to, że wiele bibliotek stworzonych dla ARDUINO zupełnie dobrze radzi sobie w ESP.To w zasadzie zamknęło sprawę innych systemów programowania.

Szczegółowy opis instalacji systemu i bibliotek umożliwiających programowanie modułów ESP  zawarty jest tu>>>>> w zakładce DOC. Ale tym razem nie trzeba tych bibliotek wgrywać ręcznie. Cały proces został zautomatyzowany   (szczegóły na tej stronie niżej pod hasłem "Installing with Boards Manager"). Sposób ten jest właściwy tylko dla ARDUINO IDE.CC i nie można go zastosować dla ARDUINO IDE.ORG
Niestety biblioteki zapisywane są w dziwnych miejscach na komputerze i jest to spore utrudnienie by kontrolować nr wersji z jakich korzysta program. A biblioteki dla ESP zmieniają się naprawdę często i trzeba na bieżąco śledzić kolejne wersje.

Wszystko połączone, napięcia sprawdzone więc czas na pierwszy program. Tym razem  będzie to Blink z elementami komunikacji z terminalem IDE. Wcześniej jednak trzeba wybrać właściwą płytkę ESP i ustawić parametry modułu. Płytkę należy wybrać Generic zaś parametrów radzą nie ruszać jeśli się nie wie co siedzi w środku twojego ESP. Na domyślnych powinna chodzić większość modułów ESP.


  Program wygląda tak

 A w dolnym oknie piękny komunikat o wgrywaniu programu do modułu. Trwa to znacznie dłużej niż dla UNO ale kod jest 10 krotnie większy i zajmuje ponad 50% pamięci.
By zmusić ESP do wgrania programu należy zewrzeć GPIO 0 do masy i zresetować moduł. Po tej operacji moduł czeka na rozpoczęcie transmisji. Reszt dzieje się już automatycznie.Po skończonym transferze należy odłączyć GPIO 0 od masy i ponownie zresetować komputer. Tak mówi teoria ale mój moduł po skończonej transmisji sam przeszedł do wykonywania programu przy zwartym do masy GPIO ) ! I na monitorze pięknie co 3 sek pojawia się napis "Cos wyswietlam" ale led na porcie 13 nie działa ??!! Oczywiście po resecie program czeka na wgranie nowego programu więc port 0 od masy trzeba odłączyć dla normalnej pracy.
Zmieniam nr portu na GPIO 2 (2 w kodzie programu) kompiluję - działa ! Dioda miga słabiutko (maksymalny prąd z portu ESP to 12 mA a ja dałem opornik 470om) ale miga. Co więcej miga też niebieski LED umieszczony na module ESP choć piszą że powinien być połączony z pinem TX. Coś to nie gra - do sprawdzenia potem. Przełączam LED na pin 12 - też działa (zmieniam też w programie :))

No to teraz najważniejsza operacja - zainstalowanie BLYNKa na ESP i próba sterowania go z telefonu.   W przykładach programów IDE  wybieram BLYNK - Boards_WiFi-ESP8266_Standalone
i dopisuję kawałek kodu przeniesiony z programu POMPA. Całość wygląda tak




Na próbę dołączyłem do kody bibliotekę Timers.h dla sprawdzenia jak poradzi sobie z nią kompilator.
Program co 2,5 sek ma migać ledem na GPIO 12, migać vLED 1 w telefonie i to wszystko
I to dokładnie robi - niesamowity jest ten BLYNK


Dwa dodatkowe przyciski podłączyłem bezpośrednio do portów GPIO 12 i GPIO 2 i mogę dsterować LED na module i tym dołączonym do pinu 12.
I to wszystko w trzy godziny.
ARDUINO i BLYNK to naprawdę potęga. I znowu bez jakiejkolwiek znajomości wnętrza ESP8288 i a o C nie wspomnę nawet. Pełen komputer z komunikacją WiFi wielkości znaczka pocztowego dostępny dla każdego. Za 15 zł z VAT. I pełna komunikacja z telefonem.
30 lat temu niewyobrażalne. To naprawdę już inny świat.


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





Brak komentarzy:

Prześlij komentarz