Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Pozadina
ESP8266 i njegov mlađi veliki brat ESP32 jeftini su Wi-Fi mikročipovi s punim TCP/IP stogom i mogućnostima mikrokontrolera. Čip ESP8266 prvi je put privukao pozornost zajednice proizvođača još 2014. Od tada, niska cijena (<5 USD), njegove Wi-Fi mogućnosti, ugrađena flash memorija od 1 ili 4 MB i raznovrsni dostupni razvoj ploče, učinio je ESP čip jednim od najpopularnijih mikrokontrolera za WiFi i IoT DIY projekte.
MicroPython je mršava i učinkovita implementacija sve popularnijeg programskog jezika Python koji uključuje mali podskup standardne knjižnice Python i optimiziran je za rad na mikrokontrolerima.
Kombinacija ova dva načina vrlo je zanimljiva za DIY projekte, kako za početnike tako i za naprednije korisnike.
Projekt MiPy-ESP
Još 2015. moji prvi projekti s ESP8266 započeli su s čipom ESP-01 koristeći Arudions za pokretanje AT naredbi čipova preko serijske veze. Nakon toga, tijekom sljedećih godina primijenio sam Arduino jezgru za ESP8266 za programiranje čipova s jezikom C ++. Ovo dobro funkcionira, ali za ljubitelje Pythona moje otkriće implementacije MicroPythona Pythona 3 bila je sjajna vijest.
Projekt MiPy-ESP fleksibilan je okvir koji primjenjuje MicroPython za full-stack Python IoT projekte na mikrokontrolerima iz obitelji ESP.
Okvir je razvio tim za razvoj softvera LeGarage Technical Comittee (LG-TC-SWDT-01) s ciljem zamjene već uspostavljenog koda temeljenog na C ++ za naše aplikacije mikrokontrolera.
Projekt pruža osnovne značajke kao što su
- Postupci povezivanja na mrežu
- Web poslužitelj pristupne točke za čip (za WiFi vezu i posluživanje čip web stranica za unos/izlaz podataka)
- MQTT funkcionalnosti
- Zapisivanje/ispravljanje pogrešaka
- Zakazivanje događaja mikrokontrolera
- Hardverske I/O rutine
S jednom glavnom kompaktnom skriptom koda (main.py), sve s globalnom konfiguracijom (config.py).
Ovaj kôd za mikrokontroler radi sa robusnim održavanjem veza čipova s WiFi mrežom i posrednicima MQTT. Postojeći moduli MicroPython za različiti hardver mogu se jednostavno integrirati u sustav.
Okvir MiPy-ESP postao je okosnica svih naših IoT projekata u hobi elektronici koji uključuju mikrokontrolere iz obitelji ESP. Testirano je na nekoliko ploča obitelji ESP, poput ploča NodeMCU, Wemos i Lolin.
Sljedeći vodič je vodič za početak rada s mikrokontrolerima obitelji ESP i MicroPythonom pomoću okvira MiPy-ESP.
Korak 1: Wemos D1 Mini ESP8266 ploča
Okvir MiPy-ESP radi s većinom mikrokontrolera zasnovanih na ESP8266.
Mini razvojna ploča Wemos D1 temelji se na čipu ESP-8266EX. Na dimenzijama 2,5 x 3,5 cm, ima flash memoriju od 4 MB, 11 digitalnih ulazno/izlaznih pinova, sve pinove podržava prekid, PWM, I2C, SPI, serijski i 1 analogni ulaz s maksimalnim ulazom od 3,3 V, može raditi na napajanju od 5 V, ima mikro USB priključak i kompatibilan je s matičnom pločom. Niska cijena i mala veličina učinili su je mojom omiljenom ESP pločom.
Osim toga, verzija ploče D1 mini pro dolazi s opcijom za spajanje vanjske antene, čime se značajno povećava domet povezivanja (domet +100 m). Uz to, ploča također dolazi s raznim vanjskim kutijama produžnih ploča slične kompaktne veličine.
Korak 2: Priprema za MicroPython na ESP čipu
U ovom prvom koraku ćete
- Spojite ESP ploču putem USB -a na računalo
- Instalirajte softver Esptool za bljeskanje čipa
- Izbrišite memoriju čipa
- Flash čip s MicroPython firmware
- Instalirajte Rshell za omogućavanje interakcije naredbenog retka s vašim čipom
- Instalirajte mpy-cross (za kompilaciju.py datoteka u binarni oblik)
Povezivanje ploče s računalom putem USB ploča s ugrađenim USB serijskim priključkom čini UART dostupnim za vaše računalo i najjednostavnija je mogućnost početka. Za ploče bez USB veze, FTDI modul sa USB -om na serijski priključak može se koristiti za spajanje GPIO pinova za bljeskanje spojenih na vanjski svijet, ali to nije obrađeno u ovom vodiču.
Za MicroPython koji koristi kod MiPy-ESP, minimalni zahtjev za veličinu bljeskalice čipa je 1 MB. Postoji i posebna verzija za ploče s 512 KB, ali nema podršku za datotečni sustav, o čemu ovisi MiPy-ESP.
Kad koristite USB kabel, ploču napaja vaše računalo dok je spojena. To također omogućuje programiranje i ispravljanje pogrešaka putem serijske veze. Kad se učita kôd projekta i projekt implementira, vanjsko napajanje se primjenjuje preko pinova za napajanje ploče.
Instaliranje EsptoolInformacije o softveru Esptool mogu se pronaći u spremištu Esptool GitHub. Ako želite koristiti Windows/Linux/OSX (MAC), gornja veza također pokriva to. Paket Python može se instalirati putem
pip install esptool
Za korisnike Linuxa, paketi za Esptool održavaju se za Debian i Ubuntu, a mogu se instalirati i s
sudo apt install esptool
Brisanje ESP flash memorije Korištenjem Esptoola, naredbom brišete ESP flash memoriju
esptool.py --port /dev /ttyUSB0 erase_flash
Preuzimanje firmvera MicroPytonMirware programa MicroPython nalazi se u.bin datoteci koju možete preuzeti s web stranice MicroPython.
Trenutna glavna grana repo projekta je testirana i radi s Micropythonom v.1.12. Kako biste osigurali uspjeh s okvirom MiPY-ESP, preuzmite datoteku 'esp8266-20191220-v1.12.bin' s ove veze i upišite firmver na čip naredbom:
esptool.py --port /dev /ttyUSB0 --baud 460800 write_flash --flash_size = detektiraj 0 esp8266-20191220-v1.12.bin
Instaliranje Rshella Paket Rshell omogućuje interakciju naredbenog retka s vašim MicroPython okruženjem instaliranim na čipu. Može se pronaći na ovoj poveznici. Rshell je jednostavna ljuska koja radi na hostu i koristi MicroPythonov raw-REPL za slanje isječaka pythona na pyboard radi dobivanja informacija o datotečnom sustavu te za kopiranje datoteka u i iz datotečnog sustava MicroPython. REPL označava Read Evaluate Print Loop (Čitanje evaluirane ispisne petlje) i naziv je za interaktivni upit MicroPython kojem možete pristupiti na ESP8266. Korištenje REPL -a daleko je najjednostavniji način testiranja koda i izvođenja naredbi. Instalirajte Rshell naredbom:
sudo pip install rshell
Instaliranje mpy-cross kompajlera MicroPython se može primijeniti s ascii.py datotekama prenijetim u datotečni sustav čipa. MicroPython također definira koncept.mpy datoteka koje su binarni format datoteke spremnika koji sadrži unaprijed kompilirani kôd i koje se mogu uvesti kao normalni.py modul. Sastavljanjem.py datoteka u.mpy, više RAM memorije bit će dostupno za vaš kôd za pokretanje - a to je potrebno kako bi imali funkcionalni osnovni modul okvira MiPy -ESP.
Za implementaciju koda MiPy-ESP, unakrsni prevoditelj mpy-cross MicroPython sastavlja.py skripte u.mpy prije učitavanja čipa. Instalirajte paket mpy-cross prema uputama na ovoj poveznici. Alternativno, naredbu mpy-cross možete instalirati Python pip naredbom ili pokrenuti s putanje mape mpy-cross ako ovdje klonirate spremište MicroPython s GitHub-a.
Sada imate instaliran MicroPython i sve potrebne alate za početak izgradnje vašeg prvog MiPy-ESP projekta
Korak 3: Početak rada s MiPy-ESP-om
U ovom koraku ćete
Preuzmite okvir MyPy-ESP
Preuzimanje MiPy-ESP okviraProjekt MiPy-ESP može se pronaći na GitHub-u u ovom spremištu koda. S GitHub -a možete preuzeti strukturu datoteke spremišta ili je klonirati na računalo pomoću
git clone
S spremištem koda instaliranim na vašem računalu, sada imate sve module koda koji su vam potrebni za izradu gotovog ESP IoT projekta. Više pojedinosti o alatu u sljedećem koraku.
Korak 4: MiPy-ESP okvirna arhitektura
U ovom koraku ćete
saznati o tijeku rada MiPy-ESP koda
Arhitektura koda MiPy-ESP
Svi Python okvirni moduli nalaze se u /src mapi spremišta kodova MiPY-ESP. Mapa src/core sadrži osnovne module koji idu u svaki projekt. Mapa src/drivers ima izbor modula za različite hardvere koji se mogu povezati s vašim čipom. Mapa src/utilities sadrži izborne pomoćne module za uključivanje u vaš projekt.
Datoteke main.py i config.py nalaze se u mapi src/. Ovo su glavne datoteke za uređivanje za izradu vašeg projekta:
config.py:
Ova je datoteka globalna konfiguracijska datoteka za vaš projekt. Ima različite postavke, sve s opisnim komentarima u datoteci.
main.py:
Ovo je glavna skripta za petlju koda mikrokontrolera. Sadrži kod specifičan za aplikaciju u okviru. Nakon pokretanja čipa, main.py se pokreće i uvozi sve module ovisne o projektu s danim ulazima iz datoteke config.py. Gornji dijagram toka prikazuje izgled skripte main.py.
Gornja slika opisuje tijek rada main.py:
- Nakon pokretanja, kôd pokušava povezati čip s Wi-Fi mrežom. Ranije primijenjene mreže i njihove lozinke (šifrirane na čipu) pohranjuju se u flash memoriju. Mrežni SSID-ovi i njihove lozinke mogu se dati u datoteci wifi.json u formatu {" SSID1 ":" Lozinka "," SSID ":" Lozinka2 "}. Mreže u ovoj datoteci se pohranjuju, lozinke se šifriraju, a datoteka se briše pri pokretanju.
- Ako već nisu poznate mreže, kôd postavlja web poslužitelj pristupne točke (AP). SSID i lozinka poslužitelja AP poslužitelja postavljaju se u datoteci config.py. Prijavljivanjem na SSID čipa, web stranica za prijavu čipa na Wi-Fi poslužuje se na 192.168.4.1. Otkrivene mreže prikazane su u izborniku ili se SSID može unijeti ručno (skrivene mreže) zajedno s lozinkom za Wi-Fi. Nakon uspješnog povezivanja čipa na Wi-Fi, AP poslužitelj se isključuje, a kod main.py nastavlja sa sljedećim koracima.
-
U odjeljku Postavljanje programa main.py,
- definiraju se funkcije za poslove i povratne pozive (itd. MQTT povratne pozive) i redoviti događaji.
- Postavljeni su različiti vremenski zadaci za pokretanje funkcija.
- Uspostavljen je klijent posrednika MQTT
-
Kôd zatim ulazi u glavnu petlju mikrokontrolera,
- stalno provjeravajte mrežne i MQTT veze posrednika,
- MQTT pretplate,
- hardverski I/O
- i predviđene poslove.
- Kod izgubljene veze s mrežom ili posrednikom MQTT, kôd pokušava ponovno uspostaviti.
Korak 5: Priprema koda projekta
U ovom koraku ćete
- saznati o strukturi datoteka spremišta MiPy-ESP
- pripremite svoj projektni kod za postavljanje čipova
Struktura mape spremišta Gornja slika opisuje strukturu mape spremišta i popis trenutnih modula okvira. Vaš projekt je faza u mapi src/. Osnovni moduli okvira MiPy-ESP nalaze se u src/jezgri, izborni pomoćni moduli u src/uslužni programi i hardverski moduli u src/upravljačkim programima.
Većina dostupnih hardverskih knjižnica MicroPython može ući u upravljačke programe/ mapu bez ikakvih izmjena. Svi prisutni upravljački programi testirani su s MiPy-ESP okvirom. Što se tiče modula u uslužnim programima/ mapi, bit će dodano više kako ožive.
Postavljanje koda projekta Vaš kod specifičan za projekt treba staviti u mapu src/. Već se nalaze datoteke main.py i config.py koje možete uređivati. Također kopirajte tražene pomoćne programe projekta iz src/utilities i src/drivers u src/.
U slučaju da želite dodati čip poznatim Wi-Fi mrežama i lozinkama, dodajte datoteku wifi.json u src/.
Sastavljanje i priprema za prijenosOdgovoreni Makefile može se primijeniti za pripremu datoteka za prijenos na čip sastavljanjem.py datoteka u / src, sastavljanjem jezgri modula i prijenosom prevedenih datoteka u novu mapu pod imenom build / naredbom
napraviti graditi
Datoteke u izgradnji spremne su za prijenos u datotečni sustav čipa. Prema zadanim postavkama, main.py i config.py nisu kompajlirani u binarni format, kako bi im se lako pristupilo radi pregleda raspoređenih čipova. Naredba:
očistiti
Briše verziju/ mapu i njezin sadržaj.
Korak 6: Sastavljanje i prijenos koda na mikrokontroler
U ovom odjeljku ćete
- učitajte pripremljene datoteke u build/ iz posljednjeg odjeljka
- pokrenuti i nadzirati radni kôd
Prijenos gradnje/ datoteka s Rshell -om
Prenesite sve datoteke u /build direktorij na ESP čip pomoću Rshell -a. S mikrokontrolerom spojenim na USB, iz gradnje/ mape pokrenite Rshell naredbom
rshell -p /dev /ttyUSB0
Zatim pregledajte datoteke čipova (ako ih ima) do
ls /pyboard
Sve datoteke na čipu mogu se izbrisati pomoću
rm /pyboard/*.*
Kopirajte sve datoteke projekta u build/ na čip:
cp *. * /pyboard
Zatim naredbom pokrenite interaktivni Python terminal
repl
Sada možete pozvati Python naredbe ili uvesti module i nadzirati serijski izlaz čipa iz modula zapisnika MiPy-ESP.
Ponovno pokrenite čip pritiskom na gumb za resetiranje ili iz naredbenog retka do
import main
ili
stroj za uvoz
i onda
machine.reset ()
Ovisno o vašim postavkama zapisivanja/ispravljanja pogrešaka u konfiguracijskoj datoteci projekta, repl će sada prikazati poruke otklanjanja pogrešaka s ESP čipa putem serijske veze.
Nadajmo se da bi ovo trebalo započeti.