ESP8266 este un microcontroler de la producătorul chinez Espressif Systems cu o interfață Wi-Fi . Pe lângă Wi-Fi, microcontrolerul se distinge prin absența [1] a memoriei flash în SoC, programele utilizatorului sunt executate dintr-o memorie flash externă cu o interfață SPI .
Microcontrolerul a atras atenția în 2014 datorită lansării primelor produse bazate pe acesta la un preț neobișnuit de mic.
În primăvara lui 2016, a început producția ESP8285, combinând ESP8266 și memoria flash de 1 MB. În toamna anului 2015, Espressif a introdus dezvoltarea liniei - cipul ESP32 și modulele bazate pe acesta [2] .
Microcontrolerul nu are memorie nevolatilă de utilizator pe cip. Programul este executat dintr-un ROM extern SPI prin încărcarea dinamică a secțiunilor necesare ale programului în memoria cache de instrucțiuni. Încărcarea este bazată pe hardware, transparentă pentru programator. Sunt acceptate până la 16 MB de memorie externă de program. Interfață SPI standard, duală sau cvadruplă disponibilă.
Producătorul nu furnizează documentație pentru perifericele interne ale microcontrolerului. În schimb, oferă un set de biblioteci prin al căror API programatorul obține acces la periferice. Deoarece aceste biblioteci folosesc intensiv RAM-ul controlerului, producătorul nu indică în documente cantitatea exactă de RAM de pe cip, ci doar o estimare aproximativă a cantității de RAM care va rămâne pentru utilizator după asamblarea tuturor bibliotecilor - aproximativ 50 kB. Entuziaștii care au examinat bibliotecile ESP8266 sugerează că acesta conține 32 KB de cache de instrucțiuni și 80 KB de memorie RAM de date.
Parametrii electrici, pinouts, schemele de cablare pot fi găsite în documentele „0A-ESP8266EX_Datasheet” și „0B-ESP8266__System_Description” din Espressif SDK [4] .
Sursa programului executabil ESP8266 este setată de starea porturilor GPIO0, GPIO2 și GPIO15 la sfârșitul semnalului de resetare (adică pornirea). Cele mai interesante sunt două moduri: execuția codului din UART (GPIO0 = 0, GPIO2 = 1 și GPIO15 = 0) și din ROM extern (GPIO0 = 1, GPIO2 = 1 și GPIO15 = 0). Modul de execuție a codului de la UART este folosit pentru a flash memoria flash conectată, iar al doilea mod este un lucrător obișnuit.
În primăvara anului 2016, Espressif a lansat producția de masă a cipului ESP8285. Acum același cip conține atât SoC-ul ESP8266, cât și 1 MB de memorie flash [5] . Documentația pentru cip poate fi găsită în documentul „0A-ESP8285__Datasheet”.
În toamna anului 2015, Espressif a introdus dezvoltarea liniei - cipul ESP32. La începutul lui 2016, mostre de inginerie ale noului cip au devenit disponibile partenerilor companiei pentru testare, în septembrie 2016, ESP32 a devenit disponibil ca produs cu drepturi depline [6] [7] .
Instrumentele de dezvoltare software (kit de dezvoltare software, SDK) constau în:
Espressif distribuie gratuit kitul său de dezvoltare. Acest pachet include compilatorul GCC, bibliotecile Espressif și utilitarul de boot XTCOM. Bibliotecile sunt furnizate ca biblioteci compilate, fără cod sursă. Espressif acceptă două versiuni de SDK, una bazată pe RTOS și una bazată pe apeluri inverse [4] .
Pe lângă SDK-ul oficial, există o serie de proiecte SDK alternative [8] . Aceste SDK-uri folosesc bibliotecile Espressif sau oferă propriul echivalent de inginerie inversă a bibliotecilor Espressif.
Pentru a simplifica utilizarea microcontrolerului în proiecte tipice, este posibil să utilizați fișiere binare gata făcute, potrivite pentru încărcarea directă în ROM-ul modulelor (așa-numitul firmware ). Firmware-ul gata poate fi împărțit în mai multe grupuri în funcție de conceptul de utilizare:
Sursa programului executabil ESP8266 este setată de starea porturilor GPIO0, GPIO2 și GPIO15 la sfârșitul semnalului de resetare (adică pornirea). Cele mai interesante sunt două moduri: execuția codului din UART (GPIO0 = 0, GPIO2 = 1, GPIO15 = 0) și din ROM extern (GPIO0 = 1, GPIO2 = 1, GPIO15 = 0). Modul de execuție a codului de la UART este folosit pentru a flash memoria flash, iar al doilea mod este un lucrător obișnuit.
Există multe utilitare pentru a gestiona procesul de actualizare a firmware-ului:
Un flash SPI extern trebuie să aibă un antet specific pentru executarea corectă a codului. Structura antetului este specificată în documentația pentru utilitarul XTCOM. În rusă este aici . Utilitarele de boot știu de obicei cum să-l adauge la firmware.
Actualizați prin Wi-FiEste posibil să actualizați firmware-ul unui dispozitiv care funcționează prin Wi-Fi. Pentru a face acest lucru, memoria flash a programelor este împărțită în mai multe părți. Unul este atribuit managerului de firmware, celelalte două sunt pentru programul utilizatorului. Când doresc să actualizeze firmware-ul, noua imagine este încărcată într-o parte liberă a memoriei flash. După o verificare amănunțită a integrității imaginii nou descărcate, managerul de firmware comută steag, după care zona de memorie cu firmware-ul vechi este eliberată, iar codul este executat din noua zonă. În consecință, data viitoare actualizarea va fi încărcată într-o zonă liberă de memorie. Consultați documentul „99C-ESP8266__OTA_Upgrade” de la Espressif SDK [4] pentru detalii .
O aplicație tipică a ESP8266 ca bază hardware a Internetului lucrurilor implică cel mai adesea instalarea în case sau birouri. În acest caz, conexiunea la rețea se face la o rețea locală de acasă/la birou cu acces la Internet printr-un router . Utilizatorul dispozitivului îl poate controla folosind o tabletă sau un computer prin rețeaua sa locală sau de la distanță prin Internet.
ESP8266 poate funcționa atât ca punct de acces , cât și ca stație finală. În timpul funcționării normale LAN, ESP8266 este configurat ca stație finală. Pentru a face acest lucru, dispozitivul trebuie să seteze SSID -ul rețelei Wi-Fi și, în rețelele închise, parola de acces. Pentru configurarea inițială a acestor parametri, modul punct de acces este convenabil. În modul punct de acces, dispozitivul este vizibil în timpul unei căutări standard în rețea pe tablete și computere. Rămâne să vă conectați la dispozitiv, să deschideți pagina HTML de configurare și să setați parametrii rețelei, după care dispozitivul se va conecta în mod normal la rețeaua locală în modul stație finală.
În cazul utilizării pur locală, este posibil să lăsați întotdeauna dispozitivul în modul punct de acces, ceea ce reduce efortul utilizatorului de a-l configura.
După conectarea la o rețea Wi-Fi, dispozitivul ar trebui să primească parametrii IP ai rețelei locale. Acești parametri pot fi setați manual împreună cu setările Wi-Fi sau puteți activa orice serviciu pentru configurarea automată a parametrilor IP (de exemplu, DHCP ).
După configurarea parametrilor IP, serverul dispozitivului din rețeaua locală este de obicei accesat prin adresa sa IP, numele rețelei (dacă numele sunt acceptate de orice tehnologie, de exemplu, NBNS ) sau serviciu (dacă este acceptată căutarea automată a serviciului , de exemplu , prin protocolul SSDP ).
Adesea, accesul la dispozitiv este necesar de pe Internet. De exemplu, un utilizator verifică de la distanță starea „ casa inteligentă ” a acestuia de pe un telefon mobil , accesând direct dispozitivul. În acest caz, dispozitivul funcționează în modul server, accesat de un client extern.
De regulă, un dispozitiv bazat pe ESP8266 este situat în rețeaua locală a unui birou sau a unei case. Accesul la internet este asigurat de un router conectat pe o parte la rețeaua locală, iar pe de altă parte - la rețeaua furnizorului de internet. Furnizorul își atribuie adresa IP statică sau dinamică routerului, iar routerul traduce adresele rețelei locale în rețeaua furnizorului. În mod implicit, regulile acestei traduceri oferă vizibilitate gratuită a adreselor de Internet din rețeaua locală, dar nu permit accesul la adresele locale de pe Internet. Există mai multe modalități de a ocoli această limitare.
Configurarea NATCele mai multe routere moderne vă permit să setați reguli suplimentare pentru traducerea adreselor de rețea între rețelele locale și globale. De regulă, serverul virtual sau tehnologiile DMZ sunt utilizate pentru aceasta . Ambele tehnologii vă permit să accesați un server din rețeaua locală din rețeaua globală, cunoscând doar adresa IP atribuită routerului de către furnizor. În cazul unei adrese IP statice a unui router, aceasta poate fi adesea o soluție satisfăcătoare pentru un cerc limitat de utilizatori de sistem. Cu toate acestea, această abordare nu este întotdeauna convenabilă: trebuie să configurați manual routerul și să aflați adresa IP a routerului, care se poate schimba în mod regulat. Este relativ ușor să rezolvi problema unei adrese IP necunoscute folosind mecanismul DDNS .
DDNSPentru a accesa serverul dispozitivului, utilizatorul final trebuie să cunoască adresa IP la care se află dispozitivul. Cu toate acestea, nu este întotdeauna posibil să obțineți o adresă IP statică pentru un dispozitiv de la un furnizor de internet și este incomod să utilizați o astfel de adresă. Pentru a rezolva această problemă, au fost create servicii speciale de Internet sub denumirea generală dynamic DNS . Aceste servicii funcționează ca servere speciale cu nume fixe pe Internet. Dezvoltatorul își creează propriul cont cu un nume unic pe un astfel de serviciu. El prescrie parametrii acestui cont în dispozitiv. Un dispozitiv în modul client contactează periodic serverul de servicii, spunându-i numele contului său și adresa IP curentă. Utilizatorul final de pe Internet accesează același serviciu și primește de la acesta parametrii IP actuali ai dispozitivului. În acest caz, dispozitivul este vizibil în rețea cu un nume de domeniu de nivel al treilea, cum ar fi esp8266.ddns.org.
Principala problemă cu serviciile DDNS este garantarea existenței unui anumit serviciu. În general, doar un serviciu comercial este garantat atunci când se percepe o taxă pentru utilizarea acestuia.
Servicii IoT externePentru a atenua problema punerii la dispoziție a dispozitivului pe Internet și pentru a facilita instalarea dispozitivului pentru utilizator, au fost dezvoltate o serie de soluții. Mecanismul acestor soluții se bazează pe existența unui server special pe Internet, la care se pot conecta atât un dispozitiv IoT, cât și tableta/computerul unui utilizator. În același timp, dispozitivul funcționează în modul client, nu sunt necesare setări speciale de router sau abilități speciale de la instalator și utilizatorul dispozitivului. Schimbul de date cu dispozitivul se realizează prin acest serviciu special, ai cărui parametri trebuie introduși în dispozitiv de către dezvoltator. Răspândirea utilizării unor astfel de servicii este constrânsă de necesitatea de a vă menține serviciul pe Internet pentru o perioadă lungă de timp sau de a utiliza serviciile altor persoane cu perspective neclare pentru existența în continuare a funcțiilor gratuite sau a plății regulate pentru opțiunile comerciale.
Principala aplicație a ESP8266 este controlul unei varietăți de aparate electrocasnice prin rețele wireless. Conceptul unui astfel de control este adesea denumit „ Internet of Things ” (IoT, „Internet of Things”). Nivelul superior al IoT este reprezentat de o varietate de aplicații pentru platforme populare (Android, iOS, Windows, ...). Aceste aplicații permit dezvoltatorului de instrumente să adapteze aplicația pentru a-și controla instrumentul și să ofere utilizatorului o soluție completă. Există mai multe implementări populare ale conceptului IoT în ceea ce privește comunicarea în rețea:
Proiecte software interesante de nivel superior cu soluții bazate pe ESP8266:
Primele și cele mai populare module încorporate [21] bazate pe ESP8266 au fost produse de la compania chineză AI-Thinker [22] . De regulă, aceste module sunt puse în vânzare cu firmware care acceptă comenzi AT . Cu toate acestea, compania are propriul firmware pentru aplicația IoT, unele module pot veni cu el. Din păcate, compania acceptă doar limba chineză, ceea ce face dificilă utilizarea firmware-ului său IoT și a aplicațiilor Android pentru automatizarea amatorilor.
Inițial, modulele au fost furnizate cu memorie Flash de 512 kB. Mai târziu, firmware-ul oficial a crescut și nu mai încape într-o jumătate de megaoctet. Prin urmare, astăzi majoritatea modulelor vin cu memorie Flash de 4 MB.
Module AI-ThinkerNume | Porturi disponibile | Pasul pinului, mm | conector | Indicaţie | Antenă | Ecran | Dimensiuni, mm | Note |
---|---|---|---|---|---|---|---|---|
ESP-01 | 6 | 2,54 | 2×4 DIL | da | Urmă PCB | Nu | 14,3×24,8 | GPIO15 (RTS) scurtcircuitat la comun, nu poate fi configurat pentru controlul de ieșire sau debit. |
ESP-02 | 6 | 2,54 | 2×4 cretelate | Nu | conector U-FL | Nu | 14,2×14,2 | |
ESP-03 | zece | 2.0 | 2×7 cretelate | Nu | ceramică | Nu | 17,3×12,1 | |
ESP-04 | zece | 2.0 | 2×4 cretelate | Nu | Nici unul | Nu | 14,7×12,1 | |
ESP-05 | 3 | 2,54 | 1×5 SIL | Nu | conector U-FL | Nu | 14,2×14,2 | |
ESP-06 | unsprezece | - | zaruri 4×3 | Nu | Nici unul | da | 14,2×14,7 | Nu este aprobat de FCC |
ESP-07 | paisprezece | 2.0 | 2×8 cretelate | da | Ceramic + conector U-FL | da | 20,0×16,0 | Nu este aprobat de FCC |
ESP-08 | zece | 2.0 | 2×7 cretelate | Nu | Nici unul | da | 17,0×16,0 | Nu este aprobat de FCC |
ESP-09 | zece | - | zaruri 4×3 | Nu | Nici unul | Nu | 10,0 × 10,0 | |
ESP-10 | 3 | 2,54 | 1×5 cretelate | Nu | Nici unul | Nu | 14,2×10,0 | |
ESP-11 | 6 | 1.27 | 1×8 cretelate | Nu | ceramică | Nu | 17,3×12,1 | |
ESP-12 | paisprezece | 2.0 | 2×8 cretelate | da | Urmă PCB | da | 24,0×16,0 | Omologat FCC și CE [23] |
ESP-12-E | douăzeci | 2.0 | 2×8 cretelate | da | Urmă PCB | da | 24,0×16,0 | |
ESP-12-F | douăzeci | 2.0 | 2×8 cretelate | da | Urmă PCB | da | 24,0×16,0 | Aprobat FCC și CE. Performanță îmbunătățită a antenei. Flash de 4 MB |
ESP-13 | 16 | 0,8 | 2×9 cretelate | Nu | Urmă PCB | da | L18,0 x L20,0 | Marcat ca ″FCC″. Modulul ecranat este plasat lateral, în comparație cu modulele ESP-12. |
În tabel SIL și DIL denotă benzile de pin montate. Castellated - metalizare de-a lungul marginii plăcii pentru montarea la suprafață a modulului. Dice - tampoane sub modul, montate în stilul carcasei BGA.
Module de la alți producătoriNume | Porturi disponibile | Pasul pinului, mm | conector | Indicaţie | Antenă | Ecran | Dimensiuni, mm | Note |
---|---|---|---|---|---|---|---|---|
Olimex MOD-WIFI-ESP8266 [24] | 2 | 2,54 | Modulul UEXT | da | Urmă PCB | Nu | necunoscut | |
Olimex MOD-WIFI-ESP8266-DEV [25] | douăzeci | 2,54 | 2×11 DIL + crenelat | da | Urmă PCB | Nu | necunoscut | |
Espressif Espressif WROOM-02 [26] | optsprezece | 2,54 | 2×9 DIL | Nu | Urmă PCB | da | 18×29 | Aprobat de FCC |
SparkFun ESP8266 Thing [27] WRL-13231 | 12 | 2,54 | 2×10 DIL | da | Urmă PCB + soclu U.FL | Nu | 58x26 | Încărcător de baterie USB Li-ion |
ESP-ADC în circuit [28] | optsprezece | 2,54 | 2x9 DIL | Nu | priză U.FL | Nu | 22,9 x 14,9 | ESP8266EX |
Aproape simultan cu ESP8266 a apărut o întreagă linie de soluții similare de la alți producători. Toate folosesc o arhitectură dual-chip cu memorie de program în SPI Flash.
Entuziaștii au realizat un transmițător de televiziune cu un modulator pentru al treilea canal de televiziune pe interfața I2S a cipului ESP8266 . Acest lucru nu a necesitat nicio conductă hardware suplimentară, în afară de antena de transmisie. În același timp, funcționalitatea Wi-Fi este complet păstrată.
Microcontrolere | ||||||||
---|---|---|---|---|---|---|---|---|
Arhitectură |
| |||||||
Producătorii |
| |||||||
Componente | ||||||||
Periferie | ||||||||
Interfețe | ||||||||
OS | ||||||||
Programare |
|
RISC | Arhitecturi de procesoare bazate pe tehnologii|
---|---|