Andrzej Gromczyński

W labiryncie IoT

Budowanie urządzeń z wykorzystaniem układów ESP8266 i ESP32

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz wydawca dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz wydawca nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Tomasz Gojowy

Projekt okładki: Studio Gravite/Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki

Materiały graficzne na okładce zostały wykorzystane za zgodą AdobeStock.

HELION S.A.

ul. Kościuszki 1c, 44-100 GLIWICE

tel. 32 230 98 63

e-mail: helion@helion.pl

WWW: https://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!

Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres

https://helion.pl/user/opinie/wlablo_ebook

Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

ISBN: 978-83-289-2273-0

Copyright © Helion S.A. 2025

- Kup w wersji papierowej

- Poleć książkę na Facebook.com

- Oceń książkę

- Księgarnia internetowa

- Lubię to! » Nasza społeczność

Drodzy Czytelnicy,

Chciałbym serdecznie podziękować za towarzyszenie mi w tej niezwykłej podróży przez labirynt IoT z ESP8266 i ESP32. Wasza ciekawość i gotowość do odkrywania czynią tę książkę wyjątkową. Bez Waszego entuzjazmu i pasji ta podróż nie byłaby tak inspirująca.

Chciałbym też podziękować wszystkim przyjaciołom z naszego małego forum dostępnego pod adresem https://forum.lothar-team.pl, którzy wspierali mnie na etapie powstawania tej książki, i choć ukrywałem ją przed nimi, i tak się domyślali, nieświadomie dawali wskazówki i rady oraz jakże nieocenioną pomoc, którą jest wsparcie. Dodatkowo kolega Xbary wspomagał mnie zdjęciami modułów, których akurat nie miałem pod ręką, a które znalazły się w jego zbiorach.

Teraz gdy macie klucz do labiryntu, zapraszam Was do aktywnego uczestnictwa w tej przygodzie. Niech każdy rozdział będzie dla Was wyzwaniem do eksperymentowania, do przekraczania własnych granic i do tworzenia czegoś wyjątkowego. Wasze pytania, uwagi i pomysły stanowią integralną część tej książki.

Dziękuję, że jesteście ze mną, i mam nadzieję, że każda strona tej książki przyniesie Wam inspirację i nowe umiejętności. Niech ta podróż stanie się dla Was niezapomnianym doświadczeniem, co otworzy przed Wami nieograniczone możliwości.

Gotowi na niezapomniane chwile w świecie Internetu Rzeczy? Czas zanurzyć się w książce W labiryncie IoT. Budowanie urządzeń z wykorzystaniem układów ESP8266 i ESP32. Czekają na Was fascynujące eksperymenty, kreatywne wyzwania i niekończące się inspiracje.

Z przyjemnością zapraszam Was do tego niezwykłego świata!

Z poważaniem,

SunRiver

Wstęp

Witaj w fascynującym świecie Internetu Rzeczy (IoT), gdzie możliwości są tak bezgraniczne jak Twoja wyobraźnia. Ta książka, W labiryncie IoT. Budowanie urządzeń z wykorzystaniem układów ESP8266 i ESP32, zaprasza Cię do pełnej kreatywności podróży przez labirynt możliwości, jakie oferują układy ESP8266 i ESP32.

Nie jest tajemnicą, że współczesne rozwiązania IoT stanowią klucz do zrozumienia i kształtowania przyszłości. W tym kontekście układy ESP8266 i ESP32 wyróżniają się swoją wszechstronnością, niskim kosztem i potężną mocą obliczeniową, co czyni je idealnym narzędziem dla entuzjastów, hobbystów i profesjonalistów pragnących przeforsować swoje pomysły w realnym świecie.

Czego możesz się spodziewać

Ta książka nie jest zwykłym przewodnikiem po układach ESP; to podróż przez praktyczne zastosowania tych mikrokontrolerów w amatorskich projektach IoT. Poprzez serię inspirujących projektów krok po kroku wprowadzę Cię w świat programowania, interfejsu z urządzeniami, zbierania danych i tworzenia inteligentnych urządzeń.

Rozpocznę od podstaw, aby uczynić tę książkę dostępną dla wszystkich, bez względu na poziom doświadczenia. Ci, którzy są już zaznajomieni z podstawami, znajdą tu wyzwania do podjęcia, otwierające drzwi do zaawansowanych technik i strategii projektowania.

Dlaczego ESP8266 i ESP32?

To pytanie jest jak fundament, na którym zbudowano tę książkę. ESP8266 i ESP32 to nie tylko mikrokontrolery; to narzędzia transformujące pomysły w rzeczywistość. Ich wszechstronność pozwala na stworzenie niemal każdego rodzaju urządzenia IoT, od prostych czujników po zaawansowane systemy monitoringu.

Dla kogo jest ta książka?

Jeśli jesteś hobbystą, studentem, programistą czy inżynierem, który pragnie zagłębić się w świat IoT i wykorzystać potencjał układów ESP8266 i ESP32, to ta książka jest dla Ciebie. Niezależnie od tego, czy dopiero zaczynasz swoją przygodę z IoT, czy jesteś doświadczonym twórcą, znajdziesz tu inspirację do realizacji swoich projektów.

Przygotuj się na niezapomnianą podróż przez labirynt IoT, gdzie amatorskie projekty przeradzają się w profesjonalne wyniki. Czas zanurzyć się w świecie ESP8266 i ESP32!

CZĘŚĆ I. Podstawy świata IoT

Zanim zagłębimy się w skomplikowane projekty, zacznijmy od solidnych podstaw. W pierwszym rozdziale odkryjecie tajniki programowania układów ESP8266 i ESP32. Nowicjuszom zapewnimy jasne i przystępne wyjaśnienia, a dla doświadczonych programistów mamy ciekawe wyzwania.

W tym miejscu chciałbym też od razu zaznaczyć, że nie będę pisał o języku C, jak robi wielu autorów książek o mikrokontrolerach. Tak więc przykro mi, jeśli się zawiedliście, bo liczyliście na kolejny kurs języka C od podstaw. Nie, nie będę Was na siłę uczył programowania, ponieważ zwyczajnie tego nie umiem, a nie brakuje naprawdę dobrych książek o C i dobrych nauczycieli. Jednakże mogę Wam obiecać, że będzie tyle C, ile w C go potrzeba. Poznacie też trochę teorii i przykładowego użycia w roli brokera systemów SBC, podobnych do popularnego Raspberry Pi, i trochę poruszania się po konsoli w Linuxie. Będę się starał pokazać Wam w pigułce różne podejścia do tego samego tematu, co być może zainspiruje Was do poszukiwania własnych rozwiązań.

W tym rozdziale, jak to na początku, przedstawię Wam możliwości układów 8266 i ESP32 oraz różnice między nimi. Choć ten pierwszy jest powoli wypierany przez następców, wciąż ma ogromny potencjał.

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-01[1]

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.

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

2. D1 mini — mała płytka w niskiej cenie z modułem ESP-12F i USB do programowania.

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

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

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

6. ESP32 jakieś tam… Czyli bliżej nieokreślona płytka, ale z zasilaniem bateryjnym, co również się nam przyda.

7. Raspberry Pi lub inny SBC.

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