IoT prakticky: Python na ESP32 III, prvé pokusy s hardvérom

V prvej časti seriálu sme predstavili vývojové dosky s populárnym čipom ESP32 a ukázali postup, ako do vývojovej dosky nahrať interpreter programovacieho jazyka Python, konkrétne implementáciu Micropython s knižnicou octopus od octopusLab.cz.

V druhej časti sme predstavili piny rozhrania. Len pripomíname, že obvod ESP 32 využíva 3.3 V logiku, čiže privedenie 5V na niektorý z pinov by ho s najväčšou pravdepodobnosťou zničilo. V tomto dieli ukážeme jednoduché príklady zamerané na využitie hardvéru ESP 32.

Všetky príklady sú vo videu:

Predpokladáme, že máte modul s nainštalovaným interpreterom Micropythonu. Správne nakonfigurovaný modul vypíše na emulátor terminálu prompt >>>.  Python je interpreter, môžete mu priamo zadať nejaký jednoduchý matematický výraz a terminálová aplikácia by mala vypísať výsledok

>>> 1 + 1

Po úspešnej konfigurácii môžeme začať jednoduchými pokusmi s hardvérom. Pripomíname, že bez obmedzenia môžete využiť piny GPIO2 ku ktorému je však pripojená modrá LED dióda na doske, GPIO 4, GPIO5, GPIO13 a GPIO16 až GPIO33. Na pinoch GPIO 14 a 15 je počas bootovania PWM signál, inak ich tiež môžete použiť bez obmedzenia.

Ako prvá sa ponúka LED dióda, ktorá je priamo na doske a je pripojená k pinu GPIO2.

from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)
led.value(1)

Skúsime LED diódu rozblikať v nekonečnej slučke.

from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
led.value(1)
sleep(0.3)
led.value(0)
sleep(0.3)

Nekonečnú slučku prerušíte príkazom Ctrl-C v aplikácii PuTTY.

Pre diódu zapojenú mimo dosku ESP32, pripojenú cez rezistor 330 ohm napríklad na pin GPIO 15 by stačí príklad mierne modifikovať.

Schéma zapojenia

Pre zmenu tu LED diódu nerozsvecujeme a nezhášame, ale zisťujeme jej aktuálny stav a negujeme ho. Čiže ak dióda svietila, tak ju zhasneme a opačne. Pin GPIO15 sme vybrali preto, lebo je v nami použitom module v dolnej rade ako tretí zľava, hneď vedľa napájacieho napätie 3V3 a GND.

from machine import Pin
from time import sleep

led = Pin(15, Pin.OUT)

while True:
    led.value(1)
    sleep(0.3)
    led.value(0)
    sleep(0.3)

Reálne zapojenie. Kvôli zjednodušeniu je vývod GND pripojený priamo na LED diódu a nie na napájacie lišty v dolnej časti prepojovacej dosky

Písať rozsiahlejšie programy cez konzolovú aplikáciu typu PuTTY je trochu nepraktické, rovnako nepraktické je písanie kódu v textovom editore do súborov s príponou .py a ich následné posielanie do dosky. Preto odporúčame vhodný editor pre Python, najlepšie s farebným rozlíšením syntaxe. Odporúčame uPyCraft, ktorý je k dispozícii pre Windows, aj MacOS. Je to open source projekt a všetko potrebné vrátane zdrojoviek je na GitHube. Pre Windows stačí stiahnuť spustiť EXE súbor.

Následne v menu Tools vyberiete príslušný COM port a typ dosky, v našom prípade ESP 32. Vytvoríte si nový súbor, napríklad pokus.py, napíšete kód a súbor uložite. Po pripojená tlačidlom Connect môžete svoje programy zavádzať priamo do dosky tlačidlom Download and Run.

Vyskúšame jednoduchú aplikáciu, ktorá bude na porte GPIO4 snímať stav tlačidla a podľa toho sa rozsvieti, alebo zhasne LED dióda na porte D15.

from machine import Pin
from time import sleep

led = Pin(15, Pin.OUT)
tlacidlo = Pin(4, Pin.IN)

while True:
    tlacidlo_stav = tlacidlo.value()
    led.value(tlacidlo_stav)
    sleep(0.1)

Reálne zapojenie. Napájacie napätie 3.3 V aj GND sú vyvedené na lištu v spodnej časti dosky označené červenou a modrou linkou

Hardvérové komponenty však môžete prehľadnejšie a v zmysle objektovo orientovaného programovania ovládať pomocou funkcií knižnice Octopus. Možnosti tejto knižnice predstavíme v ďalšom pokračovaní.