Image
17.10.2019 0 Comments

IoT prakticky: Python na ESP32, vývojové dosky, inštalácia Micropythonu

Po experimentoch s populárnou „školskou“ mikropočítačovou doskou BBC Micro:bit pre tých, ktorých táto problematika oslovila a chcú sa jej venovať ako hobby, skôr, či neskôr nastane moment, kedy si položia otázku: „Ako ďalej?“. Inak povedané, budú chcieť začať používať pokročilejšiu platformu, ktorá im poskytne viac možností. Ako jednu z najzaujímavejších možností odporúčame modernú a výkonnú platformu ESP 32. Dosky s touto rodinou mikrokontrolérov sú lacné (typicky 10 – 20 eur) a už priamo na čipe je vyriešená komunikácia cez WiFi, takže sa jedná o plnohodnotnú IoT platformu. 

Téma predstavenia dosiek s ESP 32 a inštalácia Micropythonu je názorne prebratá v našom videu.



Čip s označením ESP 32 od spoločnosti Espressif Systems je nasledovníkom obľúbeného čipu ESP 8266, ktorý bol zamýšľaný ako WiFi modul, avšak dal sa programovať, takže sa využíval aj ako mikrokontrolér.  

Varianty vývojových dosiek s 2 x 15 a 2 x 19 pinmi

Najvýznamnejšou novinkou ESP 32 je, že tento čip je už primárne určený ako mikrokontrolér. Podporuje aj bluetooth 4.0 LE, takže zariadenia s týmto čipom môžu popri WiFi využívať aj tento typ komunikácie. Napríklad na prepojenie s mobilným telefónom. ESP 32 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 kapacitou448 kB.

Architektúra čipu (vľavo) a hardvér na vývojovej doske (vpravo)

Hardvérovú výbavu ESP 32 ďalej tvorí:

  • 34 × programovateľných GPIO pinov. Ktorýkoľvek GPIO je možné využiť ako PWM, maximálne však +ž kanálov.
  • 12-bit SAR ADC do 18 kanálov. ESP32 disponuje 8 kanálovým ADC1 a 10 kanálovým ADC2 prevodníkom. ADC1 je plne k dispozícii používateľovi. ADC2 prevodník je dostupný́ obmedzene, pretože väčšinu jeho kanálov využíva modul bezdrôtovej komunikácie.
  • 2 × 8-bit DAC prevodníky
  • 10 × dotykové senzory, ktoré dokážu detegovať dotyk prsta na plôške pripojenej k príslušnému pinu
  • 4 × SPI. Jedno z rozhraní je určené na komunikáciu s flash pamäťou. Pre používateľa teda zostávajú 3 SPI rozhrania.
  • 2 × I2S
  • 2 × I2C s maximálnou frekvenciou 5 MHz
  • 3×UART. Maximálna prenosová rýchlosť je 5 Mbit/s
  • 1 host (SD/eMMC/SDIO)
  • 1 slave (SDIO/SPI)
  • Ethernet MAC interface s dedikovaným DMA a podporou IEEE 1588
  • CAN 2.0
  • IR (TX/RX)
  • Motor PWM
  • Integrovaná Hallova sonda. Jej výstup je možné interne pripojiť na zosilňovač a A/D prevodník.

Pokročilá správa napájania umožňuje prepínanie medzi piatimi rôznymi módmi spotreby, čím môžete podstatne predĺžiť dobu prevádzky zariadenia s ESP 32 napájaného z batérií.

Pre konečné projekty môžete využívať priamo modul ESP-WROOM-32 vo veľkosti poštovej známky, alebo verziu ESP-VROVER, ktorá je doplnená o 4 MB statickej pamäti RAM.

Produktová stránka výrobcu – spoločnosti Espressif je: https://www.espressif.com/en/products/hardware/esp32/overview

Najjednoduchší spôsob ovládania modulu s ESP 32 umožňuje ovládať iba jeho Wifi časti s pôvodným firmvérom modulu ESP32 je pomocou tzv. AT príkazov cez sériovú linku. ESP 32 však vďaka druhému jadru môžete využiť aj ako výkonný mikrokontrolér s bohatou výbavou portov. Najčastejšie sa využíva firmvér NodeMCU, ktorý umožňuje okrem ovládania Wifi aj vytvorenie vlastného riadiaceho programu a ovládanie GPIO pinov. NodeMCU je open-source firmvér, čiže akýsi odľahčený operačný systém umožňujúci vytvoriť vlastný riadiaci program a ovládať GPIO piny čipu ESP32. Na použitie NodeMCU je nutné prehrať pôvodný firmvér, ktorý je v čipe nahraný od výrobcu. Vytvorený program sa nahráva priamo do čipu, vďaka čomu je Wifi modul schopný samostatnej funkcie bez pomocného mikrokontoléru.

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, avšak čip dokáže pracovať v rozsahu napájacieho napätia 2.3 V až 3.6 V. USB poskytuje napájacie napätie 5V, preto doska ESP32/DevKitC má aj obvody, generujúce napätie 3.3V

Postupne budeme k modulu ESP 32 pripájať rôzne komponenty - LED diódy, RGB LED, displeje, spínacie prvky a podobne. Moduly s ESP sú konštruované tak, aby sa dali zasunúť do prepojovacieho poľa.

K dispozícii sú aj rôzne špecializované dosky, napríklad RobotBoard https://www.hwkitchen.cz/robot-board-pro-roboticke-vozitko/ Plošný spoj je možné osadiť súčiastkami potrebnými na ovládanie senzorov a akčných členov robota.

Vtedy si musíte dať pozor, aby ste použili správny modul, pretože ESP  32 moduly sú k dispozícii s 2 x 15, alebo 2 x 19 pinmi. Rozloženie signálov na pinoch nie je kompatibilné, takže nemôžete zasunúť do pätice pre 2 x 19 pinov modul 2 x 15 s tým, že by štyri piny na každej strane boli prázdne mimo modulu a ani naopak že by modul 2x 19 prečnieval v pätici 2 x 15. Doska RobotBoard je konštruovaná pre modul s ESP 32, ktorý má 2 x 15 pinov. Rozmiestnenie pinov pre 2 x 15 je

Alebo v podobe textovej schémy:

oeLAB-esp32 (DoIt) 2x15 pins:                               [ROBOT Board]:
                          -----------     (GPIO)
                      EN -           - D23 (23)  MOSI       [SPI_MOSI_PIN] 
[PIN_ANALOG]    (36)  VP -           - D22 (22)  SCL(I2C)   [I2C_SCL_PIN]
[I39_PIN]       (39)  VN -           - TXD (1)   D2
[I34_PIN]            D34 -           - RXD (3)   D3
[I35_PIN]            D35 -           - D21 (21)  SDA(I2C)   [I2C_SDA_PIN]
[ONE_WIRE_PIN] DEV1  D32 -           - D19 (19)  MISO       [SPI_MISO_PIN]
               DEV2  D33 -  (ESP32)  - D18 (18)  SCLK       [SPI_CLK_PIN]
[MOTOR_12EN]         D25 -           - D5  (5)   CS0        [SPI_CS0_PIN]
[MOTOR_1A]           D26 -           - TX2 (17)             [PIN_PWM1] /Servo1
[MOTOR_4A]           D27 -           - RX2 (16)             [PIN_PWM2] /Servo2
[MOTOR_3A]           D14 -           - D4  (4)              [PIN_PWM3] /Servo3
[MOTOR_2A]           D12 -           - D2  (2)              [BUILT_IN_LED]
[MOTOR_34EN]         D13 -           - D15 (15)             [WS_LED_PIN] //v1(13)     
                     GND -           - GND
                     VIN -           - 3V3 +
                          -----------

Pre jednoduché experimenty stačí na dosku osadiť niekoľko konektorov, prípadne aj jednu RGB diódu kompatibilnú s Neopixel. Prípadne osadíte ďaľšie obvody a konektory

 

Micropython

Micropython je opensource implementácia programovacieho jazyka Python 3, vytvorená v programovacom jazyku C a optimalizovaná na beh v mikrokontroléroch. Micropython a Python vo všeobecnosti je interpretačný jazyk, to znamená, že mikrokontrolér vykonáva príkazy napísané v Pythone bez toho, aby ich kompiloval. Preto aby ste mohli využívať Micropython v module s ESP 32, najskôr je potrebné do modulu nainštalovať kód interpretra Micropython. 

V tomto seriáli budeme využívať implementáciu Micropythonu s knižnicou octopus od octopusLab.cz. 

Na inštalovanie firmvéru do modulu ESP je určený nástroj esptool. Pri prvom nahrávaní sa odporúča vyčistiť pamäť flash pomocou funkcie erase_flash. Vo Windows stiahnite nástroj esptool.exe z adresy https://dl.espressif.com/dl/esptool-2.6.1-windows.zip   súbor uložte do vhodného adresára, napríklad 

C:\ESP32\esptool.exe

Stiahnite binárny obraz z webu https://octopusengine.org/download/micropython/micropython-octopus.bin a uložte ho do rovnakého adresára. Najskôr vymažeme obsah pamäti modulu. Spustite aplikáciu s parametrom

C:\ESP32\esptool.exe --chip esp32 -p /COM3 erase_flash 

Niekedy je potrebné na module ESP držať tlačidlo „boot“, aby sa modul pripojil. V našom prípade to nebolo potrebné. Následne do modulu uložite súbor micropython-octopus.bin príkazom

C:\ESP32\esptool.exe --chip esp32 -p /COM3 write_flash -z 0x1000 C:\ESP32\micropython-octopus.bin

Ako dostať program do modulu

Máte dve možnosti. Prvá z nich – komunikácia s modulom pomocou emulátora terminálu, napríklad Putty je jednoduchá, avšak menej komfortná, hlavne ak už nechcete program zadávať postupne po riadkoch, ale preniesť ho do modulu ako súbor so zdrojovým kódom. Druhá možnosť je využiť nástroje priamo určené na vývoj v Micropythone, kde môžete využívať príkaz ls na zobrazenie súborov v zložke a na prenos súborov použiť príkazy put a get. Po zadaní kľúčového slova repl sa prejdete do komunikačného rozhrania s modulom.

Na zadávanie príkazov a výpis odozvy sa používa emulátor terminálu, vo Windows putty a v Linuxe a MacOS screen. Aplikáciu Putty získate na adrese: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Najskôr je potrebné zistiť na ktorom sériovom porte je namapované USB rozhranie. Vo Windows to zistíte v Správcovi zariadení. Po spustení Putty nastavte port na ktorom je namapovaný modul ESP 32 pripojený cez USB. V našom prípade je to port COM3. Prenosovú rýchlosť nastavte na 115 200. 

Al máte modul ESP pripojený cez USB k Macbooku, potrebujete ovládač USB to UART Bridge VCP Drivers. Získate ho zo stránky https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers. Pri inštalovaní ovládača budete musieť povoliť inštaláciu softvéru mimo aplikačný obchod.  Mapovanie portov zistíte ak z konzoly spustite príkaz

ls /dev/tty.*

Komunikáciu s modulom ESP 32 začnete príkazom

screen /dev/tty.SLAB_USBtoUART 115200

Správne nakonfigurovaný modul vypíše na emulátor terminálu prompt >>>.  Nakoľko Python je interpreter, môžete mu priamo zadať nejaký jednoduchý matematický výraz a terminálová aplikácia by mala vypísať výsledok

>>> 3 + 10

Môžete vyskúšať importovať nejaký knižničný modul, napríklad math pre matematické operácie

>>> import math
>>> math.pi

3.141593

Pri importe modulu sa časť jeho kódu, ktorá je aktuálne potrebná presunie z flash pamäti do RAM.  Preto knižnice, ako napríklad math importujte iba v prípade, ak ich potrebujete, inak vám budú len zbytočne blokovať pamäť RAM. Keď vypíšete názov modulu, za ním bodku a následne stlačíte kláves TAB, zobrazí sa zoznam funkcií.

>>> import math
>>> math.
__class__       __name__        pow             acos
acosh           asin            asinh           atan
atan2           atanh           ceil            copysign
cos             cosh            degrees         e
erf             erfc            exp             expm1
fabs            floor           fmod            frexp
gamma           isclose         isfinite        isinf
isnan           ldexp           lgamma          log
log10           log2            modf            pi
radians         sin             sinh            sqrt
tan             tanh            trunc

Tento miniseriál nie je učebnicou Pythonu, ale má poskytnúť námety na praktické príklady. Uvedieme preto len niektoré funkcie zo základnej knižnice a funkcie na obsluhu hardvéru ESP 32.

Príkazy na časové oneskorenie.

sleep(1)           > 1 sekunda pauza

sleep_ms(100)      > 100 milisekunda 

sleep_us(500)      > 500 mikrosekúnd 

Teplotu procesora zistíte príkazom: 

>>> import esp32
>>> esp32.raw_temperature()

Hodnotu magnetického poľa nameranú Hallovou sondou načítate príkazom. Porovnajte hodnoty načítané pred a po priložení magnetu

>>> import esp32
>>> esp32.hall_sensor()

V ďalšom dieli sa zoznámime s obsluhou hardvéru a knižnicou Octopus.

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Mikrokontroléry

IoT prakticky: Python na ESP32 V – ovládanie displejov LED, LCD a OLED

12.11.2019 00:10

V predchádzajúcej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32-IV--kniznica-octopus-na-obsluhu-hardveru-a-komunikacie sme ukázali konfiguráciu knižnice Octopus, ktorá obsahuje triedy ...

Mikrokontroléry 3

IoT prakticky: predstavujeme jednodoskový mikropočítač ASUS Tinker board – konkurenta Raspberry Pi

06.11.2019 00:00

Tinker board je jednodoskový počítač s vysokým výkonom a grafickým výstupom. Rozmermi a konštrukčným formátom je podobný populárnemu mikropočítaču Raspberry Pi. Jeho srdcom je moderný štvorjadrový pro ...

Mikrokontroléry

IoT prakticky: Python na ESP32 IV, knižnica octopus na obsluhu hardvéru a komunikácie

05.11.2019 00:10

ESP 32 je plnohodnotná IoT platforma pretože umožňuje priame pripojenie k internetu cez WiFi. Aby ste mohli využívať WiFi pripojenie, potrebujete nastaviť pripojenie k WiFi routeru. Predpokladáme, že ...

Žiadne komentáre

Vyhľadávanie

ACER_122019

Najnovšie videá