Taula de continguts:

Introducció a Python per a ESP8266 i ESP32: 6 passos
Introducció a Python per a ESP8266 i ESP32: 6 passos

Vídeo: Introducció a Python per a ESP8266 i ESP32: 6 passos

Vídeo: Introducció a Python per a ESP8266 i ESP32: 6 passos
Vídeo: How To Read Bin File From ESP32 and ESP8266 2024, Desembre
Anonim
Introducció a Python per a ESP8266 i ESP32
Introducció a Python per a ESP8266 i ESP32

Bacground

L’ESP8266 i el seu germà petit ESP32 són microxips Wi-Fi de baix cost amb pila TCP / IP completa i capacitat de microcontrolador. El xip ESP8266 va arribar a l'atenció de la comunitat de fabricants el 2014. Des de llavors, el baix preu (<5 USD), la seva capacitat Wi-Fi, una memòria flash incorporada d'1 o 4 MB i una gran varietat de desenvolupament disponible, ha convertit el xip ESP en un dels microcontroladors més populars per a projectes de bricolatge WiFi i IoT.

MicroPython és una implementació senzilla i eficient del cada vegada més popular llenguatge de programació Python que inclou un petit subconjunt de la biblioteca estàndard Python i està optimitzat per funcionar amb microcontroladors.

La combinació d’aquests dos és una opció molt interessant per a projectes de bricolatge, tant per a principiants com per a usuaris més avançats.

El projecte MiPy-ESP

El 2015, els meus primers projectes amb ESP8266 van començar amb el xip ESP-01 amb Arudions per executar comandes AT de xip a través de connexió sèrie. Després d'això, durant els propers anys vaig aplicar el nucli Arduino per a ESP8266 per programar els xips amb el llenguatge C ++. Funciona bé, però per a un entusiasta de Python, el meu descobriment de la implementació de MicroPython de Python 3 va ser una gran notícia.

El projecte MiPy-ESP és un marc flexible que aplica MicroPython per a projectes IoT Python de pila completa als microcontroladors de la família ESP.

El marc està desenvolupat per l'equip de desenvolupadors de programes del Comitè Tècnic de LeGarage (LG-TC-SWDT-01) amb l'objectiu de substituir el codi basat en C ++ ja establert per a les nostres aplicacions de microcontroladors.

El projecte proporciona funcions bàsiques com

  • Procediments de connexió de xarxa
  • Servidor web de punts d’accés de xip (per a connexió wifi i publicació de pàgines web de xip per a E / S de dades)
  • Funcionalitats MQTT
  • Registre / depuració
  • Programació d'esdeveniments de microcontrolador
  • Rutines d'E / S de maquinari

Amb un script de codi compacte principal (main.py), tot amb configuració global (config.py).

Aquest codi de microcontrolador funciona amb un manteniment robust de les connexions de xip a la xarxa WiFi i als corredors MQTT. Els mòduls MicroPython existents per a diversos maquinaris es poden integrar fàcilment al sistema.

El marc MiPy-ESP s’ha convertit en l’eix vertebrador de tots els nostres projectes IoT d’electrònica de passatemps que impliquen microcontroladors de la família ESP. S'ha provat en diverses plaques de la família ESP, com les plaques NodeMCU, Wemos i Lolin.

El següent tutorial és una guia sobre com començar amb els microcontroladors de la família ESP i MicroPython mitjançant el marc MiPy-ESP.

Pas 1: el tauler Wemos D1 Mini ESP8266

El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266
El tauler Wemos D1 Mini ESP8266

El marc MiPy-ESP funciona amb la majoria de microcontroladors basats en ESP8266.

La mini placa de desenvolupament Wemos D1 es basa en el xip ESP-8266EX. Amb una petjada de 2,5 x 3,5 cm, compta amb memòria flash de 4 MB, 11 pins d’entrada / sortida digitals, tots els pins admeten interrupcions, PWM, I2C, SPI, sèrie i 1 entrada analògica amb entrada màxima de 3,3 V, poden funcionar amb una potència de 5 V, té connexió micro USB i és compatible amb taulers de suport. El seu baix preu i la seva petita mida l’han convertit en el meu tauler ESP preferit.

A més, la versió D1 mini pro de la placa inclou l'opció de connectar una antena externa, augmentant significativament el rang de connexió (+100 m d'abast). A més, el tauler també inclou una gran varietat de taulers d’extensió fora de caixa amb una mida compacta similar.

Pas 2: Preparació per a MicroPython al xip ESP

Preparació per a MicroPython al xip ESP
Preparació per a MicroPython al xip ESP

En aquest primer pas, ho faràs

  • Connecteu la placa ESP mitjançant USB a l'ordinador
  • Instal·leu el programari Esptool per fer flaixar el xip
  • Esborra la memòria del xip
  • Feu flaixar el xip amb el microprogramari MicroPython
  • Instal·leu Rshell per habilitar la interacció de la línia d'ordres amb el vostre xip
  • Instal·leu mpy-cross (per a la compilació de fitxers.py a fitxers binaris)

Connectar la placa a l’ordinador mitjançant USBBoards amb un port sèrie USB incorporat fa que l’UART estigui disponible per al vostre PC i és l’opció més senzilla per començar. Per a les plaques sense connexió USB, es pot utilitzar un mòdul FTDI amb USB a sèrie per connectar els pins GPIO per parpellejar connectats al món exterior, però això no es contempla en aquest tutorial.

Per a MicroPython que utilitza el codi MiPy-ESP, el requisit mínim per a la mida del flaix del xip és d’1 MB. També hi ha una versió especial per a taules de 512 KB, però això no admet un sistema de fitxers, del qual depèn MiPy-ESP.

Quan s’utilitza un cable USB, la placa s’alimenta de l’ordinador mentre està connectat. Això també permet programar i depurar sobre la connexió sèrie. Quan es penja el codi del projecte i es desplega el projecte, s’aplica una alimentació externa als pins d’alimentació de la placa.

Podeu trobar informació sobre el programari Esptool al dipòsit GitHub d’Esptool. Si voleu utilitzar el Windows / Linux / OSX (MAC), l'enllaç anterior també ho inclou. El paquet Python el pot instal·lar

pip instal·lar esptool

Per als usuaris de Linux, els paquets d'Esptool es mantenen per a Debian i Ubuntu, i també es poden instal·lar amb

sudo apt install esptool

Esborrar memòria flash ESP Amb l’ús d’Esptool, esborreu la memòria flash ESP amb l’ordre

esptool.py --port / dev / ttyUSB0 erase_flash

Descàrrega del microprogramari MicroPyton El microprogramari MicroPython resideix en un fitxer.bin que es pot descarregar des del lloc web MicroPython.

S'ha provat la branca mestra actual del projecte del repo i és operativa amb Micropython v.1.12. Per tal d'assegurar l'èxit amb el marc MiPY-ESP, descarregueu el fitxer 'esp8266-20191220-v1.12.bin' des d'aquest enllaç i escriviu el firmware al xip mitjançant l'ordre:

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

Instal·lació de Rshell El paquet Rshell permet la interacció de la línia d’ordres amb el vostre entorn MicroPython instal·lat al xip. Es pot trobar en aquest enllaç. Rshell és un intèrpret d'ordres senzill que s'executa a l'amfitrió i que utilitza el REPL de MicroPython per enviar fragments de python al tauler per obtenir informació del sistema de fitxers i copiar fitxers al sistema de fitxers de MicroPython. REPL significa Read Evaluate Print Loop (Llegir avaluar el bucle d’impressió) i és el nom que rep l’indicatiu interactiu de MicroPython al qual podeu accedir des de l’ESP8266. L’ús de REPL és, amb diferència, la forma més senzilla de provar el vostre codi i executar ordres. Instal·leu Rshell mitjançant l'ordre:

sudo pip install rshell

La instal·lació del compilador mpy-cross MicroPython es pot aplicar amb fitxers ascii.py carregats al sistema de fitxers del xip. MicroPython també defineix el concepte de fitxers.mpy que és un format de fitxer de contenidor binari que conté codi precompilat i que es pot importar com un mòdul.py normal. En compilar fitxers.py a.mpy, hi haurà més memòria RAM disponible per al vostre codi en execució, i això és necessari per tenir un mòdul bàsic del marc MiPy-ESP.

Per al desplegament de codi MiPy-ESP, un compilador creuat de MicroPython mpy-cross compila els scripts.py a.mpy abans de pujar el xip. Instal·leu el paquet mpy-cross seguint les instruccions d’aquest enllaç. Com a alternativa, l'ordre mpy-cross es pot instal·lar mitjançant l'ordre Python pip o executar-se des del camí de la carpeta mpy-cross si cloneu aquí el dipòsit MicroPython de GitHub.

Ara teniu instal·lat MicroPython i totes les eines necessàries per començar a construir el vostre primer projecte MiPy-ESP

Pas 3: Introducció a MiPy-ESP

Introducció a MiPy-ESP
Introducció a MiPy-ESP

En aquest pas ho faràs

Descarregueu el marc MyPy-ESP

Descàrrega del marc MiPy-ESP El projecte MiPy-ESP es pot trobar a GitHub en aquest dipòsit de codis. Des de GitHub podeu descarregar l'estructura del fitxer del dipòsit o clonar-la al vostre ordinador

git clone

Amb el dipòsit de codis instal·lat a l’ordinador, ara teniu tots els mòduls de codi que necessiteu per crear un projecte d’IoT d’ESP que no es pugui crear. Més detalls sobre la caixa d’eines del pas següent.

Pas 4: l'arquitectura del marc MiPy-ESP

L’arquitectura del marc MiPy-ESP
L’arquitectura del marc MiPy-ESP

En aquest pas ho faràs

Obteniu informació sobre el flux de treball del codi MiPy-ESP

Arquitectura de codi MiPy-ESP

Tots els mòduls de framework Python es troben a la carpeta / src del dipòsit de codis MiPY-ESP. La carpeta src / core conté els mòduls bàsics que van a cada projecte. La carpeta src / drivers té una selecció de mòduls per a diversos maquinaris que es connecten al vostre xip. La carpeta src / utilities conté mòduls d’utilitat opcionals per incloure al vostre projecte.

Els fitxers main.py i config.py es troben a la carpeta src /. Aquests són els fitxers principals que cal editar per crear el vostre projecte:

config.py:

Aquest fitxer és el fitxer de configuració global del vostre projecte. Té diversos paràmetres, tots amb comentaris descriptius al fitxer.

main.py:

Aquest és el guió principal del bucle de codi del microcontrolador. Conté el codi específic de l'aplicació al framework. En arrencar el xip, main.py executa i importa tots els mòduls dependents del projecte amb entrades donades del fitxer config.py. El diagrama de flux anterior mostra el disseny de l'script main.py.

La figura anterior descriu el flux de treball de main.py:

  1. En arrencar, el codi intenta connectar el xip a la xarxa Wi-Fi. Les xarxes aplicades anteriorment i les seves contrasenyes (xifrades al xip) s’emmagatzemen a la memòria flash. Els SSID de xarxa i les seves contrasenyes es poden subministrar al fitxer wifi.json al format {" SSID1 ":" Contrasenya "," SSID ":" Contrasenya2 "}. Les xarxes donades en aquest fitxer s’emmagatzemen, les contrasenyes es xifren i el fitxer s’elimina en arrencar.
  2. Si no es troba cap xarxa que es conegui, el codi estableix un servidor web de punt d’accés (AP). El SSID i la contrasenya del servidor AP de xip s’estableixen al fitxer config.py. En iniciar la sessió al SSID del xip, es proporciona una pàgina web per iniciar la sessió del xip a Wi-Fi a 192.168.4.1. Les xarxes detectades es mostren en un menú o es pot introduir SSID manualment (xarxes ocultes) juntament amb una contrasenya de Wi-Fi.. Quan es connecta correctament el xip a Wi-Fi, el servidor AP s'apaga i el codi main.py continua amb els seus passos següents.
  3. A la secció Configuració de main.py,

    • es defineixen funcions per a feines i devolucions de trucades (etc. devolucions de trucada MQTT) i esdeveniments regulars.
    • Es configuren diferents treballs temporitzats per a les funcions en execució.
    • S’estableix el client broker MQTT
  4. El codi entra al bucle principal del microcontrolador,

    • comprovació contínua de les connexions del corredor de xarxa i MQTT,
    • Subscripcions a MQTT,
    • E / S de maquinari
    • i feines programades.
    • En perdre la connexió de xarxa o d’agent MQTT, el codi intenta restablir-lo.

Pas 5: Preparació del codi del projecte

Preparació del codi del projecte
Preparació del codi del projecte
Preparació del codi del projecte
Preparació del codi del projecte

En aquest pas ho faràs

  • coneixeu l’estructura de fitxers del dipòsit MiPy-ESP
  • prepara el codi del projecte per a la pujada de xips

La figura anterior descriu l’estructura de carpetes del dipòsit i llista els mòduls actuals del framework. El vostre projecte es troba en etapes a la carpeta src /. Els mòduls bàsics del marc MiPy-ESP resideixen a src / core, els mòduls d’utilitat opcionals a src / utilities i els mòduls de maquinari a src / drivers.

La majoria de les biblioteques de maquinari MicroPython disponibles poden entrar al controlador / carpeta sense cap modificació. Tots els controladors actuals es proven amb el marc MiPy-ESP. Pel que fa als mòduls de la carpeta utilitats, se n’afegiran més a mesura que cobrin vida.

Etapa del codi del projecte El vostre codi específic del projecte s’ha de col·locar a la carpeta src /. Ja hi ha els fitxers main.py i config.py que podeu editar. Copieu també les utilitats del projecte desitjades de src / utilities i src / drivers a src /.

En cas que vulgueu subministrar xarxes i contrasenyes Wi-Fi conegudes al xip, afegiu el fitxer wifi.json a src /.

Es pot aplicar un Makefile proporcionat per preparar fitxers per transferir-los al xip compilant fitxers.py a / src, compilant els mòduls bàsics i transferint els fitxers compilats a una nova carpeta anomenada build / per l'ordre

fer construir

Els fitxers de la compilació estan preparats per carregar-los al sistema de fitxers del xip. Per defecte, main.py i config.py no es compilen a binaris, per accedir-hi fàcilment per a la inspecció dels xips desplegats. L'ordre:

fer net

Suprimeix la compilació / carpeta i el seu contingut.

Pas 6: Compilar i penjar el codi al microcontrolador

Compilació i càrrega del codi al microcontrolador
Compilació i càrrega del codi al microcontrolador
Compilació i càrrega del codi al microcontrolador
Compilació i càrrega del codi al microcontrolador

En aquesta secció ho faràs

  • pengeu els fitxers preparats a la compilació / de la darrera secció
  • iniciar i controlar el codi en execució

Càrrega de fitxers build / build amb Rshell

Pengeu tots els fitxers del directori / build al xip ESP mitjançant Rshell. Amb el microcontrolador connectat a USB, des de la compilació / carpeta inicieu Rshell amb l'ordre

rshell -p / dev / ttyUSB0

A continuació, inspeccioneu els fitxers de xips (si n’hi ha) mitjançant

ls / pyboard

Tots els fitxers del xip es poden eliminar

rm /pyboard/*.*

Copieu tots els fitxers de projecte a la compilació / al xip:

cp *. * / pyboard

A continuació, inicieu el terminal interactiu de Python mitjançant l'ordre

resposta

Ara podeu invocar ordres de Python o importar mòduls i supervisar la sortida sèrie del xip des del mòdul de registre MiPy-ESP.

Reinicieu el xip prement el botó de reinicialització o des de la línia d'ordres

importació principal

o bé

màquina d'importació

i llavors

machine.reset ()

Depenent de la configuració de registre / depuració del fitxer de configuració del projecte, la resposta ara mostrarà els missatges de depuració des del xip ESP a través de la connexió sèrie.

Esperem que això us permeti començar.

Recomanat: