W labiryncie IoT. Budowanie urządzeń z wykorzystaniem układów ESP8266 i ESP32 - Andrzej Gromczyński

Kup książkę

49.90 zł
29.94 zł (29,94 zł najniższa cena z 30 dni)

-
Proszę czekać

1. Trochę historii czy wprowadzenie?

Właściwie to trochę sam nie jestem zdecydowany, jak miałbym zacząć. Ale zakładam, że trzymanie się ścisłych faktów i mitów jest bezcelowe. Zaczniemy od początku, ale nic pewnego Was tu nie czeka, nie jest to bowiem książka historyczna, więc nie musimy się sztywno niczego trzymać...

Zatem do dzieła.

Dawno, dawno temu, w tajnym laboratorium ukrytym pod górą, grupa szalonych inżynierów postanowiła stworzyć coś, co zmieniłoby świat elektroniki. Siedząc przy stole z kubkiem kawy w jednej ręce i lutownicą w drugiej, wpadli na genialny pomysł. Postanowili połączyć siły ducha DIY (ang. do it yourself, zrób to sam) z magią bezprzewodowego Internetu Rzeczy. ESP8266 narodził się jako malutki czarodziej, który miał moc łączenia urządzeń z internetem, bez żadnych zbędnych ceregieli. Inżynierowie dali mu imię "ESP" - czyli "Elektroniczny Szalony Pomysł". Wydaje się, że jeden z nich musiał nadużywać kofeiny, ponieważ ESP8266 był tak mały, że można go było prawie stracić w elektronicznym śmietniku. Jednak świat chciał jeszcze więcej magii, więc inżynierowie postanowili stworzyć potężniejszą wersję. Tak narodził się ESP32, starszy brat ESP8266. Był bardziej zaawansowany, bardziej potężny i trochę bardziej złożony. Inżynierów, którzy stworzyli ESP32, ogłoszono "Mistrzami Magii Elektronicznej", a także przyznano im ordery z ziemniaka oraz dodatkowe racje ryżu.

Odtąd ESP8266 i ESP32 stały się nieodłącznymi towarzyszami hobbystów, inżynierów i każdego, kto chciał wpleść trochę magii w swoje projekty. I tak kończy się historia tajemniczego laboratorium, gdzie kawa, kreatywność i trochę szaleństwa doprowadziły do powstania dwóch niesamowitych czarodziejów - ESP8266 i ESP32. Gdy ESP8266 i ESP32 wyruszyły w świat, zaczęły zdobywać serca miłośników techniki. Ludzie zaczęli zaklinać elektroniczne duchy, rzucać czary kodu i łączyć swoje projekty z kosmiczną magią Internetu Rzeczy. ESP8266, nazywany czasem "Młodszym Czarodziejem", był mistrzem prostoty. Wielu z jego zwolenników mówi, że gdy połączysz go z baterią, dwoma drutami i odrobiną kodu, może zacząć pieścić twoje urządzenia za pomocą fal radiowych. To był prawdziwy czar elektroniki na wyciągnięcie ręki!

ESP32 z kolei zjawił się jako "Starszy Czarodziej". Znany był ze swojej zdolności do obsługi większej liczby zaklęć jednocześnie. Ludzie używali go do tworzenia zaawansowanych projekcików, takich jak inteligentne domy, roboty czy nawet magiczne lusterka, które mówią, jak świetnie wyglądasz każdego ranka. Ostatecznie ESP8266 i ESP32 stały się jak dwie szalone wróżki, które pomagały ludziom spełniać ich elektroniczne marzenia. I chociaż nadal krążą opowiadane szeptem legendy o tym tajemnym laboratorium, jedno jest pewne: dzięki ESP8266 i ESP32 świat stał się bardziej kolorowy i pełen wspaniałych wynalazków przepełnionych magią!

Zapewne tak by mogło całe owo wydarzenie wyglądać, gdyż niejako w każdej bajce jest ziarenko prawdy. Ale tak żartując, okazuje się, że to, co napisałem, ma wiele sensu, ponieważ rok 2014 był bardzo obiecujący dla wielu amatorów, wynalazców wręcz marzących o podłączeniu do sieci internet swoich pomysłów. Oczywiście rozwiązań jest wiele, od połączeń kablowych po interfejsy bezprzewodowe, powszechnie zwane WiFi. Rozwiązania te, szczerze mówiąc, pozostawiają wiele do życzenia, są drogie i kłopotliwe w użyciu. No może nie do końca kłopotliwe, w każdym razie konfiguracja, uciążliwa za sprawą poleceń AT i ze względu na konieczność używania UART-u do komunikacji, nie była, powiedzmy, specjalnie przyjemna i wygodna, już nie mówiąc o szybkości... I nagle z Nienacka (ok. 23 km na północ od Poznania) pojawia się młoda firma wprowadzająca rewolucyjny układ 8266, nie tylko umożliwia konfigurację za pomocą poleceń AT i komunikację przez UART, ale też udostępnia kilka GPIO i możliwość pracy w kilku trybach WiFi.

ESP-01 (rysunek 1.1) jest pierwszym modułem z nowym układem ESP8266EX. Wprawdzie ma niewielki rozmiar, jak i niewiele wyprowadzonych pinów, ale szybko pokazuje swój potencjał.

 

Rysunek 1.1. Wygląd modułu ESP-011

Układ przedstawia się ciekawie, jest tani i jak się szybko okazuje, nie musi być tylko mostem WiFi-UART; jest też całkiem porządnym mikrokontrolerem o wielu możliwościach i dużej wydajności jak na takie tanie maleństwo. Mała firma Espressif stworzyła coś niesamowitego.

Sam pamiętam, jak się pojawił, jak wielu się naśmiewało z chińskiego produktu, jak z popularnego Aliexpress sprowadzałem pierwsze sztuki modułów ESP01, a później pomniejsze sklepiki oferowały coraz ciekawsze i bogatsze moduły. Ba, na jednym forum wręcz mnie wyklęto za sianie herezji i zamętu, bo opisywałem tak trywialne chińskie wynalazki, które nawet nie miały działać. Tymczasem układy ESP oferowały wiele znanych peryferiów. Wydajny i szybki rdzeń Tensilic Diamond, 32-bitowy RISC taktowany z częstotliwością od 80 do 160 MHz, zawierał ponadto 32 KiB pamięci RAM, 32 KiB pamięci podręcznej instrukcji, 80 KiB pamięci RAM na dane użytkownika i 16 KiB pamięci RAM na dane systemowe ETS. Wbudowane radio WiFi pracowało w standardzie IEEE 802.11b/g/n, a ponadto miało zintegrowany przełącznik TR, Balun, LNA, a nawet wzmacniacz mocy. Pozwalało też na uwierzytelnienie WEP lub WPA/WPA2 i pracę w sieci otwartej. Układ udostępniał ponadto 17 pinów GPIO, których w praktyce było mniej lub więcej, zależnie od modułu, oraz znane peryferia, takie jak SPI, i2s UART na osobnych pinach czy 10-bitowy ADC. Kolejną ciekawostką było to, że układ jako taki nie zawierał wbudowanej pamięci flash. Ta była dołączana w zewnętrznym układzie QSPI, obsługującym maksymalnie 16 MB, choć na modułach zwyczajowo dostępne było od 512 kB do 4 MB. Niebawem też pojawił się układ ESP8285, który miał wbudowane 1 MB pamięci flash i pozwalał na konstruowanie miniaturowych jednoukładowych urządzeń zdolnych do łączenia się z WiFi.

Pojawiło się też oficjalne SDK pozwalające programować układ w języku C oraz porty społecznościowe umożliwiające programowanie modułów w środowisku Arduino. Gdy się okazało, że ten niewielki układzik jest bardzo przystępny, wielu amatorów zaczęło używać go nie tylko jako UART-WiFi, ale też jako alternatywę dla innych układów opartych na mikrokontrolerach i WiFi. Zdecydowanie niższy koszt urządzeń i większa dostępność WiFi w amatorskich rozwiązaniach miały niebagatelny wpływ na rozwój dziedziny IoT oraz wszelkich dostępnych dziś rozwiązań smart home. Rzecz jasna układy ESP8266 z czasem zostały zastąpione wszechobecnymi układami ESP32, które zaoferowały dwa rdzenie taktowane z częstotliwością 240 MHz oraz obsługę WiFi i Bluetooth. Oczywiście nigdy nie jest tak, że od początku wszystko jest super. Widząc sukces układów ESP, wiele firm chciało uszczknąć dla siebie kawałek tortu. W ten sposób powstało wiele rozwiązań różnych producentów, choćby skądinąd ciekawe układy Ameba, produkowane przez firmę Realtek. Ale nie przyjęły się specjalnie, choć użyto w nich rdzenia Cortex firmy ARM, więc bardziej przejrzystego i znanego, a na pewno przyjemniejszego w użytkowaniu od jakiegoś dziwnego Tensilica. Jednak tak to już jest, i to od dawna, w świecie elektroniki. Gdy Arduino święciło pierwsze sukcesy, natychmiast pojawiło się wiele podróbek i podobnych płytek; gdy powstało Raspberry Pi, pomimo wielu ułomności niemal natychmiast wywołało lawinę podobnych rozwiązań. Czasem lepsze, czasem gorsze, tańsze i droższe - na wybór niewątpliwie nie można było narzekać. Sam np. bardzo polubiłem niepozorne układy RP2040... ale to już całkiem inna opowieść.

1 Źródło: https://forum.lothar-team.pl; dostęp 15.06.2024.

2. Sprzętowisko - czyli z czym po drodze

Wbrew temu, co myślicie, dobór sprzętu ma tu znaczenie, choć zdecydowanie mniejsze, niż się Wam teraz wydaje. Oczywiście oprzemy się na kilku rozwiązaniach sprzętowych dostępnych w handlu, od poważnych zestawów developerskich sprzedawanych przez producenta "krzemu" po tanie i łatwo dostępne płytki, które zapewne wielu z Was ma już w swojej szufladzie. Niemniej nie ma większego znaczenia to, na czym ja się będę opierał, przedstawiając dane zagadnienie. W każdym razie poczuwam się do obowiązku przedstawienia Wam kilku płytek, które, mam nadzieję, pomogą mi poprowadzić Was przez labirynt.

ESP-03 - najmniejszy moduł z ESP8266 i ceramiczną anteną, udostępniający siedem GPIO i jedno ADC. To jego wybrałem na podstawę swoich modułów. Dzięki niemu pokażę Wam, jak łatwo samodzielnie wykonać małe wielkie urządzenie do sterowania. D1 mini - mała płytka w niskiej cenie z modułem ESP-12F i USB do programowania. ESP32 One - tę wyposażoną w ESP32 płytkę lubię ze względu ma format popularnego Raspberry Pi Zero, co jest dosyć wygodne podczas projektowania i prototypowania złożonych projektów. SC01 Plus - to zaawansowany twór wyposażony w ESP32-S3 i dotykowy ekran IPS 3,5". Postaram się na jego przykładzie przedstawić Wam zalety tworzenia interfejsów z użyciem różnych narzędzi. ESP-PROG - pojawi się parę razy w książce i zapewne uratuje nas z opresji, gdy utkniemy. I choć programator/debuger nie będzie nam tak bardzo potrzebny, sama jego obecność będzie powodować poczucie bezpieczeństwa. ESP32 jakieś tam... Czyli bliżej nieokreślona płytka, ale z zasilaniem bateryjnym, co również się nam przyda. Raspberry Pi lub inny SBC. Nie mam pojęcia, co jeszcze, czarować będziemy na bieżąco.

To było wstępne podsumowanie, czego możecie się spodziewać. Jeśli nie macie jakiejś płytki, nie powinno Was to martwić, ponieważ na każdej, którą znajdziecie na dnie szuflady, osiągniecie to samo, a może nawet więcej. Dla mnie jednak podczas tej wyprawy istotne jest zarówno wygodne operowanie przewodami, jak i kierowanie Waszymi umysłami.

Jak zapewne zauważyliście, każda z płytek jest inna, inaczej wyposażona i oparta na innym układzie ESP. Ma to jednak sens, gdyż właśnie dzięki temu skakaniu po różnych układach nauczycie się je odróżniać i dobierać do własnych projektów. Wiedza ta pokaże Wam, że ESP-01 wprawdzie jest w porządku, ale nie nadaje się do niektórych rzeczy ze względu na ubogość dostępnych GPIO, i nikt Wam nie wmówi, że wersja ze specjalnym firmware jest tym, co Wam będzie potrzebne, i najlepszym rozwiązaniem. Tymczasem mając już rozeznanie w różnych modułach, chwycicie za inny, np. ESP-12, w którym jest więcej GPIO i który będzie pasować do Waszego pomysłu. Oczywiście tylko Wy wiecie, co będzie pasować do Waszego wynalazku.

Postaram się zanadto nie przynudzać, ale niestety bez garści technikaliów się nie obejdzie, podobnie jak bez doboru środowiska. Ale razem damy radę. Wywód postaram się poprowadzić z typowym dla mnie humorem, a niektóre zagadnienia, wykraczające poza zarys, omówimy bardziej z grubsza, traktując je jako ciekawostki, warto mieć bowiem świadomość ich istnienia. Przyda się też praca z dokumentacją i schematami. Oczywiście nie znajdziecie tu tłumaczeń not producenta. Postaram się jednak pokazać programowanie i budowę urządzeń IoT jako dobrą zabawę i rozrywkę, przekazując przy okazji trochę wiedzy.

ESP8266 - charakterystyka układu

ESP8266 to był pierwszy dostępny w sprzedaży układ. Charakteryzuje się niewielkim rozmiarem, 5×5 mm, ale też skomplikowanym układem wewnętrznym, który ma dość dużą moc obliczeniową jak na takie maleństwo. Jego pinout jest pokazany na rysunku 2.1. To układ typu SoC (ang. system-on-a-chip ). Zawiera w sobie cały zintegrowany system - radio WiFi, wzmacniacz, układy peryferyjne, pamięć RAM, 32-bitowy rdzeń Tensilic...

Rysunek 2.1. Pinout układu ESP8266EX 2

Co prawda ESP8266EX jest bardzo prosty w zastosowaniu, nie ma dużych wymagań co do liczby elementów zewnętrznych i jest bardzo tani, względnie mało osób decyduje się użyć samego układu. Powodem jest dostępność ogromnej liczby gotowych płytek modułów, które wprowadziła na nasz rynek firma Ai-Thinker i które zawierają zarówno SoC, jak i konieczne elementy zewnętrzne, w porównaniu z innymi rozwiązaniami wygodne w użyciu i również tanie. Jest też dostępnych mnóstwo wariacji na płytkach uniwersalnych, dzięki którym wystarczy podłączyć zasilanie przez USB, i wszystko jest gotowe do pracy. Można nawet programować bez użycia zewnętrznych programatorów.

Jest tak dlatego, że domyślnie programowanie zewnętrznego flasha QSPI odbywa się za pomocą oddzielnych pinów UART poprzez bootloader. To proste rozwiązanie jest dość wygodne, szybkie i tanie, a dzięki temu łatwiej dostępne dla amatorów. Co właściwie dostajemy w opakowaniu?

Na przykład moduł ESP12F ma następujące parametry: