INHOUDSOPGAWE:

Aan die gang met Python vir ESP8266 en ESP32: 6 stappe
Aan die gang met Python vir ESP8266 en ESP32: 6 stappe

Video: Aan die gang met Python vir ESP8266 en ESP32: 6 stappe

Video: Aan die gang met Python vir ESP8266 en ESP32: 6 stappe
Video: home assistant solar monitoring - esphome solar monitoring 2024, Julie
Anonim
Aan die gang met Python vir ESP8266 en ESP32
Aan die gang met Python vir ESP8266 en ESP32

Agtergrond

Die ESP8266 en sy jonger ouboet ESP32 is goedkoop Wi-Fi-mikroskyfies met volledige TCP/IP-stapel en mikro-beheerfunksie. Die ESP8266-chip het die eerste keer onder die aandag van die vervaardigersgemeenskap gekom in 2014. Sedertdien het die lae prys (<5 USD), die Wi-Fi-vermoë, 'n ingeboude flitsgeheue van 1 of 4 MB en 'n verskeidenheid beskikbare ontwikkelings planke, het die ESP-chip een van die gewildste mikrobeheerders vir WiFi- en IoT-DIY-projekte gemaak.

MicroPython is 'n skraal en doeltreffende implementering van die toenemend gewilde Python -programmeertaal wat 'n klein deel van die Python -standaardbiblioteek bevat en wat geoptimaliseer is om op mikrobeheerders te werk.

Die kombinasie van hierdie twee is 'n baie interessante opsie vir selfdoenprojekte, beide vir beginners en meer gevorderde gebruikers.

Die MiPy-ESP-projek

In 2015 het my eerste projekte met ESP8266 begin met die ESP-01-chip wat Arudions gebruik het om AT-opdragte oor die seriële verbinding uit te voer. Daarna het ek die komende jare die Arduino -kern vir ESP8266 toegepas vir die programmering van die skyfies met die C ++ - taal. Dit werk goed, maar vir 'n Python -entoesias was my ontdekking van die MicroPython -implementering van Python 3 goeie nuus.

Die MiPy-ESP-projek is 'n buigsame raamwerk wat MicroPython toepas vir Python IoT-projekte met 'n volledige stapel op die ESP-familie mikrobeheerders.

Die raamwerk word ontwikkel deur die LeGarage Technical Development Committee Software Developer Team (LG-TC-SWDT-01) wat daarop gemik is om reeds gevestigde C ++-gebaseerde kode vir ons mikrobeheertoepassings te vervang.

Die projek bied basiese kenmerke soos

  • Netwerkverbindingsprosedures
  • Chip -toegangspuntwebbediener (vir wifi -verbinding en bedien van chipwebblaaie vir data -I/O)
  • MQTT funksies
  • Logging/ontfouting
  • Mikrokontroleerder -gebeurtenisskedulering
  • Hardeware -I/O -roetines

Met een hoof kompakte kodeskript (main.py), almal met 'n globale opset (config.py).

Hierdie mictocontroller -kode werk met robuuste instandhouding van chipverbindings na WiFi -netwerk en MQTT -makelaars. Bestaande MicroPython -modules vir verskillende hardeware kan maklik in die stelsel geïntegreer word.

Die MiPy-ESP-raamwerk het die ruggraat geword van al ons stokperdjie-elektroniese IoT-projekte waarby ESP-familie mikrobeheerders betrokke is. Dit is getoets op verskeie ESP-familieborde, soos die NodeMCU, Wemos en Lolin borde.

Die volgende tutoriaal is 'n gids om aan die gang te kom met ESP-familie-mikrobeheerders en MicroPython met behulp van die MiPy-ESP-raamwerk.

Stap 1: Die Wemos D1 Mini ESP8266 -bord

Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord
Die Wemos D1 Mini ESP8266 -bord

Die MiPy-ESP-raamwerk werk met die meeste op ESP8266 gebaseerde mikrobeheerders.

Die Wemos D1 mini-ontwikkelingsbord is gebaseer op die ESP-8266EX-chip. Op 'n voetafdruk van 2,5 x 3,5 cm beskik dit oor 4 MB flitsgeheue, 11 digitale invoer-/uitsetpenne, alle penne ondersteun onderbrekings, PWM, I2C, SPI, seriële en 1 analoog ingang met 'n maksimum ingang van 3.3V, kan op 5V -krag werk, het 'n mikro -USB -aansluiting en is broodbordversoenbaar. Die lae prys en die klein grootte daarvan het dit my gunsteling ESP -bord gemaak.

Boonop het die D1 mini pro -weergawe van die kaart die opsie om 'n eksterne antenna aan te sluit, wat die verbindingsreeks aansienlik vergroot (+100 m bereik). Daarbenewens bevat die bord ook 'n verskeidenheid uitbreidingsborde buite die boks met 'n soortgelyke kompakte grootte.

Stap 2: Maak gereed vir MicroPython op die ESP -chip

Maak gereed vir MicroPython op die ESP -chip
Maak gereed vir MicroPython op die ESP -chip

In hierdie eerste stap sal u

  • Koppel die ESP -kaart via USB aan u rekenaar
  • Installeer die Esptool -sagteware om die chip te flits
  • Vee chipgeheue uit
  • Flits die chip met die MicroPython -firmware
  • Installeer Rshell om opdragreëlinteraksie met u chip moontlik te maak
  • Installeer mpy-cross (vir die opstel van.py-lêers na binêre)

Deur die kaart aan te sluit op u rekenaar via USB-borde met 'n ingeboude USB-seriële poort, is die UART beskikbaar vir u rekenaar en is die maklikste opsie om aan die gang te kom. Vir borde sonder USB -verbinding kan 'n FTDI -module met USB na seriële gebruik word om die GPIO -penne aan te sluit om te flits wat met die buitewêreld verbind is, maar dit word nie in hierdie handleiding behandel nie.

Vir MicroPython wat die MiPy-ESP-kode gebruik, is die minimum vereiste vir chipflitsgrootte 1MB. Daar is ook 'n spesiale konstruksie vir planke met 512 kB, maar dit ondersteun geen lêerstelsel waarop MiPy-ESP afhang nie.

As u 'n USB -kabel gebruik, word die kaart deur u rekenaar aangeskakel terwyl dit gekoppel is. Dit maak dit ook moontlik om die seriële verbinding te programmeer en ontfout. As die projekkode opgelaai word en u projek ontplooi word, word eksterne krag oor die kragtoevoerpenne van die bord toegepas.

Die installering van EsptoolInformasie oor die Esptool -sagteware kan gevind word in die Esptool GitHub -bewaarplek. As u die Windows/Linux/OSX (MAC) wil gebruik, dek die skakel hierbo ook dit. Die Python -pakket kan geïnstalleer word deur

pip installeer esptool

Vir Linux -gebruikers word pakkette vir Esptool onderhou vir Debian en Ubuntu, en kan dit ook geïnstalleer word

sudo apt installeer esptool

Verwyder ESP -flitsgeheue Met Esptool vee u die ESP -flitsgeheue met die opdrag uit

esptool.py --port /dev /ttyUSB0 erase_flash

Die aflaai van die MicroPyton -firmware Die MicroPython -firmware lê in 'n.bin -lêer wat van die MicroPython -webwerf afgelaai kan word.

Die huidige projekhooftak van die repo is getoets en werk met Micropython v.1.12. Om sukses te verseker met die MiPY-ESP-raamwerk, laai lêer 'esp8266-20191220-v1.12.bin' van hierdie skakel af en skryf die firmware op die chip volgens die opdrag:

esptool.py --port /dev /ttyUSB0 --baud 460800 write_flash --flash_size = detect 0 esp8266-20191220-v1.12.bin

Rshell -pakket installeer Die Rshell -pakket maak interaksie met die opdraglyn moontlik met u MicroPython -omgewing wat op die chip geïnstalleer is. Dit kan gevind word in hierdie skakel. Rshell is 'n eenvoudige dop wat op die gasheer uitgevoer word en die raw-REPL van MicroPython gebruik om python-brokkies na die paneelbord te stuur om inligting oor lêerstelsels te kry en om lêers van en na MicroPython se lêerstelsel te kopieer. REPL staan vir Read Evaluate Print Loop, en is die naam wat gegee word aan die interaktiewe MicroPython -prompt waarmee u toegang kan verkry op die ESP8266. Die gebruik van die REPL is verreweg die maklikste manier om u kode uit te toets en opdragte uit te voer. Installeer Rshell met die opdrag:

sudo pip installeer rshell

Die installering van die mpy-cross compiler MicroPython kan toegepas word met ascii.py lêers wat na die chip lêerstelsel opgelaai word. MicroPython definieer ook die konsep van.mpy -lêers, 'n binêre houer -lêerformaat wat vooraf saamgestelde kode bevat, en wat ingevoer kan word soos 'n normale.py -module. Deur.py -lêers na.mpy saam te stel, is meer RAM -geheue beskikbaar vir u lopende kode - en dit is nodig om 'n funksionele kernmodule van die MiPy -ESP -raamwerk te hê.

Vir die implementering van MiPy-ESP-kode, stel die mpy-cross MicroPython-kruis-samesteller die.py-skrifte op na.mpy voordat chip oplaai. Installeer die mpy-cross-pakket volgens die instruksies in hierdie skakel. Alternatiewelik kan die mpy-cross-opdrag geïnstalleer word met die Python pip-opdrag of vanaf die mpy-cross-gidspad loop as u die MicroPython-bewaarplek van GitHub hier kloon.

U het nou MicroPython en al die nodige gereedskap geïnstalleer om aan die gang te kom met die bou van u eerste MiPy-ESP-projek

Stap 3: Aan die gang met MiPy-ESP

Aan die gang met MiPy-ESP
Aan die gang met MiPy-ESP

In hierdie stap sal jy

Laai die MyPy-ESP-raamwerk af

Die MiPy-ESP-raamwerk aflaai Die MiPy-ESP-projek kan gevind word by GitHub in hierdie kodebewaarplek. Vanaf GitHub kan u die lêerstruktuur van die bewaarplek aflaai, of dit na u rekenaar kloon

git -kloon

Met die kodebewaarplek op u rekenaar geïnstalleer, het u nou al die kode-modules wat u benodig om 'n out-of-the-box ESP IoT-projek te bou. Meer besonderhede oor die gereedskapskas in die volgende stap.

Stap 4: Die MiPy-ESP-raamwerkargitektuur

Die MiPy-ESP raamwerkargitektuur
Die MiPy-ESP raamwerkargitektuur

In hierdie stap sal jy

leer meer oor die werkstroom van die MiPy-ESP-kode

MiPy-ESP-kode-argitektuur

Alle Python-raamwerkmodules word gevind in die /src-lêergids van die MiPY-ESP-kodebewaarplek. Die src/core -lêergids bevat die kernmodules wat by elke projek ingaan. Die map src/drivers het 'n verskeidenheid modules vir verskillende hardeware wat aan u chip gekoppel kan word. Die gids src/utilities bevat opsionele nutsmodules wat u in u projek moet insluit.

Die lêers main.py en config.py word in die src/ folder gevind. Dit is die belangrikste lêers wat u moet redigeer vir die bou van u projek:

config.py:

Hierdie lêer is die globale konfigurasielêer vir u projek. Dit het verskillende instellings, almal met beskrywende opmerkings in die lêer.

main.py:

Dit is die hoofskrif vir die mikrobeheerder-kodelus. Dit bevat die toepassingspesifieke kode in die raamwerk. By chip-opstart loop en invoer main.py al die projekafhanklike modules met gegewe insette uit die config.py-lêer. Bogenoemde vloeidiagram toon die uitleg van die main.py -script.

Bogenoemde figuur beskryf die werkstroom van main.py:

  1. By die opstart poog die kode om die chip aan die Wi-Fi-netwerk te koppel. Vroeër toegepaste netwerke en hul wagwoorde (geïnkripteer op chip) word in die flash-geheue gestoor. Netwerk-SSID's en hul wagwoorde kan in die lêer wifi.json in die formaat {" SSID1 ":" Wagwoord "," SSID ":" Wagwoord2 "}. Die gegewe netwerke in hierdie lêer word gestoor, wagwoorde word geïnkripteer en die lêer word tydens opstart verwyder.
  2. As daar nog nie netwerke gevind word nie, stel die kode 'n toegangspunt (AP) webserver in. Die chip AP -bediener SSID en wagwoord word in die config.py -lêer gestel. Deur aan te meld by die chip-SSID, word 'n webbladsy vir aanmelding van die chip by Wi-Fi bedien op 192.168.4.1 Gedetekteerde netwerke word in 'n spyskaart vertoon, of SSID kan met die hand (verborge netwerke) saam met Wi-Fi-wagwoord ingevoer word. Na 'n suksesvolle verbinding van die chip met Wi-Fi, skakel die AP-bediener af en gaan die main.py-kode voort met die volgende stappe.
  3. In die instellingsgedeelte van main.py,

    • funksies vir werk en terugbel (ens. MQTT terugbel) en gereelde gebeurtenisse word gedefinieer.
    • Verskillende tydtake vir die uitvoer van funksies word ingestel.
    • MQTT makelaar kliënt is gevestig
  4. Die kode gaan dan in die hoof-mikrobeheerderlus,

    • kontroleer voortdurend netwerk- en MQTT -makelaarverbindings,
    • MQTT -intekeninge,
    • hardeware I/O
    • en geskeduleerde werk.
    • By 'n verlore netwerk- of MQTT-makelaarverbinding, probeer die kode hervestig word.

Stap 5: berei u projekkode voor

Die voorbereiding van u projekkode
Die voorbereiding van u projekkode
Die voorbereiding van u projekkode
Die voorbereiding van u projekkode

In hierdie stap sal jy

  • leer meer oor die struktuur van die MiPy-ESP-bewaarplek
  • berei u projekkode voor vir die oplaai van skyfies

Die struktuur van die bewaarplekmap Die bostaande figuur beskryf die struktuur van die stoorgids en bevat 'n lys van die huidige modules van die raamwerk. U projek is stadiums in die src/ gids. Core MiPy-ESP raamwerkmodules is geleë in src/core, opsionele nutsmodules in src/utilities en hardeware modules in src/drivers.

Die meeste beskikbare MicroPython -hardeware biblioteke kan sonder enige veranderinge in die bestuurders/ gids gaan. Alle huidige bestuurders word getoets met die MiPy-ESP-raamwerk. Met betrekking tot modules in die hulpprogramme/ gids, sal meer bygevoeg word namate hulle tot lewe kom.

Opstel van projekkode U projekspesifieke kode moet in die src/ gids geplaas word. Daar is reeds die main.py- en config.py -lêers wat u kan wysig. Kopieer ook die gewenste projekhulpprogramme van src/utilities en src/drivers na src/.

As u bekende Wi-Fi-netwerke en wagwoorde aan die skyf wil verskaf, voeg die lêer wifi.json by src/.

Samestelling en voorbereiding vir oplaai Met die voorwaarde dat Makefile toegepas kan word vir die voorbereiding van lêers vir oordrag na chip deur.py -lêers in / src op te stel, die kernmodules saam te stel en die saamgestelde lêers na 'n nuwe gids met die naam build / oor te dra

bou maak

Die geboude lêers is gereed om na die chip -lêerstelsel op te laai. Standaard word die main.py en config.py nie in binêre saamgestel nie, om dit maklik te benader vir inspeksie van ontplooide skyfies. Die opdrag:

skoon maak

Verwyder die build/ folder en die inhoud daarvan.

Stap 6: Die kode saamstel en oplaai na die mikrobeheerder

Die opstel en oplaai van die kode na die mikrobeheerder
Die opstel en oplaai van die kode na die mikrobeheerder
Die opstel en oplaai van die kode na die mikrobeheerder
Die opstel en oplaai van die kode na die mikrobeheerder

In hierdie afdeling sal u

  • Laai die voorbereide lêers op in build/ van die laaste afdeling
  • begin en monitor die lopende kode

Laai build/ files op met Rshell

Laai alle lêers in /bou -gids op na ESP -chip met behulp van Rshell. As die mikrokontroleerder op USB gekoppel is, begin Rshell met die opdrag vanaf die build/ folder

rshell -p /dev /ttyUSB0

Inspekteer dan die chip -lêers (indien enige) deur

ls /pyboard

Alle lêers op die chip kan verwyder word deur

rm /pyboard/*.*

Kopieer alle projeklêers in build/ na die chip:

cp *. * /pyboard

Begin dan die interaktiewe Python -terminaal deur die opdrag

vervang

U kan nou Python-opdragte aanroep of modules invoer en die seriële uitset van die chip vanaf die MiPy-ESP-loggermodule monitor.

Herlaai die chip deur op die reset -knoppie te druk, of vanaf die opdragreël deur

hoof invoer

of

invoer masjien

en dan

machine.reset ()

Afhangende van u aanmeld-/ontfoutingsinstellings in die projek -konfigurasielêer, sal die vervanger nou ontfoutingsboodskappe van die ESP -skyfie oor die seriële verbinding wys.

Dit moet u hopelik aan die gang sit.

Aanbeveel: