Inhoudsopgave:

Aan de slag met Python voor ESP8266 & ESP32: 6 stappen
Aan de slag met Python voor ESP8266 & ESP32: 6 stappen

Video: Aan de slag met Python voor ESP8266 & ESP32: 6 stappen

Video: Aan de slag met Python voor ESP8266 & ESP32: 6 stappen
Video: ESPHome Installation Guide: First Steps 2024, Juli-
Anonim
Aan de slag met Python voor ESP8266 & ESP32
Aan de slag met Python voor ESP8266 & ESP32

achtergrond

De ESP8266 en zijn jongere grote broer ESP32 zijn goedkope wifi-microchips met volledige TCP/IP-stack en microcontroller-mogelijkheden. De ESP8266-chip kwam voor het eerst onder de aandacht van de makersgemeenschap in 2014. Sindsdien zijn de lage prijs (<5 USD), de Wi-Fi-mogelijkheden, een ingebouwd flashgeheugen van 1 of 4 MB en een verscheidenheid aan beschikbare boards, heeft de ESP-chip tot een van de meest populaire microcontrollers voor wifi- en IoT-doe-het-zelfprojecten gemaakt.

MicroPython is een slanke en efficiënte implementatie van de steeds populairder wordende programmeertaal Python die een kleine subset van de Python-standaardbibliotheek bevat en is geoptimaliseerd om op microcontrollers te draaien.

De combinatie van deze twee is een zeer interessante optie voor doe-het-zelfprojecten, zowel voor beginners als voor meer gevorderde gebruikers.

Het MiPy-ESP-project

In 2015 begonnen mijn eerste projecten met ESP8266 met de ESP-01-chip met Arudions voor het uitvoeren van chip-AT-commando's via een seriële verbinding. Daarna heb ik de volgende jaren de Arduino-kern voor ESP8266 toegepast voor het programmeren van de chips met de C++-taal. Dit werkt prima, maar voor een Python-liefhebber was mijn ontdekking van de MicroPython-implementatie van Python 3 geweldig nieuws.

Het MiPy-ESP-project is een flexibel raamwerk dat MicroPython toepast voor full-stack Python IoT-projecten op microcontrollers uit de ESP-familie.

Het framework is ontwikkeld door het LeGarage Technical Comittee Software Developer Team (LG-TC-SWDT-01) met als doel de reeds bestaande op C++ gebaseerde code voor onze microcontroller-applicaties te vervangen.

Het project biedt basisfuncties zoals:

  • Procedures voor netwerkverbinding
  • Chip access point webserver (voor wifi verbinding en serveren van chip webpagina's voor data I/O)
  • MQTT-functionaliteiten
  • Loggen/foutopsporing
  • Gebeurtenisplanning microcontroller
  • Hardware I/O-routines

Met één hoofdcompact codescript (main.py), allemaal met globale configuratie (config.py).

Deze mictocontroller-code wordt uitgevoerd met robuust onderhoud van chipverbindingen met wifi-netwerk en MQTT-makelaars. Bestaande MicroPython-modules voor verschillende hardware kunnen eenvoudig in het systeem worden geïntegreerd.

Het MiPy-ESP-framework is de ruggengraat geworden van al onze hobby-elektronica IoT-projecten met microcontrollers uit de ESP-familie. Het is getest op verschillende boards uit de ESP-familie, zoals de NodeMCU-, Wemos- en Lolin-boards.

De volgende zelfstudie is een handleiding om aan de slag te gaan met microcontrollers uit de ESP-familie en MicroPython met behulp van het MiPy-ESP-framework.

Stap 1: Het Wemos D1 Mini ESP8266-bord

Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord
Het Wemos D1 Mini ESP8266-bord

Het MiPy-ESP-framework werkt met de meeste op ESP8266 gebaseerde microcontrollers.

Het Wemos D1 mini-ontwikkelbord is gebaseerd op de ESP-8266EX-chip. Op een voetafdruk van 2,5 x 3,5 cm, beschikt hij over 4 MB flash-geheugen, 11 digitale input/output-pinnen, alle pinnen ondersteunen interrupt, PWM, I2C, SPI, seriële en 1 analoge input met een maximale input van 3,3 V, kan werken op 5 V-voeding, heeft een micro-USB-aansluiting en is breadboard-compatibel. De lage prijs en het kleine formaat hebben het tot mijn favoriete ESP-bord gemaakt.

Bovendien wordt de D1 mini pro-versie van het bord geleverd met de mogelijkheid om een externe antenne aan te sluiten, waardoor het verbindingsbereik aanzienlijk wordt vergroot (+100 m bereik). Daar komt nog bij dat het bord ook wordt geleverd met een verscheidenheid aan kant-en-klare uitbreidingsborden met een vergelijkbaar compact formaat.

Stap 2: Klaarmaken voor MicroPython op de ESP-chip

Voorbereidingen treffen voor MicroPython op de ESP-chip
Voorbereidingen treffen voor MicroPython op de ESP-chip

In deze eerste stap zul je:

  • Sluit het ESP-bord via USB aan op uw computer
  • Installeer de Esptool-software voor het flashen van de chip
  • Wis chipgeheugen
  • Flash de chip met de MicroPython-firmware
  • Installeer Rshell voor het inschakelen van opdrachtregelinteractie met uw chip
  • Installeer mpy-cross (voor compilatie van.py-bestanden naar binair)

Door het bord op uw computer aan te sluiten via USBBoards met een ingebouwde USB-seriële poort maakt de UART beschikbaar voor uw pc en is de gemakkelijkste optie om aan de slag te gaan. Voor boards zonder USB-aansluiting kan een FTDI-module met USB naar serieel worden gebruikt om de GPIO-pinnen voor flashen aan te sluiten op de buitenwereld, maar dit wordt niet behandeld in deze tutorial.

Voor MicroPython die de MiPy-ESP-code gebruikt, is de minimumvereiste voor de flash-chipgrootte 1 MB. Er is ook een speciale build voor boards met 512kB, maar deze heeft geen ondersteuning voor een bestandssysteem, waarvan MiPy-ESP afhankelijk is.

Wanneer u een USB-kabel gebruikt, wordt het bord gevoed door uw computer terwijl het is aangesloten. Dit maakt ook programmeren en debuggen via de seriële verbinding mogelijk. Wanneer de projectcode is geüpload en uw project is geïmplementeerd, wordt externe voeding toegepast via de voedingspinnen van het bord.

Esptool installeren Informatie over de Esptool-software is te vinden in de Esptool GitHub-repository. Als je Windows/Linux/OSX(MAC) wilt gebruiken, dekt de bovenstaande link dat ook. Het Python-pakket kan worden geïnstalleerd door:

pip install esptool

Voor Linux-gebruikers worden pakketten voor Esptool onderhouden voor Debian en Ubuntu en kunnen ze ook worden geïnstalleerd met

sudo apt install esptool

ESP-flashgeheugen wissen Met Esptool wis je vervolgens het ESP-flashgeheugen met het commando

esptool.py --port /dev/ttyUSB0 erase_flash

De MicroPyton-firmware downloaden De MicroPython-firmware bevindt zich in een.bin-bestand dat kan worden gedownload van de MicroPython-website.

De huidige projectmastertak van de repo is getest en is operationeel met Micropython v.1.12. Om succes met het MiPY-ESP-framework te garanderen, downloadt u het bestand 'esp8266-20191220-v1.12.bin' via deze link en schrijft u de firmware naar de chip met het commando:

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

Rshell installeren Het Rshell-pakket maakt opdrachtregelinteractie mogelijk met uw MicroPython-omgeving die op de chip is geïnstalleerd. Het is te vinden in deze link. Rshell is een eenvoudige shell die op de host draait en MicroPython's raw-REPL gebruikt om python-fragmenten naar het pyboard te sturen om informatie over het bestandssysteem te krijgen en om bestanden van en naar het bestandssysteem van MicroPython te kopiëren. REPL staat voor Read Evaluate Print Loop en is de naam die wordt gegeven aan de interactieve MicroPython-prompt die u kunt openen op de ESP8266. Het gebruik van de REPL is verreweg de gemakkelijkste manier om uw code uit te testen en opdrachten uit te voeren. Installeer Rshell met het commando:

sudo pip install rshell

De mpy-cross-compiler installeren MicroPython kan worden toegepast met ascii.py-bestanden die zijn geüpload naar het chipbestandssysteem. MicroPython definieert ook het concept van.mpy-bestanden, een binair containerbestandsformaat dat voorgecompileerde code bevat en dat kan worden geïmporteerd als een normale.py-module. Door.py-bestanden naar.mpy te compileren, komt er meer RAM-geheugen beschikbaar voor uw actieve code - en dit is nodig om een functionerende kernmodule van het MiPy-ESP-framework te hebben.

Voor MiPy-ESP-code-implementatie compileert een mpy-cross MicroPython cross-compiler de.py-scripts naar.mpy voordat de chip wordt geüpload. Installeer het mpy-cross-pakket volgens de instructies in deze link. Als alternatief kan de mpy-cross-opdracht worden geïnstalleerd door de Python pip-opdracht of worden uitgevoerd vanuit het mpy-cross-mappad als u de MicroPython-repository hier vanuit GitHub kloont.

Je hebt nu MicroPython en alle benodigde tools geïnstalleerd om aan de slag te gaan met het bouwen van je eerste MiPy-ESP-project

Stap 3: Aan de slag met MiPy-ESP

Aan de slag met MiPy-ESP
Aan de slag met MiPy-ESP

In deze stap zul je

Download het MyPy-ESP-framework

Het MiPy-ESP-framework downloaden Het MiPy-ESP-project is te vinden op GitHub in deze coderepository. Van GitHub kunt u de bestandsstructuur van de repository downloaden of deze naar uw computer klonen door:

git clone

Nu de coderepository op uw computer is geïnstalleerd, beschikt u nu over alle codemodules die u nodig hebt om een kant-en-klaar ESP IoT-project te bouwen. Meer details over de toolbox in de volgende stap.

Stap 4: De MiPy-ESP Framework-architectuur

De MiPy-ESP Framework-architectuur
De MiPy-ESP Framework-architectuur

In deze stap zul je

meer informatie over de MiPy-ESP-codeworkflow

MiPy-ESP code-architectuur

Alle Python-frameworkmodules zijn te vinden in de /src-map van de MiPY-ESP-coderepository. De map src/core bevat de kernmodules die in elk project passen. De map src/drivers heeft een selectie van modules om verschillende hardware op uw chip aan te sluiten. De map src/utilities bevat optionele hulpprogramma-modules die u in uw project kunt opnemen.

De bestanden main.py en config.py zijn te vinden in de src/ map. Dit zijn de belangrijkste bestanden die u moet bewerken om uw project te bouwen:

config.py:

Dit bestand is het globale configuratiebestand voor uw project. Het heeft verschillende instellingen, allemaal met beschrijvende opmerkingen in het bestand.

hoofd.py:

Dit is het hoofdscript voor de codelus van de microcontroller. Het bevat de applicatiespecifieke code in het framework. Bij het opstarten van de chip start en importeert main.py alle projectafhankelijke modules met gegeven invoer uit het config.py-bestand. Het bovenstaande stroomdiagram toont de lay-out van het main.py-script.

De bovenstaande figuur beschrijft de workflow van main.py:

  1. Bij het opstarten probeert de code de chip te verbinden met het wifi-netwerk. Eerder toegepaste netwerken en hun wachtwoorden (versleuteld op de chip) worden opgeslagen in het flash-geheugen. Netwerk-SSID's en hun wachtwoorden kunnen worden geleverd in het bestand wifi.json in het formaat {" SSID1":"Wachtwoord", "SSID":"Wachtwoord2"}. De opgegeven netwerken in dit bestand worden opgeslagen, wachtwoorden worden gecodeerd en het bestand wordt bij het opstarten verwijderd.
  2. Als er geen reeds bekende netwerken worden gevonden, stelt de code een toegangspunt (AP) webserver in. De SSID en het wachtwoord van de chip AP-server worden ingesteld in het config.py-bestand. Door in te loggen op de chip SSID, wordt een webpagina voor aanmelding van de chip naar Wi-Fi geserveerd op 192.168.4.1. Gedetecteerde netwerken worden weergegeven in een menu, of SSID kan handmatig worden ingevoerd (verborgen netwerken) samen met Wi-Fi-wachtwoord. Na succesvolle verbinding van de chip met Wi-Fi, wordt de AP-server afgesloten en gaat de main.py-code verder met de volgende stappen.
  3. In de sectie Setup van main.py,

    • functies voor jobs en callbacks (etc. MQTT callbacks) en reguliere evenementen zijn gedefinieerd.
    • Er zijn verschillende getimede taken voor lopende functies ingesteld.
    • MQTT-makelaarscliënt is gevestigd
  4. De code gaat dan in de hoofdlus van de microcontroller,

    • continu netwerk- en MQTT-brokerverbindingen controleren,
    • MQTT-abonnementen,
    • hardware I/O
    • en geplande banen.
    • Bij verloren netwerk- of MQTT-brokerverbinding probeert de code opnieuw tot stand te brengen.

Stap 5: Uw projectcode voorbereiden

Uw projectcode voorbereiden
Uw projectcode voorbereiden
Uw projectcode voorbereiden
Uw projectcode voorbereiden

In deze stap zul je

  • meer informatie over de bestandsstructuur van de MiPy-ESP-repository
  • bereid uw projectcode voor op chipupload

Mappenstructuur repository De bovenstaande afbeelding beschrijft de mappenstructuur van de repository en geeft een overzicht van de huidige modules van het framework. Uw project is fasen in de src/ map. Core MiPy-ESP-frameworkmodules bevinden zich in src/core, optionele hulpprogrammamodules in src/utilities en hardwaremodules in src/drivers.

De meeste beschikbare MicroPython-hardwarebibliotheken kunnen zonder enige wijziging naar de stuurprogramma's/map gaan. Alle aanwezige drivers zijn getest met het MiPy-ESP framework. Met betrekking tot modules in de hulpprogramma's/ map, zullen er meer worden toegevoegd als ze tot leven komen.

Staging van projectcodeUw projectspecifieke code moet in de src/ map worden geplaatst. Er zijn al de main.py- en config.py-bestanden die u kunt bewerken. Kopieer ook de gewenste projecthulpprogramma's van src/utilities en src/drivers naar src/.

Als je bekende wifi-netwerken en wachtwoorden op de chip wilt plaatsen, voeg dan het bestand wifi.json toe aan src/.

Compileren en voorbereiden voor upload Een meegeleverde Makefile kan worden toegepast voor het voorbereiden van bestanden voor overdracht naar de chip door.py-bestanden in /src te compileren, de kernmodules te compileren en de gecompileerde bestanden over te brengen naar een nieuwe map met de naam build/ met het commando

maken bouwen

De bestanden in build zijn klaar om te uploaden naar het chipbestandssysteem. Standaard zijn de main.py en config.py niet gecompileerd naar binair, om ze gemakkelijk toegankelijk te maken voor inspectie van ingezette chips. Het bevel:

schoon maken

Verwijdert de build/map en de inhoud ervan.

Stap 6: De code compileren en uploaden naar de microcontroller

De code compileren en uploaden naar de microcontroller
De code compileren en uploaden naar de microcontroller
De code compileren en uploaden naar de microcontroller
De code compileren en uploaden naar de microcontroller

In deze sectie zul je

  • upload de voorbereide bestanden in build/ uit de laatste sectie
  • start en controleer de lopende code

Build/bestanden uploaden met Rshell

Upload alle bestanden in de /build-map naar de ESP-chip met behulp van Rshell. Met de microcontroller aangesloten op USB, start Rshell vanuit de build/map met het commando

rshell -p /dev/ttyUSB0

Inspecteer vervolgens de chipbestanden (indien aanwezig) door:

ls /pyboard

Alle bestanden op de chip kunnen worden verwijderd door:

rm /pyboard/*.*

Kopieer alle projectbestanden in build/ naar de chip:

cp *.* /pyboard

Start vervolgens de interactieve Python-terminal met het commando

antwoord

U kunt nu Python-commando's aanroepen of modules importeren en de seriële uitvoer van de chip bewaken vanaf de MiPy-ESP-loggermodule.

Start de chip opnieuw door op de resetknop te drukken, of vanaf de opdrachtregel door:

importeer hoofd

of

importmachine

en dan

machine.reset()

Afhankelijk van uw instellingen voor loggen/debuggen in het configuratiebestand van het project, toont de repl nu foutopsporingsberichten van de ESP-chip via de seriële verbinding.

Dit zou je hopelijk op weg moeten helpen.

Aanbevolen: