
IoT prakticky: Programovanie ESP 32 vo vývojovom prostredí pre Arduino
V predchádzajúcich častiach sme ukázali možnosti programovania moderného a výkonného mikrokontroléra ESP 32 s podporou WiFi v programovacom jazyku Micropython. Výhodou a nevýhodou Pythonu je, že je to interpretačný jazyk. Ukážeme preto aj ďalšiuveľmi rozšírenú alternatívu – programovanie ESP32 v rovnakom vývojovom prostredí, v ktorom sa programuje populárna vývojová doska Arduino. Využíva programovací jazyk, ktorý je veľmi podobný programovaciemu jazyku C, prípadne Java a zdrojový kód sa kompiluje. Pre tých, čo majú skúsenosti s Arduinom je to najjednoduchšia možnosť ako prejsť na výkonnejšiu platformu s podporou WiFi komunikácie. Zatiaľ nebudeme riešiť implementačné detaily, uspokojíme sa s tým, že podpora ESP32 sa do vývojového prostredia pre Arduino dá jednoducho pridať a následne môžete aj na tejto oveľa výkonnejšej platforme využiť skúsenosti s vývojom pre Arduino.
Konfigurácia vývojového prostredia Arduino IDE a spustenie prvého príkladu je vo videu
Čip s označením ESP 32 od spoločnosti Espressif Systems podporuje komunikačné rozhrania WiFi aj bluetooth 4.0 LE. Má dvojjadrový procesor s 32 bitovými jadrami Xtensa LX6 taktovanými na 160 MHz. Jedno jadro rieši WiFi komunikáciu a druhé máte k dispozícii pre svoj program. Jadrá sa dajú pretaktovať až na 240 MHz. K dispozícii je až 36 GPIO pinov. Kapacita pamäti Flash je 4 MB a RAM je tvorená tromi blokmi s celkovou kapacitou 520 kB. Používateľ má k dispozícii približne 400 kB RAM. Zavádzací program je v ROM s kapacitou 448 kB.
Na porovnanie tabuľka parametrov dosiek Arduino Uno a ESP 32
|
Ardunio UNO
|
ESP32
|
Architektúra
|
8 bit
|
32 bit
|
RAM
|
2 KB
|
512 KB
|
Flash
|
32 KB
|
16 MB
|
CPU frekvencia
|
16MHz
|
160MHz
|
GPIO PINy
|
14
|
36
|
Komunikačné zbernice
|
SPI, I2C, UART
|
SPI,I2C,UART,I2S,CAN
|
Piny AD prevodníka
|
6
|
18
|
Piny DA prevodníka
|
0
|
2
|
Hardvérová výbava je podrobnejšie popísaná v článku https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32--popis-portov-a-rozhrani
Produktová stránka výrobcu – spoločnosti Espressif je: https://www.espressif.com/en/products/hardware/esp32/overview
Na účely tohoto seriálu budeme využívať vývojový modul ESP32/DevKitC, ktorý má zabudované USB rozhranie pre programovanie cez sériovú linku a zároveň napájanie celého modulu z USB. Napájacie napätie samotného modulu je 3.3V. USB poskytuje napájacie napätie 5V, preto doska ESP32/DevKitC má aj obvody, generujúce napätie 3.3V.
Konfigurácia softvéru
Najskôr vyriešime sériovú komunikáciu s vývojovou doskou ESP 32 cez USB. Ak Windows 10 dosku nerozpoznal, nainštalujte ovládač zo stránky:
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
Na stránke https://www.arduino.cc si v sekcii Software stiahnite vývojové prostredie Arduino IDE. K dispozícii je pre platformy Windows, Mac OS aj Linux. Vývojové prostredie sa neinštaluje, z internetu si stiahnete priamo aplikáciu, ktorú vo Windows umiestnite do vhodného adresára a na platforme Mac OS ju z adresára Stiahnuté prekopírujete do adresára Aplikácie. ESP32 Arduino core je na GitHube.
Po spustení vývojového prostredia v menu aktivujte položku File > Preferences (v slovenskej verzii Súbor > Vlastnosti). Adresu rozšírenia pre prídavnú dosku v našom prípade ESP32
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
skopírujte do poľa Additional Board Manager URLs (v slovenskej verzii Manažér prídavných dosiek URL).
Teraz aktivujte menu Tools > Board menu (alebo v slovenskej verzii Nástroje > Manažér Dosiek). Do poľa pre vyhľadávanie zadajte ESP32 a nainštalujte najnovšiu verziu doplnkov pre dosky ESP32. Návod na inštaláciu, predovšetkým URL doplnku pre dosku ESP 32 nájdete na GitHube na adrese http://txplo.re/ardesp32
V menu Nástroje -> Doska a vyberte dosku, ktorú budete používať, v našom prípade DOIT ESP32 DEVKIT V1. Následne pomocou menu Nástroje -> Port nastavte port, ku ktorému je vaša doska pripojená.
O správnosti nastavenia portu sa presvedčíte pomocou funkcie Nástroje -> Získať informácie o Doske. Ak sa vám zobrazí aspoň ID dosky, pripojenie je správne nakonfigurované a všetko je pripravené na napísanie prvej aplikácie a jej zavedenie do dosky. Pre niektoré dosky je potrebné znížiť znížiť komunikačnú rýchlosť na 115 200 bitov/s.
Aplikácia „Blinky“
Primárnym cieľom takéhoto príkladu je uistiť sa, že máte správna nainštalované a nakonfigurované vývojárske nástroje a správne pripojené zariadenie, na ktorom aplikáciu testujete. Aby ste k doske nemuseli nič pripájať, využijeme modrú LED diódu, ktorá je priamo na doske a je pripojená k portu GPIO 2. Cieľom aplikácie je LED diódu rozblikať, čiže striedavo nastavovať na vybranom porte, ku ktorému je dióda pripojená úrovne „logická 0“ a „logická1“.
Na rozdiel od udalosťami riadených aplikácií pre desktopové a mobilné platformy, kód pre mikrokontroléry funguje v nekonečnej slučke. Ak dôjde k nejakej udalosti vyvolá sa prerušenie, obslúži sa príslušným kódom a aplikácia sa znovu cyklí v nekonečnej sľučke Veľa napovie pripravená šablóna kódu pracovnom okne vývojového prostredia, kde sú metódy setup() a loop(). Najskôr je potrebné mikrokontrolér inicializovať, to znamená definovať ktoré piny budú vstupné, ktoré výstupné, aké budú parametre prípadných komunikačných rozhraní a podobne. V našej aplikácii nastavíme port D2 ako výstupný a v hlavnej slučke budeme v sekundových intervaloch prepínať na tomto porte hodnoty HIGH a LOW.
Po preložení a zostavení projektu tlačidlom na lište nástrojov prvým zľava sa zobrazí informácia o tom koľko výsledný kód a jeho premenné zaberajú v pamäti.
Následne môžete program zaviesť do dosky ESP 32, kde sa spustí. Použite tlačidlo na toolbare v tvare šipky doprava. Niekedy je potrebné na module ESP držať tlačidlo „boot“, aby sa modul pripojil. Spoznáte to podľa výpisu
Ak je všetko v poriadku výpis o priebehu zavádzania kódu sa skončí oznamom, že doska bola softvérovo zresetovaná
Spustí sa program. LED dióda začne v sekundových intervaloch blikať. Frekvenciu blikania nastavujete pomocou konštánt v príkazoch delay(), ktoré udávajú časový interval v milisekundách. V reálnej aplikácii by ste namiesto LED pripojili napríklad relé a spínali vhodný elektrický obvod.
Otestovali sme aj rýchlosť vykonávania inštrukcií tak, že sme vypustili príkaz delay() a zmerali sme frekvenciu generovaných impulzov. Pre slučku z dvoch príkazov sme namerali 3.2 MHz
Po doplnení podpory pre ESP32 pribudnú do ponuky aj príklady pre túto platformu. Odporúčam preštudovať príklady na obsluhu hardvérových komponentov, ktoré budete používať.
Na ilustráciu ukážem príklad, ktorý skenuje WiFi siete.
Zoznam sietí aplikačný kód vypisuje cez sériové rozhranie. Vo vývojovom prostredí v menu Nástroje aktivujte položku Monitor sériového portu a nastavte prenosovú rýchlosť 115 200 bit/s. V okne monitora sa bude periodicky zobrazovať zoznam portov
x
Zobrazit Galériu