Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tausta
ESP8266 ja sen nuorempi isoveli ESP32 ovat edullisia Wi-Fi-mikrosiruja, joissa on täysi TCP/IP-pino ja mikro-ohjainkyky. ESP8266-siru tuli valmistajayhteisön tietoon ensimmäisen kerran jo vuonna 2014. Siitä lähtien alhainen hinta (<5 USD), sen Wi-Fi-ominaisuus, sisäänrakennettu 1 tai 4 Mt: n flash-muisti ja monipuolinen kehitys on tehnyt ESP-sirusta yhden suosituimmista mikro-ohjaimista WiFi- ja IoT DIY -projekteissa.
MicroPython on laiha ja tehokas toteutus yhä suositummasta Python -ohjelmointikielestä, joka sisältää pienen osajoukon Python -standardikirjastosta ja joka on optimoitu toimimaan mikro -ohjaimilla.
Näiden kahden yhdistelmä on erittäin mielenkiintoinen vaihtoehto DIY -projekteille sekä aloittelijoille että kokeneemmille käyttäjille.
MiPy-ESP-projekti
Vuonna 2015 ensimmäiset projektini ESP8266: n kanssa alkoivat ESP-01-sirulla, joka käytti Arudionsia sirun AT-komentojen suorittamiseen sarjaliitännän kautta. Sen jälkeen käytin seuraavien vuosien aikana Arduino -ydintä ESP8266: lle sirujen ohjelmoimiseksi C ++ -kielellä. Tämä toimii hyvin, mutta Python -harrastajalle löytöni Python 3: n MicroPython -toteutuksesta oli hieno uutinen.
MiPy-ESP-projekti on joustava kehys, joka soveltaa MicroPythonia täydellisiin Python IoT -projekteihin ESP-perheen mikro-ohjaimissa.
Kehyksen on kehittänyt LeGarage-teknisen komitean ohjelmistokehittäjäryhmä (LG-TC-SWDT-01), jonka tarkoituksena on korvata jo vakiintunut C ++ -pohjainen koodi mikro-ohjainsovelluksillemme.
Projekti tarjoaa perusominaisuuksia, kuten
- Verkkoyhteysmenettelyt
- Chip -tukiaseman verkkopalvelin (wifi -yhteydelle ja sirujen verkkosivujen palvelemiselle datan I/O: lle)
- MQTT -toiminnot
- Kirjaaminen/virheenkorjaus
- Mikro -ohjaimen tapahtumien ajoitus
- Laitteiston I/O -rutiinit
Yksi pääkompakti koodikomentosarja (main.py), kaikki globaalilla kokoonpanolla (config.py).
Tämä mikrokontrollerikoodi toimii tehokkaasti ylläpitämällä siruliitäntöjä WiFi -verkkoon ja MQTT -välittäjiin. Olemassa olevat MicroPython -moduulit eri laitteistoille voidaan helposti integroida järjestelmään.
MiPy-ESP-kehyksestä on tullut kaikkien harrastuselektroniikan IoT-projektiemme selkäranka, johon kuuluu ESP-perheen mikro-ohjaimia. Se on testattu useilla ESP-perheen levyillä, kuten NodeMCU-, Wemos- ja Lolin-levyillä.
Seuraava opetusohjelma opastaa ESP-perheen mikro-ohjaimien ja MicroPythonin käytön aloittamiseen MiPy-ESP-kehyksen avulla.
Vaihe 1: Wemos D1 Mini ESP8266 -levy
MiPy-ESP-kehys toimii useimpien ESP8266-pohjaisten mikro-ohjaimien kanssa.
Wemos D1 mini -kehityskortti perustuu ESP-8266EX-siruun. 2,5 x 3,5 cm: n jalanjäljellä siinä on 4 Mt: n flash -muisti, 11 digitaalista tulo-/ulostulonappia, kaikki nastat tukevat keskeytystä, PWM, I2C, SPI, sarja ja 1 analoginen tulo, jonka maksimitulo on 3,3 V, voidaan käyttää 5 V: n virralla, siinä on mikro -USB -liitäntä ja se on yhteensopiva leipälevyn kanssa. Alhainen hinta ja sen pieni koko ovat tehneet siitä suosikki ESP -levyn.
Lisäksi kortin D1 mini pro -versiossa on mahdollisuus liittää ulkoinen antenni, mikä lisää liitäntäaluetta merkittävästi (+100 m: n kantama). Tämän lisäksi levyyn kuuluu myös erilaisia valmiita laajennuslevyjä, joiden koko on samanlainen.
Vaihe 2: MicroPythonin valmistautuminen ESP -sirulle
Tässä ensimmäisessä vaiheessa teet
- Liitä ESP -kortti tietokoneeseen USB -liitännän kautta
- Asenna Esptool -ohjelmisto sirun vilkuttamiseen
- Tyhjennä sirumuisti
- Flash -siru MicroPython -laiteohjelmistolla
- Asenna Rshell, jotta komentorivin vuorovaikutus voidaan ottaa käyttöön sirusi kanssa
- Asenna mpy-cross (.py-tiedostojen kääntämiseksi binääriksi)
Taulun liittäminen tietokoneeseen USB-korttien kautta, joissa on sisäänrakennettu USB-sarjaportti, tekee UART: n saataville tietokoneellesi ja on helpoin vaihtoehto alkuun pääsemiseksi. Jos levyllä ei ole USB -liitäntää, FTDI -moduulia, jossa on USB -sarja, voidaan käyttää GPIO -nastojen liittämiseen ulkomaailmaan, mutta tämä ei kuulu tähän opetusohjelmaan.
MiPy-ESP-koodia käyttävässä MicroPythonissa sirun flash-koon vähimmäisvaatimus on 1 Mt. On myös erityinen rakenne levyille, joiden koko on 512 kt, mutta tämä ei tue tiedostojärjestelmää, josta MiPy-ESP riippuu.
Kun käytät USB -kaapelia, tietokone saa virtansa levylle, kun se on kytketty. Tämä mahdollistaa myös ohjelmoinnin ja virheenkorjauksen sarjaliitännän kautta. Kun projektikoodi ladataan ja projektisi otetaan käyttöön, kortin virtalähteiden päälle syötetään ulkoista virtaa.
Esptool -ohjelmiston tiedot löytyvät Esptool GitHub -varastosta. Jos haluat käyttää Windows/Linux/OSX (MAC) -järjestelmää, yllä oleva linkki kattaa myös sen. Python -paketin voi asentaa
pip asenna esptool
Linux -käyttäjille Esptool -paketteja ylläpidetään Debianille ja Ubuntulle, ja ne voidaan myös asentaa
sudo apt asentaa esptool
ESP -flash -muistin pyyhkiminen Esptoolia käyttämällä ESP -flash -muisti tyhjennetään komennolla
esptool.py --port /dev /ttyUSB0 erase_flash
MicroPyton -laiteohjelmiston lataaminen MicroPython -laiteohjelmisto sijaitsee.bin -tiedostossa, jonka voi ladata MicroPython -sivustosta.
Repon nykyinen projektin päähaara on testattu ja toimii Micropython v.1.12: n kanssa. Varmistaaksesi MiPY-ESP-kehyksen onnistumisen, lataa tiedosto 'esp8266-20191220-v1.12.bin' tästä linkistä ja kirjoita laiteohjelmisto sirulle komennolla:
esptool.py --port /dev /ttyUSB0 --baud 460800 write_flash --flash_size = havaitse 0 esp8266-20191220-v1.12.bin
Rshellin asennus Rshell -paketti mahdollistaa komentorivin vuorovaikutuksen sirulle asennetun MicroPython -ympäristön kanssa. Se löytyy tästä linkistä. Rshell on yksinkertainen kuori, joka toimii isäntänä ja käyttää MicroPythonin raw-REPL-protokollaa python-katkelmien lähettämiseen näppäimistöön tiedostojärjestelmätietojen saamiseksi ja tiedostojen kopioimiseksi MicroPython-tiedostojärjestelmään ja sieltä. REPL on lyhenne sanoista Read Evaluate Print Loop, ja se on nimi, joka annetaan interaktiiviselle MicroPython -kehotteelle, jota voit käyttää ESP8266 -laitteessa. REPL: n käyttäminen on ylivoimaisesti helpoin tapa testata koodisi ja suorittaa komentoja. Asenna Rshell komennolla:
sudo pip asenna rshell
Asentamalla mpy-cross-kääntäjä MicroPython voidaan käyttää sirutiedostojärjestelmään ladattuja ascii.py-tiedostoja. MicroPython määrittelee myös.mpy -tiedostojen käsitteen, joka on binäärisäiliötiedostomuoto, joka sisältää valmiiksi kootun koodin ja joka voidaan tuoda tavallisen.py -moduulin tapaan. Kääntämällä.py -tiedostot.mpy -tiedostoon lisää RAM -muistia juoksevalle koodillesi - ja tämä on tarpeen, jotta MiPy -ESP -kehyksen ydinmoduuli toimii.
MiPy-ESP-koodin käyttöönottoa varten mpy-cross MicroPython cross-kääntäjä kääntää.py-komentosarjat.mpy-tiedostoon ennen sirun lataamista. Asenna mpy-cross-paketti tämän linkin ohjeiden mukaisesti. Vaihtoehtoisesti mpy-cross-komento voidaan asentaa Python pip -komennolla tai suorittaa mpy-cross-kansion polulta, jos kloonat MicroPython-arkiston täältä GitHubista.
Sinulla on nyt MicroPython ja kaikki tarvittavat työkalut asennettuna ensimmäisen MiPy-ESP-projektisi rakentamiseen
Vaihe 3: MiPy-ESP: n käytön aloittaminen
Tässä vaiheessa teet
Lataa MyPy-ESP-kehys
MiPy-ESP-kehyksen lataaminen MiPy-ESP-projekti löytyy GitHubista tästä koodivarastosta. GitHubista voit ladata arkiston tiedostorakenteen tai kloonata sen tietokoneellesi
git -klooni
Kun koodivarasto on asennettu tietokoneellesi, sinulla on nyt kaikki koodimoduulit, joita tarvitset valmiiden ESP IoT -projektien rakentamiseen. Lisätietoja työkalupakista seuraavassa vaiheessa.
Vaihe 4: MiPy-ESP-puitearkkitehtuuri
Tässä vaiheessa teet
oppia MiPy-ESP-koodin työnkulusta
MiPy-ESP-koodiarkkitehtuuri
Kaikki Python-kehysmoduulit löytyvät MiPY-ESP-koodivaraston /src-kansiosta. Src/core -kansio sisältää ydinmoduulit, jotka menevät jokaiseen projektiin. Src/drivers -kansiossa on valikoima moduuleja eri laitteille, jotka liitetään siruun. Src/utility -kansio sisältää valinnaisia apumoduuleja, jotka voidaan sisällyttää projektiin.
Tiedostot main.py ja config.py löytyvät kansiosta src/. Nämä ovat tärkeimmät muokattavat tiedostot projektin rakentamiseksi:
config.py:
Tämä tiedosto on projektisi yleinen määritystiedosto. Siinä on erilaisia asetuksia, joissa kaikissa on kuvaavia kommentteja.
main.py:
Tämä on mikro-ohjaimen koodisilmukan pääskripti. Se sisältää sovelluskohtaisen koodin kehyksessä. Sirun käynnistyksen yhteydessä main.py suorittaa ja tuo kaikki projektista riippuvat moduulit annetuilla panoksilla config.py-tiedostosta. Yllä oleva vuokaavio näyttää main.py -komentosarjan asettelun.
Yllä oleva kuva kuvaa main.py: n työnkulkua:
- Käynnistyksen yhteydessä koodi yrittää yhdistää sirun Wi-Fi-verkkoonAiemmin käytetyt verkot ja niiden salasanat (sirulle salatut) tallennetaan flash-muistiin. SSID1 ":" Salasana "," SSID ":" Salasana2 "}. Tämän tiedoston tietyt verkot tallennetaan, salasanat salataan ja tiedosto poistetaan käynnistyksen yhteydessä.
- Jos tunnettuja verkkoja ei löydy, koodi määrittää tukiaseman (AP) verkkopalvelimen Sirun AP -palvelimen SSID ja salasana asetetaan config.py -tiedostoon. Kirjautumalla sirun SSID-tunnukseen, verkkosivu, jolla siru kirjaudutaan Wi-Fi-verkkoon, näytetään osoitteessa 192.168.4.1 Havaitut verkot näkyvät valikossa tai SSID voidaan syöttää manuaalisesti (piilotetut verkot) yhdessä Wi-Fi-salasanan kanssa. Kun siru on yhdistetty onnistuneesti Wi-Fi-verkkoon, tukiasemapalvelin sammuu ja main.py-koodi jatkaa seuraaviin vaiheisiin.
- Main.py: n Asetukset -osiossa
- toimintoja töille ja takaisinsoittoille (jne. MQTT -takaisinsoitot) ja säännöllisille tapahtumille.
- Juoksutoiminnoille on asetettu erilaisia ajastettuja töitä.
- MQTT -välittäjäasiakas on perustettu
-
Koodi menee sitten mikro-ohjaimen pääsilmukkaan,
- jatkuvasti tarkistaa verkko- ja MQTT -välittäjäyhteydet,
- MQTT -tilaukset,
- laitteiston I/O
- ja aikataulutetut työt.
- Jos verkko- tai MQTT-välittäjäyhteys katkeaa, koodi yrittää luoda uudelleen.
Vaihe 5: Projektikoodin valmistelu
Tässä vaiheessa teet
- oppia MiPy-ESP-arkiston tiedostorakenteesta
- valmistele projektikoodisi sirun lataamista varten
Arkiston kansiorakenne Yllä oleva kuva kuvaa arkiston kansiorakennetta ja luettelee kehyksen nykyiset moduulit. Projektisi on vaiheita src/ kansiossa. Ydin MiPy-ESP-kehysmoduulit sijaitsevat src/core-ohjelmassa, valinnaiset apuohjelmamoduulit src/apuohjelmat -laitteistossa ja laitteistomoduulit src/-ohjaimissa.
Useimmat saatavilla olevat MicroPython -laitteistokirjastot voivat siirtyä ohjaimiin/ kansioon ilman muutoksia. Kaikki nykyiset ohjaimet testataan MiPy-ESP-kehyksellä. Apuohjelmien/ kansion moduuleja lisätään lisää niiden tullessa eloon.
Projektikoodin vaiheistus Projektikohtainen koodisi tulee sijoittaa src/ kansioon. Main.py- ja config.py -tiedostot ovat jo muokattavissa. Kopioi myös halutut projektin apuohjelmat src/utility ja src/drivers -src/.
Jos haluat toimittaa tunnetut Wi-Fi-verkot ja salasanat sirulle, lisää tiedosto wifi.json kohteeseen src/.
Toimitettua Makefileä voidaan käyttää tiedostojen valmisteluun sirulle siirtämiseksi kokoamalla.py -tiedostot / src -tiedostoon, kokoamalla ydinmoduulit ja siirtämällä kootut tiedostot uuteen kansioon nimeltä build / komennolla
saada rakentamaan
Koontiversiossa olevat tiedostot ovat valmiita ladattavaksi sirutiedostojärjestelmään. Oletuksena main.py ja config.py eivät ole käännetty binääriksi, jotta niihin pääsee helposti käsiksi käytettävien sirujen tarkastamiseksi. Käsky:
tehdä puhtaiksi
Poistaa koontiversion/ kansion ja sen sisällön.
Vaihe 6: Koodin kokoaminen ja lataaminen mikro -ohjaimeen
Tässä osiossa saat
- lataa valmiit tiedostot koontiversiossa/ viimeisestä osasta
- käynnistä ja seuraa käynnissä olevaa koodia
Rakennuksen/ tiedostojen lataaminen Rshellillä
Lataa kaikki /build -hakemiston tiedostot ESP -sirulle Rshellin avulla. Kun mikro -ohjain on kytketty USB: hen, käynnistä Rshell komennolla koontiversiosta/ kansiosta
rshell -p /dev /ttyUSB0
Tarkista sitten sirutiedostot (jos niitä on)
ls /näppäimistö
Kaikki sirulla olevat tiedostot voidaan poistaa
rm /näppäimistö/*.*
Kopioi kaikki rakennustiedostot/ sirulle:
cp *. * /näppäimistö
Käynnistä sitten interaktiivinen Python -pääte komennolla
repl
Voit nyt kutsua Python-komentoja tai tuoda moduuleja ja seurata sirun sarjalähtöä MiPy-ESP-kirjausmoduulista.
Käynnistä siru uudelleen painamalla nollauspainiketta tai komentoriviltä
tuonti pää
tai
tuontikone
ja sitten
machine.reset ()
Riippuen kirjaus-/virheenkorjausasetuksista projektin määritystiedostossa, repl näyttää nyt ESP -sirun virheenkorjausviestit sarjayhteyden kautta.
Tämän pitäisi toivottavasti päästä alkuun.