Cuprins:

Noțiuni introductive despre Python pentru ESP8266 și ESP32: 6 pași
Noțiuni introductive despre Python pentru ESP8266 și ESP32: 6 pași

Video: Noțiuni introductive despre Python pentru ESP8266 și ESP32: 6 pași

Video: Noțiuni introductive despre Python pentru ESP8266 și ESP32: 6 pași
Video: Tutorial Programare cu Python pentru incepatori: Invata Programare in 60 de minute | Cursuri IT 2024, Noiembrie
Anonim
Noțiuni introductive despre Python pentru ESP8266 și ESP32
Noțiuni introductive despre Python pentru ESP8266 și ESP32

Bacground

ESP8266 și fratele său mai mic ESP32 sunt microcipuri Wi-Fi low-cost cu stivă TCP / IP completă și capacitate de microcontroler. Cipul ESP8266 a intrat în atenția comunității producătorilor în 2014. De atunci, prețul scăzut (<5 USD), capacitatea sa Wi-Fi, o memorie flash încorporată de 1 sau 4 MB și o varietate de dezvoltări disponibile, a făcut din cipul ESP unul dintre cele mai populare micro-controlere pentru proiecte DIY WiFi și IoT.

MicroPython este o implementare slabă și eficientă a limbajului de programare Python din ce în ce mai popular, care include un subset mic al bibliotecii standard Python și este optimizat pentru a rula pe microcontrolere.

Combinația acestor două este o opțiune foarte interesantă pentru proiectele DIY, atât pentru începători, cât și pentru utilizatori mai avansați.

Proiectul MiPy-ESP

În 2015, primele mele proiecte cu ESP8266 au început cu cipul ESP-01 folosind Arudions pentru a rula comenzi AT cip prin conexiune serială. După aceea, în următorii ani am aplicat nucleul Arduino pentru ESP8266 pentru programarea cipurilor cu limbajul C ++. Acest lucru funcționează bine, dar pentru un entuziast Python, descoperirea mea despre implementarea MicroPython a Python 3 a fost o veste grozavă.

Proiectul MiPy-ESP este un cadru flexibil care aplică MicroPython pentru proiecte PyTon IoT full-stack pe microcontrolerele familiei ESP.

Cadrul este dezvoltat de echipa de dezvoltatori de software a comitetului tehnic LeGarage (LG-TC-SWDT-01), având ca scop înlocuirea codului C ++ deja stabilit pentru aplicațiile noastre de microcontroler.

Proiectul oferă caracteristici de bază, cum ar fi

  • Proceduri de conectare la rețea
  • Server web punct de acces cip (pentru conexiune wifi și servirea paginilor web cip pentru I / O de date)
  • Funcționalități MQTT
  • Logare / depanare
  • Programarea evenimentelor cu microcontroler
  • Rutine I / O hardware

Cu un singur script de cod compact principal (main.py), toate cu configurație globală (config.py).

Acest cod mictocontroller rulează cu o întreținere robustă a conexiunilor cu cip la rețeaua WiFi și brokerii MQTT. Modulele MicroPython existente pentru diferite hardware pot fi ușor integrate în sistem.

Cadrul MiPy-ESP a devenit coloana vertebrală a tuturor proiectelor noastre IoT electronice hobby care implică microcontrolere din familia ESP. A fost testat pe mai multe plăci din familia ESP, precum plăcile NodeMCU, Wemos și Lolin.

Următorul tutorial este un ghid pentru cum să începeți cu microcontrolerele familiei ESP și MicroPython folosind cadrul MiPy-ESP.

Pasul 1: placa Wemos D1 Mini ESP8266

Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266
Placa Wemos D1 Mini ESP8266

Cadrul MiPy-ESP funcționează cu majoritatea microcontrolerelor bazate pe ESP8266.

Placa de dezvoltare mini Wemos D1 se bazează pe cipul ESP-8266EX. Pe o suprafață de 2,5 x 3,5 cm, are o memorie flash de 4 MB, 11 pini de intrare / ieșire digitale, toți pinii acceptă întreruperea, PWM, I2C, SPI, serial și 1 intrare analogică cu intrare maximă de 3,3 V, poate funcționa cu putere de 5 V, are conexiune micro USB și este compatibilă cu placa de masă. Prețul scăzut și dimensiunile reduse au făcut din aceasta placa preferată ESP.

În plus, versiunea D1 mini pro a plăcii vine cu opțiunea de conectare a unei antene externe, mărind în mod semnificativ raza de conectare (raza de +100 m). În plus, placa vine, de asemenea, cu o varietate de plăci extinse din cutie, cu dimensiuni compacte similare.

Pasul 2: Pregătirea pentru MicroPython pe cipul ESP

Pregătirea pentru MicroPython pe cipul ESP
Pregătirea pentru MicroPython pe cipul ESP

În acest prim pas, veți face

  • Conectați placa ESP prin USB la computer
  • Instalați software-ul Esptool pentru intermitentul cipului
  • Ștergeți memoria cipului
  • Flash cipul cu firmware-ul MicroPython
  • Instalați Rshell pentru a permite interacțiunea cu linia de comandă cu cipul dvs.
  • Instalați mpy-cross (pentru compilarea fișierelor.py în binar)

Conectarea plăcii la computer prin USBBoards cu un port serial USB încorporat face UART disponibil pentru computer și este cea mai ușoară opțiune pentru a începe. Pentru plăcile fără conexiune USB, un modul FTDI cu USB la serial poate fi utilizat pentru a conecta pinii GPIO pentru intermitent conectați la lumea exterioară, dar acest lucru nu este acoperit în acest tutorial.

Pentru MicroPython care utilizează codul MiPy-ESP, cerința minimă pentru dimensiunea blițului cipului este de 1 MB. Există, de asemenea, o versiune specială pentru plăci cu 512 KB, dar aceasta nu are suport pentru un sistem de fișiere, de care depinde MiPy-ESP.

Când utilizați un cablu USB, placa este alimentată de computerul dvs. în timp ce este conectat. Acest lucru permite, de asemenea, programarea și depanarea conexiunii seriale. Când codul proiectului este încărcat și proiectul dvs. este implementat, alimentarea externă este aplicată peste pinii de alimentare ai plăcii.

Instalarea Esptool Informații despre software-ul Esptool pot fi găsite în depozitul GTOHub Esptool. Dacă doriți să utilizați Windows / Linux / OSX (MAC), linkul de mai sus acoperă acest lucru. Pachetul Python poate fi instalat de

pip instala esptool

Pentru utilizatorii Linux, pachetele pentru Esptool sunt întreținute pentru Debian și Ubuntu și pot fi instalate și cu

sudo apt instalează esptool

Ștergerea memoriei flash ESP Folosind Esptool, apoi ștergeți memoria flash ESP cu ajutorul comenzii

esptool.py --port / dev / ttyUSB0 erase_flash

Descărcarea firmware-ului MicroPyton Firmware-ul MicroPython se află într-un fișier.bin care poate fi descărcat de pe site-ul web MicroPython.

Ramura principală a proiectului actual al repo a fost testată și este operațională cu Micropython v.1.12. Pentru a asigura succesul cu cadrul MiPY-ESP, descărcați fișierul „esp8266-20191220-v1.12.bin” din acest link și scrieți firmware-ul pe cip prin comanda:

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

Instalarea Rshell Pachetul Rshell permite interacțiunea cu linia de comandă cu mediul dvs. MicroPython instalat pe cip. Poate fi găsit în acest link. Rshell este un shell simplu care rulează pe gazdă și folosește re-REPL-ul MicroPython pentru a trimite fragmente de python către tablă pentru a obține informații despre sistemul de fișiere și pentru a copia fișiere în și din sistemul de fișiere al MicroPython. REPL înseamnă Read Evaluate Print Loop și este numele dat promptului interactiv MicroPython pe care îl puteți accesa pe ESP8266. Utilizarea REPL este de departe cea mai ușoară modalitate de a testa codul și de a rula comenzi. Instalați Rshell prin comanda:

sudo pip instala rshell

Instalarea compilatorului mpy-cross MicroPython poate fi aplicată cu fișiere ascii.py încărcate în sistemul de fișiere cu cip. MicroPython definește, de asemenea, conceptul de fișiere.mpy, care este un format de fișier de container binar care conține cod precompilat și care poate fi importat ca un modul.py normal. Prin compilarea fișierelor.py în.mpy, va fi disponibilă mai multă memorie RAM pentru codul dvs. de rulare - și acest lucru este necesar pentru a avea un modul de bază funcțional al cadrului MiPy-ESP.

Pentru implementarea codului MiPy-ESP, un compilator mpy-cross MicroPython compilează scripturile.py în.mpy înainte de încărcarea cipului. Instalați pachetul mpy-cross după instrucțiunile din acest link. Alternativ, comanda mpy-cross poate fi instalată prin comanda Python pip sau poate rula din calea folderului mpy-cross dacă clonați depozitul MicroPython din GitHub aici.

Acum aveți instalat MicroPython și toate instrumentele necesare pentru a începe construirea primului dvs. proiect MiPy-ESP

Pasul 3: Noțiuni introductive despre MiPy-ESP

Noțiuni introductive despre MiPy-ESP
Noțiuni introductive despre MiPy-ESP

În acest pas vei

Descărcați cadrul MyPy-ESP

Descărcarea cadrului MiPy-ESP Proiectul MiPy-ESP poate fi găsit la GitHub în acest depozit de coduri. Din GitHub puteți descărca structura fișierului depozitului sau o puteți clona pe computerul dvs. prin

git clone

Cu depozitul de coduri instalat pe computerul dvs., aveți acum toate modulele de cod de care aveți nevoie pentru a construi un proiect ESP IoT care nu este disponibil. Mai multe detalii despre caseta de instrumente din pasul următor.

Pasul 4: Arhitectura cadru MiPy-ESP

Arhitectura cadru MiPy-ESP
Arhitectura cadru MiPy-ESP

În acest pas vei

aflați despre fluxul de lucru al codului MiPy-ESP

Arhitectura codului MiPy-ESP

Toate modulele de cadru Python se găsesc în folderul / src al depozitului de cod MiPY-ESP. Dosarul src / core conține modulele de bază care intră în fiecare proiect. Dosarul src / drivers are o selecție de module pentru diferite hardware care să fie conectate la cipul dvs. Dosarul src / utilities conține module de utilitate opționale pe care să le includeți în proiect.

Fișierele main.py și config.py se găsesc în folderul src /. Acestea sunt principalele fișiere de editat pentru construirea proiectului:

config.py:

Acest fișier este fișierul de configurare globală pentru proiectul dvs. Are diverse setări, toate cu comentarii descriptive în fișier.

main.py:

Acesta este scriptul principal pentru bucla de cod a microcontrolerului. Conține codul specific aplicației în cadru. La pornirea cipului, main.py rulează și importă toate modulele dependente de proiect cu intrări date din fișierul config.py. Diagrama de mai sus arată aspectul scriptului main.py.

Figura de mai sus descrie fluxul de lucru al main.py:

  1. La pornire, codul încearcă să conecteze cipul la rețeaua Wi-Fi Rețelele aplicate anterior și parolele acestora (criptate pe cip) sunt stocate în memoria flash. SSID-urile de rețea și parolele lor pot fi furnizate în fișierul wifi.json în formatul {" SSID1 ":" Parolă "," SSID ":" Parolă2 "}. Rețelele date în acest fișier sunt stocate, parolele sunt criptate, iar fișierul este șters la pornire.
  2. Dacă nu sunt găsite rețele deja cunoscute, codul configurează un server web de punct de acces (AP). SSID-ul cipului AP server și parola sunt setate în fișierul config.py. Conectându-vă la SSID-ul cipului, o pagină web pentru conectarea cipului la Wi-Fi este servită la 192.168.4.1. Rețelele detectate sunt afișate într-un meniu sau SSID poate fi introdus manual (rețele ascunse) împreună cu parola Wi-Fi. După conectarea cu succes a cipului la Wi-Fi, serverul AP se oprește și codul main.py trece la următorii pași.
  3. În secțiunea Configurare din main.py,

    • sunt definite funcțiile pentru joburi și callback-uri (etc. callback-uri MQTT) și evenimente regulate.
    • Sunt setate diferite lucrări temporizate pentru funcțiile de rulare.
    • Clientul broker MQTT este stabilit
  4. Codul intră apoi în bucla principală de microcontroler,

    • verificarea continuă a conexiunilor de broker de rețea și MQTT,
    • Abonamente MQTT,
    • I / O hardware
    • și locuri de muncă programate.
    • După pierderea conexiunii la rețea sau broker MQTT, codul încearcă să se restabilească.

Pasul 5: Pregătirea codului de proiect

Pregătirea codului de proiect
Pregătirea codului de proiect
Pregătirea codului de proiect
Pregătirea codului de proiect

În acest pas vei

  • aflați despre structura fișierului depozitului MiPy-ESP
  • pregătiți codul proiectului pentru încărcarea cipului

Structura dosarului depozitului Figura de mai sus descrie structura dosarului depozitului și listează modulele curente ale cadrului. Proiectul dvs. este etapele din folderul src /. Modulele de bază MiPy-ESP se află în src / core, module de utilitate opționale în src / utilities și module hardware în src / drivers.

Majoritatea bibliotecilor hardware MicroPython disponibile pot intra în drivere / folder fără modificări. Toți driverele prezente sunt testate cu cadrul MiPy-ESP. În ceea ce privește modulele din utilitare / folder, vor fi adăugate mai multe pe măsură ce prind viață.

Etalonarea codului de proiect Codul specific al proiectului dvs. trebuie plasat în folderul src /. Există deja fișierele main.py și config.py pe care le puteți edita. De asemenea, copiați utilitarele proiectului dorit din src / utilities și src / drivers în src /.

În cazul în care doriți să furnizați rețele Wi-Fi și parole cunoscute pe cip, adăugați fișierul wifi.json la src /.

Compilarea și pregătirea pentru încărcare Un Makefile furnizat poate fi aplicat pentru pregătirea fișierelor pentru transfer către cip prin compilarea fișierelor.py în / src, compilarea modulelor de bază și transferarea fișierelor compilate într-un nou folder numit build / prin comandă

face construi

Fișierele din compilare sunt gata pentru încărcare în sistemul de fișiere cu cip. În mod implicit, main.py și config.py nu sunt compilate în binar, pentru a le accesa cu ușurință pentru inspecția cipurilor implementate. Comanda:

face curat

Șterge build / folder și conținutul acestuia.

Pasul 6: Compilarea și încărcarea codului pe microcontroler

Compilarea și încărcarea codului pe microcontroler
Compilarea și încărcarea codului pe microcontroler
Compilarea și încărcarea codului pe microcontroler
Compilarea și încărcarea codului pe microcontroler

În această secțiune veți face

  • încărcați fișierele pregătite în build / din ultima secțiune
  • porniți și monitorizați codul de rulare

Încărcarea compilării / fișierelor cu Rshell

Încărcați toate fișierele din directorul / build în cipul ESP folosind Rshell. Cu microcontrolerul conectat la USB, din build / folder porniți Rshell cu comanda

rshell -p / dev / ttyUSB0

Apoi inspectați fișierele cu cipuri (dacă există) prin

ls / pyboard

Toate fișierele de pe cip pot fi șterse de

rm /pyboard/*.*

Copiați toate fișierele de proiect din build / pe cip:

cp *. * / pyboard

Apoi porniți terminalul interactiv Python prin comandă

repl

Acum puteți invoca comenzi Python sau importa module și puteți monitoriza ieșirea serială a cipului din modulul de înregistrare MiPy-ESP.

Reporniți cipul apăsând butonul de resetare sau din linia de comandă

import principal

sau

mașină de import

și apoi

machine.reset ()

În funcție de setările de înregistrare / depanare din fișierul de configurare a proiectului, repl va afișa acum mesajele de depanare de pe cipul ESP prin conexiunea serială.

Acest lucru ar trebui să te ajute să începi.

Recomandat: