Modul wireless Arduino. Arduino - stăpânirea modulului WiFi

Instrucțiunile și diagramele de mai jos nu sunt „corecte” din punct de vedere al designului circuitului și nu trebuie utilizate în dispozitivele finale reale. Acestea sunt instrucțiuni simplificate pentru o pornire rapidă, astfel încât să puteți rula modulul ESP8266 cu un set minim de componente. Mai mult, toate aceste circuite simplificate funcționează efectiv și au fost testate personal de autor pe diferite module ESP8266. Cum se testează ESP8266

Pentru a testa ESP8266 pe care tocmai l-ați achiziționat, veți avea nevoie de o sursă de tensiune stabilizată de 3,3 volți.

Atenţie! Intervalul de tensiune de alimentare admisibil pentru modulul ESP8266 este de la 3,0 la 3,6 volți. Este garantat că furnizarea unei tensiuni de alimentare crescute a modulului va cauza defectarea ESP8266.

Pentru a testa ESP8266 ESP-01, conectați doar trei pini: VCC și CH_PD (activare chip) la o sursă de alimentare de 3,3 volți și GND la masă. Dacă nu aveți ESP-01, dar un alt modul și GPIO15 este ieșit pe el, atunci va trebui suplimentar să conectați GPIO15 la masă.

Dacă firmware-ul din fabrică este pornit cu succes pe modulul ESP8266, LED-ul roșu se va aprinde (indicatorul de alimentare, pe unele versiuni ale modulului, de exemplu ESP-12, poate fi absent) și LED-ul albastru va clipi de câteva ori (acesta este un indicator al transferului de date de la modul la terminal prin linia TX-RX, poate avea o culoare diferită) și un nou punct de acces cu numele „ESP” ar trebui să apară pe rețeaua dumneavoastră wireless XXXX", pe care îl puteți vedea de pe orice dispozitiv WiFi. Numele punctului de acces depinde de producătorul firmware-ului și poate fi diferit, de exemplu AI-THINKER AXXXXC. Dacă apare punctul de acces, atunci puteți continua experimentele în continuare, dacă nu, atunci verificați din nou sursa de alimentare, CH_PD, GND și dacă totul este conectat corect, atunci cel mai probabil aveți un modul defect, dar există speranță că firmware-ul din modul are setări non-standard și, poate, vă va ajuta să vă afișați. Cum să conectați rapid ESP8266

Kitul minim pentru conectarea și intermiterea modulului ESP8266 include:

    Placa de preparare fara lipit

    Set de fire tată-femă pentru panou sau cablu DUPONT M-F

    Convertor USB-TTL (cautați unul cu comutator pentru 5 și 3,3 volți sau o versiune de 3,3 volți) bazat pe FTDI, PL2303 sau un cip similar. Opțiunea ideală ar fi atunci când DTR și RTS sunt scoase pe adaptorul USB-TTL - acest lucru vă va permite să încărcați rapid firmware-ul de la Arduino IDE, UDK, Sming fără a comuta manual GPIO0 la masă.

Dacă aveți un convertor USB-TTL de 5 volți, atunci veți avea nevoie suplimentar de un stabilizator de putere pe un cip 1117 sau similar (curent de cel puțin 300 mA, de preferință cu un circuit condensator sub forma unui modul gata făcut, dar doar un microcircuit va face) și o sursă de alimentare (Pentru 1117, încărcarea de cinci volți de la un smartphone este perfectă). În general, este mai bine să nu alimentați ESP8266 de la un convertor USB-TTL sau Arduino, ci să utilizați o sursă de alimentare separată - acest lucru vă va scuti de multe probleme.

Într-un set extins pentru lucru constant și confortabil cu modulul ESP8266, veți avea nevoie suplimentar de conectori de alimentare, comutatoare DIP, rezistențe și LED-uri. De asemenea, folosesc un monitor USB ieftin (Charger Doctor - derulați în jos lista, căutați unul într-o carcasă albă), care vă permite să vedeți curentul consumat (cu precizie chineză) și protejează ușor magistrala USB de un scurtcircuit în alimentare (dacă există un scurtcircuit, afișajul monitorului începe să clipească)

    Există o mulțime de module ESP8266 și primul lucru de care aveți nevoie este să vă identificați modulul și să determinați pinout-ul acestuia. Pe site-ul nostru există un tabel minunat cu fotografii ale modulelor și ale acestora. Pentru restul acestui ghid rapid pentru începători, vom presupune că lucrăm cu modulul ESP8266 ESP-01 V090. Dacă aveți un alt modul (de exemplu, ESP-07 sau ESP-12) și pinul GPIO15 (MTDO, HSPICS) este amplasat pe el, atunci acest pin trebuie tras la masă atât pentru pornirea normală a modulului, cât și pentru modul firmware.

    Verificați de două ori dacă tensiunea de alimentare pentru modul este de 3,3 volți.

    Atenţie! Intervalul de tensiune de alimentare admisibil pentru modulul ESP8266 este de la 3,0 la 3,6 volți. Este garantat că furnizarea unei tensiuni de alimentare crescute a modulului va cauza defectarea ESP8266. Tensiunea de alimentare poate fi semnificativ mai mică decât 3 volți indicați în documentație

    Dacă sunteți fericitul proprietar al unui convertor USB-TTL de 3,3 volți, atunci conectați modulul ca în figura de mai jos (partea stângă). Dacă aveți doar un USB-TTL de cinci volți, atunci utilizați partea dreaptă a figurii ca instrucțiuni.

La prima vedere, circuitul din dreapta poate părea „mai bun” datorită utilizării unei surse de alimentare separate, dar acest lucru nu este în întregime adevărat - atunci când utilizați un convertor USB-TTL de 5 volți, este recomandabil să adăugați un divizor de rezistență. pentru a potrivi nivelurile logice de cinci și trei volți sau un modul de conversie a nivelului.

Atenţie!În figura din dreapta, conectați UTXD (TX) și URXD (RX) ale modulului ESP8266 la logica TTL de cinci volți pe propriul risc și risc! Documentația pentru SoC ESP8266 afirmă că modulul este tolerant doar cu logica de 3,3 V. În cele mai multe cazuri, conectarea unui ESP8266 la o logică de cinci volți NU VA deteriora ESP8266, dar modulul dumneavoastră poate avea ghinion. Pentru a elimina riscul de defectare a modulului ESP8266, se recomandă utilizarea unui convertor USB-TTL de 3,3 volți sau convertoare TTL 5v-3,3v sau un divizor de rezistență (nu este prezentat în figură). Puteți citi mai multe despre coordonarea nivelului logic aici. Tociștii riscanți ca mine conectează direct ESP8266 la logica TTL de cinci volți și nu se deranjează.

Atenţie! Figura din dreapta arată conexiunea stabilizatorului de putere 1117 fără cablare suplimentară. Acest lucru funcționează, dar totuși, vă recomandăm să utilizați diagrama de conectare 1117 cu bordura condensatorului - verificați diagrama de conectare cu fișa de date pentru stabilizatorul dvs. sau utilizați un modul gata făcut bazat pe 1117.

Roșu - alimentare 3.3V

Negru - GND

Galben - partea ESP8266 - RX, partea USB-TTL - TX

Verde - partea ESP8266 - TX, partea USB-TTL - RX

Portocaliu - CH_PD (CHIP ENABLE) - trebuie să fie întotdeauna conectat la alimentare

Albastru - GPIO0 - conectat printr-un comutator la masă pentru a activa modul intermitent al modulului. Pentru o pornire normală a modulului, GPIO0 poate fi lăsat neconectat nicăieri.

Roz pe diagrama din dreapta - sursa de alimentare nestabilizata 5-8 volti

4. Pentru a porni modulul, întrerupeți circuitul GPIO0 - GND și puteți aplica putere (și în această ordine: asigurați-vă mai întâi că GPIO0 este „atârnat în aer”, apoi aplicați alimentarea la VCC și CH_PD)

Atenţie!În exemplele de mai sus, care funcționează efectiv, de conectare a ESP8266, folosesc conectarea pinii ESP8266 „direct” la pământ și la putere, sau „atârnând în aer”, deoarece nu avem RESET conectat nicăieri, ceea ce este absolut incorect și este potrivit doar pentru primele două experimente, deși funcționează destul de bine pe marea majoritate a modulelor. Doar pinul VCC este conectat „direct” la sursa de alimentare, pinii rămași: CH_PD, RESET, GPIO0, GPIO2 trebuie să fie trase în sus (pullup) la sursa de alimentare (VCC) printr-un rezistor de la 4,7 la 50 kOhm. „Direct”, conectăm numai GND la negativul (firul comun) al sursei de alimentare și tragem GPIO0 (pulldown) și printr-un rezistor de până la 10k la GND pentru a pune modulul în modul de descărcare a firmware-ului. Dacă intenționați să continuați să experimentați cu ESP8266, atunci faceți o conexiune adecvată, la fel ca pentru orice alte microcontrolere. O descriere detaliată a pullup și pulldown nu face obiectul acestui articol, dar puteți cu ușurință Google o descriere a conexiunii corecte a porturilor I/O. Conexiunea „corectă” vă va permite să evitați multe „miracole” și probleme și va fi inevitabil necesară dacă întâmpinați dificultăți la pornirea sau aprinderea modulului ESP8266. Cum să conectați corect ESP8266

Dacă intenționați să utilizați ESP8266 mai mult de o seară, veți avea nevoie de o opțiune de conexiune care oferă o stabilitate mai mare. Mai jos sunt două diagrame de conectare: cu suport pentru încărcarea automată a firmware-ului de la Arduino IDE, UDK, Sming și fără acesta.

Schema de conectare pentru ESP8266 (fără încărcarea automată a firmware-ului, îl flashăm instalând mai întâi jumper-ul BURN și repornind modulul)

Diagrama de conectare cu suport pentru încărcarea automată a firmware-ului de la Arduino IDE, UDK, Sming. Flash Download Tool și XTCOM_UTIL ar putea avea nevoie să dezactiveze RTS/DTR. Dacă este incomod pentru dvs. să dezactivați RTS și DTR, atunci puteți adăuga jumperi la circuit

Aceste diagrame nu arată conexiunea ADC și a GPIO-urilor gratuite - conexiunea lor va depinde de ceea ce doriți să implementați, dar dacă doriți stabilitate, atunci nu uitați să trageți toate GPIO-urile la alimentare (pullup) și ADC la masă (pulldown). ) prin rezistențe de tragere .

Rezistoarele la 10k pot fi înlocuite cu altele de la 4,7k la 50k, cu excepția GPIO15 - valoarea sa ar trebui să fie de până la 10k. Valoarea condensatorului, care netezește pulsațiile de înaltă frecvență, poate fi diferită.

Va trebui să conectați RESET și GPIO16 printr-un rezistor de repaus profund de 470 ohmi dacă utilizați modul de repaus profund: pentru a ieși din modul de repaus profund, modulul se repornește prin aplicarea unui nivel scăzut la GPIO16. Fără această conexiune, somnul profund va fi etern pentru modulul tău.

La prima vedere, aceste diagrame par să sugereze că GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) sunt ocupate și nu le puteți folosi în scopurile dvs., dar nu este cazul. Un nivel ridicat pe GPIO0 și GPIO2, un nivel scăzut pe GPIO15 sunt necesare doar pentru a porni modulul și, ulterior, le puteți utiliza la discreția dvs., nu uitați să vă asigurați nivelurile necesare înainte de a reporni modulul.

Puteți utiliza TX, RX ca GPIO1 și, respectiv, GPIO3, fără a uita că atunci când modulul pornește, orice firmware va trage TX, trimițând informații de depanare către UART0 la o viteză de 74480, dar după încărcarea cu succes le puteți folosi nu numai ca UART0 pt. schimbă date cu un alt dispozitiv, dar și ca GPIO-uri obișnuite.

Pentru modulele cu un număr mai mic de pini cu fir, cum ar fi ESP-01, nu este necesară conectarea pinilor anulați, de exemplu. pe ESP-01 sunt conectate doar următoarele: VCC, GND, GPIO0, GPIO2, CH_PD și RESET - asta este tot ce strângeți. Nu este nevoie să lipiți direct la cipul ESP8266EX și să trageți pinii goi doar dacă aveți într-adevăr nevoie de el.

Aceste diagrame de conexiune s-au născut după multe experimente efectuate de membrii forumului nostru și culese din documentație împrăștiată și inițial inaccesibilă de către comunitatea noastră, am încercat doar să combin aceste cunoștințe într-un singur loc. Veți găsi multe sfaturi de conectare pe forumul nostru. Acolo puteți pune întrebări sau puteți găsi ajutor în rezolvarea problemelor. Dacă vedeți o eroare sau o inexactitate în acest articol sau aveți ceva de adăugat, vă rugăm să-mi spuneți într-un subiect special de pe forumul nostru.

Atenţie! Nici măcar aceste scheme nu pot fi numite „ideale”. Nu există limită pentru perfecțiune: este convenabil să conectați un al doilea USB-TTL la UART1 (cu ESP8266 puteți lua doar GND și UTXD1, adică GPIO2) pentru a conecta un terminal de depanare (veți avea nevoie de un al doilea convertor USB-TTL) - apoi puteți flash modulul ESP8266 prin UART0 fără a dezactiva terminalul de depanare pe UART1. Ar fi o idee bună să conectați rezistențe mici la pinii ambelor UART, să puneți o diodă în linia RTS, să adăugați un condensator la linia de alimentare pentru a amortiza impulsurile de joasă frecvență etc. Este foarte convenabil, de exemplu, făcut în această placă de depanare: LED-urile sunt conectate la toate GPIO-urile, un fotorezistor este conectat la ADC, dar este păcat că nu există niciun buton RESET și există doar un jumper pe GPIO0.

Ar fi corect să vă spun că nu există o diagramă de conectare ideală și în același timp universală pentru ESP8266. Chestia este că depinde foarte mult de firmware-ul pe care îl vei încărca acolo. Diagramele de mai sus sunt concepute pentru începătorii care abia încep să stăpânească ESP8266 pentru experimentare. Pentru proiecte reale, poate fi necesar să schimbați puțin diagrama. De exemplu, pentru a flashiza firmware-ul TCP2UART, trebuie să conectați RTS la GPIO15 și CTS la GPIO13. De asemenea, recomand să acordați o atenție deosebită nutriției în proiecte reale.

Conectarea ESP8266 prin Arduino

Dacă nu aveți un convertor USB-TTL de 3,3 V la îndemână, dar aveți un Arduino cu un convertor USB-TTL încorporat, atunci puteți utiliza această diagramă de conexiune

La ce să acordați atenție:

    Arduino Reset este conectat la GND (firul albastru), astfel încât microcontrolerul de pe Arduino să nu pornească, în această formă folosim Arduino ca convertor transparent USB-TTL

    RX și TX nu sunt conectate în cruce, ci direct - RX - RX (verde), TX - TX (galben)

    Orice altceva este conectat în același mod ca în exemplele anterioare

Atenţie! Acest circuit necesită, de asemenea, potrivirea nivelurilor TTL de 5 volți pe Arduino și 3,3 volți pe ESP8266, dar funcționează bine în acest fel.

Atenţie! Arduino poate avea instalat un stabilizator de putere care nu va rezista la curentul cerut de ESP8266, așa că înainte de a face conexiunea, verificați fișa de date pentru stabilizatorul pe care l-ați instalat. Nu conectați alte componente care consumă energie în același timp cu ESP8266 din cauza riscului de a deteriora regulatorul de putere încorporat al Arduino.

Există o altă schemă pentru conectarea Arduino și ESP8266 folosind SoftSerial. Deoarece pentru biblioteca SoftSerial viteza portului de 115200 este prea mare și nu garantează o funcționare stabilă, nu recomandăm utilizarea acestei metode de conectare, deși există persoane pentru care totul funcționează stabil (deși doar la o viteză de 9600). Schiță pentru o astfel de diagramă de conectare (mulțumesc nec3540A) Conectarea ESP8266 prin RaspberryPi

Da, puteți „ucide vrăbiile” dacă nu aveți la îndemână niciun convertor USB-TTL. Conectarea prin raspberry este similară cu Arduino, dar nu la fel de convenabilă, deoarece... În plus, veți avea nevoie de un stabilizator de putere de 3,3 volți. RX, TX, GND ale raspberry sunt conectate la ESP8266, VCC și GND sunt preluate de la o sursă de alimentare stabilizată de 3,3 volți. Vă rugăm să rețineți că trebuie să conectați GND-ul tuturor dispozitivelor: zmeură, stabilizator și ESP8266. Eu personal nu am încercat să iau 3,3 volți de putere de la zmeură pentru ESP8266, așa că nu vă voi oferi această opțiune. Dacă stabilizatorul încorporat în versiunea dvs. de zmeură reține până la 300 de miliamperi de sarcină suplimentară, atunci conectarea ESP8266 este foarte posibilă. Dacă vrei să-ți asumi riscul, mergi mai departe.

Configurarea ESP8266

Deci, am conectat modulul ESP8266 la portul USB (prin USB-TTL sau Arduino), acum trebuie să vă asigurați că driverele pentru USB-TTL sau Arduino sunt instalate corect și că apare un nou port serial virtual în sistem. Veți avea nevoie de un program - un terminal cu port serial. Puteți folosi oricare dintre ele doriți, dar trebuie să îndeplinească următoarea cerință: fiecare comandă pe care o trimiteți de la computer către portul serial trebuie să se termine cu caractere CR+LF.

Programul CoolTerm este foarte popular (există versiuni pentru Win/MAC/Linux).

Umilul tău servitor este autorul programului open-source ESPlorer, care a primit recunoaștere internațională. ESPlorer vă va permite să nu introduceți comenzile AT manual și să lucrați cu ușurință cu scripturi lua sub NodeMCU (mai multe despre asta altă dată) și îl puteți utiliza și ca terminal obișnuit. Discuție despre ESPlorer pe forumul nostru și pe esp826.com

Conectarea la portul serial va necesita puțină magie: datorită varietății de firmware pentru ESP8266, conexiunea se poate face la viteze diferite. Viteza necesară poate fi determinată prin simpla căutare prin trei opțiuni: 9600, 57600 și 115200. Cum se caută? Conectați-vă la portul serial virtual din programul terminal setând următorii parametri: 9600 8N1, apoi reporniți modulul dezactivând CH PD (activare cip) de la sursa de alimentare (USB-TTL rămâne conectat la USB) și porniți-l din nou (adică doar distorsionați CH PD, de ce nu distorsionăm puterea - citiți aici, puteți, de asemenea, scurtcircuita RESET la masă pentru a reporni modulul) și observați datele din terminal. În primul rând, LED-urile de pe ESP8266 ar trebui să se aprindă așa cum este descris la începutul articolului din secțiunea Testarea ESP8266. În al doilea rând, în terminal ar trebui să vedeți un „gunoi” de diferite caractere care se termină cu linia „gata”. Dacă nu vedem „gata”, atunci ne reconectam cu terminalul cu o viteză diferită și repornim modulul din nou.

La una dintre opțiunile de viteză „gata”, veți vedea în continuare - felicitări, modulul dvs. este gata de utilizare. Dacă nu, atunci bine ați venit pe forumul nostru - vom încerca să vă ajutăm, dar mai întâi citiți acest subiect.

Mai multe despre „gunoi”. Faptul este că atunci când firmware-ul pornește, UART-ul modulului ESP8266 comută la o rată de transmisie de 74.880 (chinezii ăia sunt atât de amuzanți), scoate informații de depanare către UART, apoi comută viteza portului la 115200 (sau 9600 sau 57600, în funcție de versiunea de firmware) , așa că această informație de depanare ne apare ca un gunoi, deoarece ne conectăm la modul cu o viteză diferită. Vă puteți conecta la ESP8266 la o viteză de 74.880 (ESPlorer acceptă această viteză) și veți vedea aceste informații de depanare, va fi cam așa:

Wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe room 8x0606, len 8x06 d c suma 0x0d

DAR! nu veți vedea „gata” și nu veți putea controla modulul până nu vă reconectați la viteza la care rulează firmware-ul.

Ce e de facut in continuare

Dacă aveți un modul nou, atunci cel mai probabil este flash cu unul dintre vechile firmware personalizate AT. Cel mai probabil, acesta este un fel de AI-THINKER AT v0.16 SDK v0.9.2. Puteți verifica versiunea de firmware folosind comanda „AT+GMR”, adică. direct în programul terminal, tastați AT+GMR fără ghilimele și apăsați Enter. Modulul ar trebui să răspundă „OK” și să afișeze versiunea de firmware (de exemplu, „0016000092” - formatul de ieșire al versiunii este diferit în diferite versiuni de firmware AT). Controlul modulului ESP8266 cu comenzi AT merită un articol separat, dar vă puteți da seama cu ușurință singur folosind una dintre cărțile noastre de referință despre comenzile AT:

La momentul scrierii acestui articol, versiunea actuală de firmware pentru ESP8266 este:

Comenzi AT versiunea v0.21, versiunea SDK v0.9.5 Actualizare firmware ESP8266

Modulul ESP8266 este remarcabil prin faptul că nu necesită un programator special - firmware-ul este actualizat pe același hardware pe care conectați modulul ESP8266 la computer, adică. de asemenea, printr-un convertor USB-TTL (sau Arduino sau RPi). Pentru a actualiza firmware-ul pe modulul ESP8266, procedați în felul următor:

    Descărcați noua versiune de firmware de pe site-ul nostru din secțiunea de firmware ESP8266 (aici este un link către cea mai recentă versiune de firmware AT 0.21 SDK 0.9.5 la momentul scrierii acestui articol)

    Descărcați unul dintre utilitarele pentru flash-ul ESP8266 în funcție de sistemul dvs. de operare din secțiunea Utilități ESP8266 de pe site-ul nostru web

    pentru sistemele Win, XTCOM UTIL este potrivit (este convenabil să funcționeze dacă firmware-ul constă dintr-un fișier), esptool multi-platformă (este necesar python, trebuie să specificați parametrii pe linia de comandă), FLASH DOWNLOAD TOOL (multe setări, este convenabil să flashiți firmware format din mai multe fișiere, permite „să colecteze firmware-ul într-un singur fișier din mai multe). Veți găsi și alte programe pentru intermiterea ESP8266 - încercați altele și folosiți-l pe cel care vă place cel mai mult.

    Deconectați programul terminal de la portul serial

    Dezactivați CH PD de la sursa de alimentare, conectați GPIO0 al modulului la GND, conectați înapoi CH modulul PD.

    Rulați programul de firmware al modulului și încărcați noul firmware în modulul ESP8266.

Încărcarea firmware-ului în modul se realizează de obicei la o viteză de 115200, dar modul firmware al modulului acceptă detectarea automată a vitezei, iar firmware-ul poate fi încărcat la o viteză de 9600 sau mai mare. Viteza maximă depinde de mulți factori (convertorul dumneavoastră USB-TTL, lungimea firului etc.) și poate fi determinată experimental pe baza configurației echipamentului dumneavoastră specific.

Toate cele mai recente versiuni de firmware sunt încărcate de la adresa zero (0x00000).

Discuție despre acest articol pe forumul nostru

Discuție despre probleme la conectarea ESP8266 pe forumul nostru

Articolul Actualizarea firmware-ului ESP8266 descrie în detaliu încărcarea firmware-ului în modul folosind programul XTCOM_UTIL.

Cu modul Wi-Fi.

Arduino Uno WiFi oferă totul pentru lucrul convenabil cu microcontrolerul: 14 intrări/ieșiri digitale (6 dintre ele pot fi folosite ca ieșiri PWM), 6 intrări analogice, un conector USB, un conector de alimentare, un conector de programare în circuit (ICSP). ) și un microcontroler cu butonul de resetare.

Punctul culminant al plăcii este modulul WiFi ESP8266, care permite Arduino să schimbe informații cu alte module prin intermediul rețelelor wireless 802.11 b/g/n.

ESP8266 vă permite să flashizați o placă Arduino fără a utiliza un cablu USB în modul OTA (Firmware Over The Air).

Revizuirea video a consiliului

Conexiune și configurare

Pentru a începe cu placa Arduino Uno WiFi în sistemul de operare Windows, descărcați și instalați mediul de dezvoltare integrat Arduino - Arduino IDE - pe computer.

Ceva n-a mers bine?

Configurarea modulului WiFi

Firmware Arduino prin WiFi

Arduino Uno WiFi are un alt bonus frumos - capacitatea de a încărca schițe fără a utiliza un cablu USB în modul OTA (Firmware Over The Air). Să aruncăm o privire mai atentă la cum să facem acest lucru.


Pentru a face acest lucru, trebuie să intrați în meniu: Instrumente Port și selectați portul dorit.

Deoarece flashăm Arduino prin WiFi, placa va fi identificată ca un dispozitiv la distanță cu o adresă IP

Mediul este configurat, placa este conectată. Puteți continua cu încărcarea schiței. Arduino IDE conține o listă mare de exemple gata făcute în care puteți vedea soluția la orice problemă. Să alegem dintre exemplele de LED intermitent - schița „Blink”.
Flashați placa făcând clic pe pictograma de descărcare a programului.
După pornire, LED-ul va începe să clipească o dată pe secundă. Asta înseamnă că totul a funcționat.

Acum poți trece la exemple de utilizare.

Exemple de utilizare

server web

Să instalăm un server web simplu care va afișa o pagină cu valorile curente ale intrărilor analogice.

web-server.ino /* Un exemplu de server web simplu care rulează pe Arduino Uno WiFi. Serverul afișează valorile pe intrările analogice și actualizează informațiile la fiecare două secunde. Contactați serverul la http:// /arduino/webserver/ Vă rugăm să rețineți: exemplul funcționează numai cu Arduino Uno WiFi Developer Edition. */#include #include void setup() ( Wifi.begin () ; Wifi.println ( „Serverul web este activat” ); // Afișează un mesaj despre pornirea serverului în consola wifi) void loop() ( while (Wifi.available () ) ( process(Wifi) ; ) delay(50 ) ; ) void process(WifiData client) ( String command = client.readStringUntil ("/" ) ; if (comandă = = "webserver" ) ( WebServer(client) ; ) ) void WebServer(client WifiData) ( client.println("HTTP/1.1 200 OK" ) ; client.println("Content-Type: text/html" ) ; client. println ("Conexiune: închidere" ) ​​client.println ( "Reîmprospătare: 2" ); // Antet care specifică perioada de reîmprospătare a paginii în secunde client.println(); client.println(" " ) ; // Formează pagina client.println( " Server web UNO WIFI " ); client.print( "

Exemplu de ieșire a valorilor de la pinii analogici

"
); client.print("
    "); pentru (int analogChannel = 0; analogChannel< 4 ; analogChannel++ ) { int sensorReading = analogRead(analogChannel) ; client.print ("
  • pe intrarea analogică"); client.print(analogChannel) ; client.print(": " ); client.print (Citire senzor) ; client.print ("
  • " ) ; ) client.println ("
" ) ; client.print (DELIMITER) ; // Nu uitați să închideți conexiunea! }

Elemente de bord

Microcontroler ATmega328P

Inima platformei Arduino Uno WiFi este microcontrolerul pe 8 biți din familia AVR - ATmega328P.

Microcontroler ATmega16U2

Microcontrolerul ATmega16U2 asigură comunicarea între microcontrolerul ATmega328P și portul USB al computerului. Când este conectat la un PC, Arduino Uno WiFi este detectat ca un port COM virtual. Firmware-ul cipului 16U2 utilizează drivere USB-COM standard, deci nu este necesară instalarea unui driver extern.

Pinuri de alimentare

    VIN: Tensiune de la sursa de alimentare externă (nu este legată de 5V de la USB sau altă tensiune reglată). Prin acest pin puteți să furnizați energie externă și să consumați curent dacă la dispozitiv este conectat un adaptor extern.

    5V: Pinul primește o tensiune de 5 V de la stabilizatorul plăcii. Acest stabilizator oferă putere microcontrolerului ATmega328. Nu este recomandat să alimentați dispozitivul prin pinul de 5V - în acest caz, nu este utilizat un stabilizator de tensiune, ceea ce poate duce la defectarea plăcii.

    3,3 V: 3,3 V de la stabilizatorul plăcii. Curentul maxim de ieșire este de 1 A.

    GND: Concluziile pământului.

    IOREF: Pinul oferă plăcilor de expansiune informații despre tensiunea de funcționare a microcontrolerului. În funcție de tensiune, placa de expansiune poate comuta la sursa de alimentare adecvată sau poate utiliza convertoare de nivel, permițându-i să funcționeze atât cu dispozitive de 5V, cât și de 3,3V.

Porturi I/O

    Intrări/ieșiri digitale: pinii 0 – 13
    Nivelul logic al unuia este 5 V, zero este 0 V. Curentul maxim de ieșire este de 40 mA. Rezistoarele de tragere sunt conectate la contacte, care sunt dezactivate implicit, dar pot fi activate prin software.

    PWM: pinii 3, 5, 6, 9, 10 și 11
    Vă permite să scoateți valori analogice pe 8 biți ca semnal PWM.

    ADC: pinii A0 – A5
    6 intrări analogice, fiecare dintre acestea putând reprezenta tensiunea analogică ca număr de 10 biți (1024 de valori). Capacitatea ADC este de 10 biți.

    TWI/I²C: Pini SDA și SCL
    Pentru comunicarea cu periferice folosind un protocol sincron, prin 2 fire. Pentru a lucra, utilizați biblioteca Wire.

    SPI: pinii 10(SS), 11(MOSI), 12(MISO), 13(SCK).
    Comunicarea prin interfața SPI se realizează prin acești pini. Pentru a funcționa, utilizați biblioteca SPI.

    UART: pinii 0(RX) și 1(TX)
    Acești pini sunt conectați la pinii corespunzători ai microcontrolerului ATmega16U2, care acționează ca un convertor USB-UART. Folosit pentru a comunica între placa Arduino și un computer sau alte dispozitive prin clasa Serial.

Indicatie LED

Conector USB tip B

Conectorul USB de tip B este proiectat pentru flash-ul platformei Arduino Uno WiFi folosind un computer.

Conector de alimentare extern

Conector pentru conectarea energiei externe de la 7 V la 12 V.

Regulator de tensiune 5V

Când placa este conectată la o sursă de alimentare externă, tensiunea trece prin regulatorul MPM3610. Ieșirea stabilizatorului este conectată la pinul de 5V. Curentul maxim de ieșire este de 1 A.

Regulator de tensiune de 3,3 V

Stabilizator MPM3810GQB-33 cu ieșire de 3,3 volți. Oferă alimentare modulului WiFi ESP8266 și iese la pinul de 3,3 V. Curentul maxim de ieșire este de 1 A.

Conector ICSP pentru ATmega328P

Conectorul ICSP este proiectat pentru programarea în circuit a microcontrolerului ATmega328P. Folosind biblioteca SPI, acești pini pot comunica cu plăcile de expansiune prin interfața SPI. Liniile SPI sunt direcționate către un conector cu 6 pini și sunt, de asemenea, duplicate pe pinii digitali 10(SS), 11(MOSI), 12(MISO) și 13(SCK).

Conector ICSP pentru ATmega16U2

Conectorul ICSP este proiectat pentru programarea în circuit a microcontrolerului ATmega16U2.



Partea 1: Pregătirea ESP8266

De ce acest articol? Există deja o serie de articole pe hub despre utilizarea ESP în diferite configurații, dar din anumite motive fără detalii despre cum exact totul este conectat, flashat și programat. De genul „Am luat ESP, două baterii AA, DHT22, l-am aruncat în cutie, l-am scuturat timp de o oră și termometrul este gata!” Drept urmare, se dovedește ciudat: cei care lucrează deja cu ESP nu văd nimic neobișnuit în ceea ce s-a făcut, iar cei care vor să învețe nu înțeleg de unde să înceapă. Prin urmare, am decis să scriu un articol detaliat despre modul în care ESP-ul este conectat și flash, cum să-l conectez cu Arduino și lumea exterioară și ce probleme am întâmpinat pe parcurs. Ofer linkuri către Aliexpress doar pentru a oferi o idee despre prețurile și aspectul componentelor.

Deci, aveam două microcontrolere, șapte senzori diferiți, cinci surse de alimentare, un senzor de temperatură DHT22 și o mulțime de cabluri de toate soiurile și culorile, precum și nenumărate rezistențe, condensatoare și diode. Nu că toate acestea sunt necesare pentru un termometru, dar odată ce începi să lucrezi la microelectronică, devine dificil să te oprești.


Nutriție

Pentru a funcționa, ESP8266 necesită o tensiune de 3,3 V și un curent de cel puțin 300 mA. Din păcate, Arduino Uno nu este capabil să furnizeze un astfel de curent, la fel cum adaptoarele USB-UART (programatori) precum FT232RL nu îl pot furniza - limita lor este de aproximativ 50mA. Aceasta înseamnă că va trebui să organizați mese separate. Și ar fi mai bine dacă Arduino ar funcționa și de la 3,3V pentru a evita probleme precum „Am aplicat un semnal de cinci volți la pinul RX al modulului ESP, de ce miroase a plastic ars?”

Există trei soluții.

2. Cumpărați un modul gata făcut cu un regulator de tensiune care reduce 5V la 3,3V. Poate că aceasta este cea mai convenabilă opțiune.

3. Asamblați singur modulul de la un regulator AMS1117 și un condensator de tantal de 22 µF.

Am ales a treia variantă pentru că am adesea nevoie de 3,3V, sunt lacom și îmi place să construiesc regulatoare direct în surse de alimentare.

Cu AMS1117 totul este simplu: dacă îl pui cu textul în sus, atunci tensiunea la picioare crește de la stânga la dreapta: 0 (Gnd), 3.3V (Vout), 5V (Vin).
Între zero și ieșire aveți nevoie de un condensator de tantal de 22 µF (conform instrucțiunilor, ce se va întâmpla dacă instalați unul electrolitic - nu am verificat). Condensatorul SMD cu tantal are un plus acolo unde este banda. O mică lipire monstruoasă a componentelor SMD complet nedestinate unei asemenea barbari și:

Asigurați-vă că verificați tensiunea de ieșire. Dacă este semnificativ mai mic de 3,3 V (de exemplu, 1,17 V) - lăsați regulatorul să se răcească după lipire și verificați contactele. Dacă plasați un condensator mai mare de 22 µF, multimetrul poate afișa o tensiune mai mare.

De ce AMS1117? Este utilizat pe scară largă. Îl poți găsi aproape peste tot, chiar și în Arduino Uno, de obicei AMS1117-5.0.
Daca stiti ceva de dimensiuni si pret similare, chiar mai usor de folosit, va rog sa scrieti.

Punct important. Nu știu de ce, dar AMS1117 este extrem de pretențios în ceea ce privește calitatea conexiunilor. Contactele trebuie să fie de încredere. Mai bine - lipit. În caz contrar, produce 3,3V în teste, dar nu produce nimic sub sarcină.

Conectarea ESP8266

Am ales modelul 07 pentru că are un ecran metalic excelent care acționează ca protecție împotriva interferențelor, influențelor mecanice și ca radiator. Acesta din urmă face diferența între un modul ars și unul pur și simplu încălzit. În plus, există o priză pentru o antenă externă.

Pentru ca cipul să pornească, trebuie să conectați VCC și CH_P printr-un rezistor de 10 kOhm. Dacă nu este cazul, atunci oricare dintre intervalele 1-20 kOhm va fi potrivit. În plus, în mod specific modelul 07 necesită și ca GPIO15 (cel mai apropiat de GND) să fie „împământat” (acest lucru nu este vizibil în imagine, deoarece conexiunea este pe cealaltă parte).

Acum luăm un adaptor USB-UART, îl comutăm la 3.3V și conectăm RX la TX, TX la RX și GND la masă (pentru mine transmisia este instabilă fără acest lucru). Dacă nu puteți trece la 3,3 V, atunci puteți utiliza un simplu divizor de tensiune cu rezistență: conectați ESP RX la adaptorul TX printr-o rezistență de 1 kOhm și ESP RX la masă printr-un 2 kOhm. Există multe modalități mai complexe și mai fiabile de a conecta 3,3V și 5V, dar în acest caz va funcționa.

Și ne conectăm la o viteză de 9600 prin portul COM necesar (o puteți vedea în managerul de dispozitive).

Eu folosesc SecureCRT, Putty este de asemenea potrivit, iar cunoscătorii de Linux știu deja ce să facă și unde să caute.

(AT+RST resetează cipul)

Dacă nu se întâmplă nimic - opriți - porniți alimentarea, dacă tot nu se întâmplă nimic - verificați potrivirea TX/RX, încercați să le rearanjați sau să le lipiți pe cip.

Uneori, cipul îngheață în timpul experimentelor simulate și apoi trebuie să fie dezactivat, inclusiv prin deconectarea adaptorului (de exemplu, trăgându-l din USB), deoarece chiar și firimiturile de putere primite sunt suficiente pentru ca cipul să se blocheze cu obstinație și nu functioneaza.

Uneori trucurile cu un adaptor implică închiderea unui port USB. Puteți utiliza un alt port USB ca soluție temporară, dar în general este mai bine să reporniți computerul.

Uneori, numărul portului COM se schimbă. Pe Linux, acest lucru poate fi rezolvat folosind udev.

Dacă primiți gunoi în loc de text, verificați setările de viteză. Unele cipuri mai vechi rulează la 115200.

La început, cipul se încălzește, dar dacă este foarte fierbinte și continuă să se încălzească, deconectați și verificați toate conexiunile. Pentru ca +3,3V să nu ajungă la carcasă, astfel încât 5V să nu ajungă nicăieri, astfel încât „masa” adaptorului să fie conectată la „masa” cipului. Modelele cu ecran metalic sunt foarte greu de arse (dar nimic nu este imposibil), și există plângeri despre modelele fără ecrane, spunând că chiar și o mică eroare poate fi ultima din viața cipului. Dar nu am verificat asta.

Firmware

Alegerea mea este NodeMCU. Are probleme cu suportul de memorie și hardware, dar acest lucru se plătește de multe ori prin simplitatea codului și ușurința de depanare.

Veți avea nevoie și de NodeMCU flasher și LuaLoader (cel din urmă este opțional; există și alți clienți pentru a lucra cu acest firmware).

Opriți cipul. Conectăm GPIO0 la masă și pornim cipul:

Dacă nu se întâmplă nimic și câmpurile AP MAC/STA MAC sunt goale, verificați din nou dacă GPIO0 este pe sol.
Dacă firmware-ul a pornit, dar se blochează, uitați-vă în fila Jurnal, din anumite motive acest cip special a refuzat să fie flash pe FT232RL, dar a fost flashat fără probleme pe PL2303HX la o viteză de 576000. PL2303HX în versiunea specificată nu are comutator la 3.3V pentru a-l folosi trebuie sa deschideti carcasa de plastic si sa lipiti firul de la 5V la 3.3V, exista optiuni cu cinci iesiri: 3.3, 5, TX, RX, Gnd.


Vă rugăm să rețineți: STA MAC s-a schimbat. Bănuiesc că flasherul a arătat-o ​​incorect, dar este necesară verificarea.

Pentru a economisi efort și nervi, puteți lua o versiune gata făcută sau semi-gata.

Există adaptoare de unică folosință cu cablare convenabilă.
Mânca

Deci vom controla două motoare reversibile (rotație în ambele direcții): principalul și direcția. Le vom alimenta de la o baterie de 3,7 V, dar puteți, în principiu, să alimentați până la 12 V dacă coordonați alimentarea controlerului sau o organizați cu o baterie separată.

În secțiunea de putere folosim cel mai simplu driver de motor pas cu pas în miniatură l9110s sau puteți folosi ansamblul de pe L293\8 sau oricare la fel de puternic pe care îl găsiți. În general, am desenat totul în imagine.

Puteți achiziționa componente pentru proiect pe Aliexpress:

Controlerul WiFi folosit este preferatul meu NodeMCU 0.9 ESP8266, dar poți folosi și WeMos D1 mini mai mic.

Bateria poate fi încărcată prin micro USB, după care alimentează direct driverul motorului și prin intermediul controlerului WiFi boost convertor la 5V.

Cod program:

#include
const char* ssid = „numele rețelei tale Wi-Fi”;
const char* password = „parola rețelei tale”;
int sus = 2; //numărul de ieșiri discrete
int jos = 14;
int stânga = 4;
int dreapta = 12;
// Creați o instanță a serverului
// specificăm portul pe care să ascultați ca argument
Server WiFiServer(80);
void setup() (
Serial.begin(9600);
întârziere (10);
//pregătirea ieșirilor
pinMode(up, OUTPUT);
digitalWrite(sus, 0);
pinMode (jos, OUTPUT);
digitalWrite(jos, 0);
pinMode(stânga, OUTPUT);
digitalWrite(stânga, 0);
pinMode (dreapta, OUTPUT);
digitalWrite(dreapta, 0);

// Conectați-vă la rețeaua WiFi
Serial.println();
Serial.println();
Serial.print("Se conectează la ");
Serial.println(ssid);

WiFi.begin(ssid, parola);

În timp ce (WiFi.status() != WL_CONNECTED) (
întârziere (500);
Serial.print(".");
}
Serial.println("");
Serial.println ("WiFi conectat");

//Porniți serverul
server.begin();
Serial.println("Serverul a pornit");
//trimite adresa IP la monitorul portului
Serial.println(WiFi.localIP());
}
void loop() (
//verificați dacă clientul este conectat
Client WiFiClient = server.available();
dacă (!client) (
întoarcere;
}

//Așteptați până când clientul trimite niște date
Serial.println("client nou");
în timp ce(!client.available())(
întârziere(1);
}

//Citirea primului rând al cererii
String req = client.readStringUntil("\r");
Serial.println(req);
client.flush();

//procesarea comenzii
dacă (req.indexOf("/gpio/up") != -1)(
digitalWrite(sus, 1);
digitalWrite(jos, 0);
întârziere (1000);
digitalWrite(sus, 0);
digitalWrite(jos, 0);
}
altfel, dacă (req.indexOf("/gpio/jos") != -1)(
digitalWrite(sus, 0);
digitalWrite(jos, 1);
întârziere (1000);
digitalWrite(sus, 0);
digitalWrite(jos, 0);
}
altfel, dacă (req.indexOf("/gpio/left") != -1)(
digitalWrite(sus, 1);
digitalWrite(jos, 0);
digitalWrite(stânga, 1);
digitalWrite(dreapta, 0);
întârziere (1000);
digitalWrite(sus, 0);
digitalWrite(jos, 0);
digitalWrite(stânga, 0);
digitalWrite(dreapta, 0);
}
altfel, dacă (req.indexOf("/gpio/right") != -1)(
digitalWrite(sus, 1);
digitalWrite(jos, 0);
digitalWrite(stânga, 0);
digitalWrite(dreapta, 1);
întârziere (1000);
digitalWrite(sus, 0);
digitalWrite(jos, 0);
digitalWrite(stânga, 0);
digitalWrite(dreapta, 0);
}
altceva(
Serial.println("cerere nevalidă");
}

Client.flush();
// pregătirea pentru răspuns
String s = "HTTP/1.1 200 OK\r\nTip de conținut: text/html\r\n\r\n\r\n \r\n ";

S += "


SUS.
";
s += "
STÂNGA ";
s += „Dreapta
";
s += "
JOS";
s += "
\n";
// Trimite răspunsul către client
client.print(e);
întârziere(1);
Serial.println("Client deconectat");
) Programul este scris în Arduino IDE. Cum se configurează Arduino IDE să funcționeze cu controlerul NodeMCU 0.9 ESP8266 uita-te la link. După încărcarea programului în controler, monitorul portului poate citi adresa IP pe care o va primi placa după conectarea la routerul WiFi. În browserul computerului, trebuie să introduceți această adresă în bara de adrese și să mergeți la pagina pe care o va genera programul controlerului. Va arata asa:

JOS

Când faceți clic pe linkul SUS, mașina se va deplasa înainte timp de 1 secundă și se va opri. Când apăsați JOS, mașina va merge înapoi timp de 1 secundă. STÂNGA - motorul de rotație va întoarce roțile spre stânga și mașina va conduce 1 secundă spre stânga. Același lucru este valabil și la dreapta când apăsați DREAPTA.

Întregul sistem va funcționa numai cu un punct de acces WiFi configurat (router WiFi), dar pe viitor sunt interesat să mă joc cu controler NodeMCU 0.9 ESP8266, care el însuși va organiza un punct de acces și va îndeplini funcția de server WEB, adică atunci când îi accesăm IP-ul dintr-un browser, vom vedea o pagină web cu controale. De asemenea, este interesant să organizați transferul de date de la un astfel de controler la altul prin intermediul rețelei WiFi autonome.

Cipul ESP8266 este unul dintre cele mai populare instrumente pentru organizarea comunicațiilor fără fir în proiecte de casă inteligentă. Folosind un controler wireless, puteți organiza comunicarea prin interfața WiFi, oferind proiectelor Arduino acces la Internet și posibilitatea de a controla și colecta date de la distanță. Asemenea plăci populare precum WeMos și NodeMcu, precum și un număr mare de proiecte de casă, au fost create pe baza ESP8266. În acest articol, vom afla ce este ESP82266, care sunt soiurile sale și cum să lucrăm cu ESP8266 în Arduino IDE.

ESP8266 este un microcontroler cu o interfață WiFi care are capacitatea de a executa programe din memoria flash. Dispozitivul a fost lansat în 2014 de compania chineză Espressif și aproape imediat a devenit popular.

Controlerul este ieftin, are un număr mic de elemente externe și are următorii parametri tehnici:

  • Suporta protocoale Wi-Fi 802.11 b/g/n cu WEP, WPA, WPA2;
  • Are 14 porturi de intrare și ieșire, SPI, I2C, UART, ADC pe 10 biți;
  • Suportă memorie externă de până la 16 MB;
  • Alimentarea necesară este de la 2,2 la 3,6 V, consumul de curent este de până la 300 mA, în funcție de modul selectat.

O caracteristică importantă este absența memoriei nevolatile a utilizatorului pe cip. Programul este executat dintr-un ROM extern SPI folosind încărcarea dinamică a elementelor de program necesare. Accesul la perifericele interne poate fi obținut nu din documentație, ci din API-ul unui set de biblioteci. Producătorul indică cantitatea aproximativă de RAM - 50 kB.

Caracteristici ale plăcii ESP8266:

  • Conexiune convenabilă la un computer - printr-un cablu USB, alimentat de acesta;
  • Disponibilitatea convertorului de tensiune de 3,3V încorporat;
  • Disponibilitate de memorie flash de 4 MB;
  • Butoane încorporate pentru repornire și clipire;
  • Toate porturile sunt direcționate pe placă folosind doi piepteni cu un pas de 2,5 mm.

Aplicații ale modulului ESP8266

  • Automatizare;
  • Diverse sisteme pentru o casă inteligentă: Control wireless, prize wireless, control al temperaturii, suplimentar la sisteme de alarmă;
  • Electronice mobile;
  • ID-ul etichetei;
  • Jucării pentru copii;
  • Rețele mesh.

pinout esp8266

Există un număr mare de variante ale modulului ESP8266. Figura prezintă unele dintre ele. Cea mai populară opțiune este ESP 01.

Execuția programului trebuie să fie determinată de starea porturilor GPIO0, GPIO2 și GPIO15 atunci când sursa de alimentare se termină. Se pot distinge două moduri importante - atunci când codul este executat din UART (GPIO0 = 0, GPIO2 = 1 și GPIO15 = 0) pentru flash-ul unui card flash și când este executat dintr-un ROM extern (GPIO0 = 1, GPIO2 = 1). și GPIO15 = 0) în modul standard.

Pinout-ul pentru ESP01 este prezentat în imagine.

Descrierea contactului:

  • 1 – masă, 8 – putere. Conform documentației, tensiunea este furnizată până la 3,6 V - acest lucru este important de luat în considerare atunci când lucrați cu Arduino, care este de obicei alimentat cu 5 V.
  • 6 – RST, necesar pentru a reporni microcontrolerul atunci când i se aplică un nivel logic scăzut.
  • 4 – CP_PD, folosit și pentru a pune dispozitivul în modul de economisire a energiei.
  • 7 și 0 – RXD0 și TXD0, acesta este un UART hardware necesar pentru flash-ul modulului.
  • 2 – TXD0, la acest pin este conectat un LED, care se aprinde atunci când nivelul logic de pe GPIO1 este scăzut și când datele sunt transmise prin UART.
  • 5 – GPIO0, portul de intrare și ieșire, vă permite, de asemenea, să puneți dispozitivul în modul de programare (când portul este conectat la un nivel logic scăzut și se aplică tensiune).
  • 3 – GPIO2, port de intrare și ieșire.

Pinout ESP-12

Principalele diferențe dintre Arduino și ESP8266

  • ESP8266 are o cantitate mai mare de memorie flash, în timp ce ESP8266 nu are memorie nevolatilă;
  • Procesorul ESP8266 este mai rapid decât Arduino;
  • ESP8266 are Wi-Fi;
  • ESP8266 consumă mai mult curent decât Arduino;

Programarea ESP8266 în Arduino IDE

Kitul de dezvoltare esp8266 include:

  • Compiler din colecția de compilatori GNU.
  • Biblioteci, WiFi, stive de protocoale TCP/IP.
  • Un mijloc de încărcare a informațiilor în programul controlerului.
  • IDE de operare.

Inițial, modulele ESP8266 sunt furnizate cu firmware de la producător. Cu ajutorul acestuia, puteți controla modulul de la un microcontroler extern și puteți lucra cu Wi-Fi ca modem. Există, de asemenea, multe alte firmware-uri gata făcute. Unele dintre ele vă permit să configurați funcționarea modulului folosind o interfață WEB.

Poate fi programat din IDE-ul Arduino. Cu ajutorul acestuia, puteți scrie cu ușurință schițe și le puteți încărca pe ESP8266, puteți flash-ul pe ESP8266 și nu aveți nevoie de placa Arduino în sine. Arduino IDE acceptă toate tipurile de module ESP8266.

În prezent, următoarele funcții pot fi implementate pentru ESP8266:

  • Funcțiile de bază ale limbajului Wiring. Puteți controla porturile GPIO în același mod ca pinii de pe placa Arduino: pinMode, digitalRead, digitalWrite, analogWrite. Comanda analogRead(A0) vă permite să citiți valorile ADC. Folosind comanda analogWrite (pin, valoare), puteți conecta PWM la ieșirea GPIO dorită. Când value=0, PWM este dezactivat, valoarea maximă atinge o constantă egală cu 1023. Folosind funcțiile attachInterrupt și detachInterrupt, puteți întrerupe pe orice port GPIO, cu excepția celui 16.
  • Timp și întârziere. Folosind comenzile millis și micros puteți returna ms și μs care au trecut de la început. Întârziere vă permite să întrerupeți execuția programului pentru timpul dorit. De asemenea, funcția de întârziere(…) vă permite să mențineți funcționarea Wi-Fi normală dacă schița conține elemente mari care durează mai mult de 50 ms pentru a se executa. Yield() este un analog al funcției delay(0).
  • Serial și Serial1 (UART0 și UART1). Lucrarea în serie pe ESP8266 este similară cu cea pe Arduino. Scrierea și citirea datelor blochează execuția codului dacă bufferul software FIFO de 128 de octeți și 256 de octeți sunt plini. Obiectul Serial folosește hardware UART0, puteți seta pinii GPIO15 (TX) și GPIO13 (RX) pentru el în loc de GPIO1(TX) și GPIO3(RX). Pentru a face acest lucru, după Serial.begin(); trebuie să apelați Serial.swap();. În mod similar, Serial1 folosește UART1, care funcționează pentru transmisie. Pinul necesar pentru aceasta este GPIO2.
  • Macro PROGMEM. Funcționarea sa este similară cu cea a Arduino. Vă permite să mutați date numai pentru citire și constante de șir în memoria flash. În același timp, ESP8266 nu stochează aceleași constante, ceea ce duce la o pierdere suplimentară de memorie flash.
  • I2C. Înainte de a lucra cu magistrala I2C, magistralele sunt selectate folosind funcția Wire.pins(int sda, int scl).
  • SPI, OneWire – complet acceptat.

Folosind esp8266 pentru a comunica cu Arduino prin WiFi

Înainte de a vă conecta la Arduino, este important să rețineți că tensiunea de alimentare a ESP8266 nu poate fi mai mare de 3,6, în timp ce la Arduino tensiunea este de 5 V. Trebuie să conectați 2 microcontrolere folosind divizoare rezistive. Înainte de a conecta modulul, trebuie să vă familiarizați cu pinout-ul ESP8266 selectat. Schema de conectare pentru ESP8266-01 este prezentată în figură.

3,3 V de la Arduino la Vcc&CH_PD pe modulul ESP8266, împământare de la Arduino la masă de la ESP8266, 0 – TX, 1 – RX.

Pentru a menține o funcționare stabilă, ESP8266 necesită o sursă de tensiune constantă de 3,3 V și un curent maxim de 250 mA. Dacă alimentarea provine de la un convertor USB-TTL, pot apărea disfuncționalități și defecțiuni.

Lucrul cu biblioteca Wi-Fi pentru ESP8266 este similar cu biblioteca pentru un scut obișnuit. Există mai multe caracteristici:

  • mode(m) – pentru a selecta unul dintre cele trei moduri: client, punct de acces sau ambele moduri în același timp.
  • softAP(ssid) – necesar pentru a crea un punct de acces deschis.
  • softAP(ssid, parola) – creează un punct de acces cu o parolă, care trebuie să conțină cel puțin 8 caractere.
  • WiFi.macAddress(mac) și WiFi.softAPmacAddress(mac) – definește adresa MAC.
  • WiFi.localIP() și WiFi.softAPIP() – determinând adresa IP.
  • printDiag(Serial); – vă va permite să aflați date de diagnosticare.
  • WiFiUDP – suport pentru trimiterea și primirea pachetelor multicast în modul client.

Lucrarea se realizează conform următorului algoritm:

  • Conectarea USB-TTL la USB și la ESP.
  • Lansarea Arduino IDE.
  • Selectați portul, placa, frecvența și dimensiunea memoriei flash necesare în meniul de instrumente.
  • Fișier - Exemple - ESP8266WiFi - WiFiWebServer.
  • Notați SSID-ul și parola rețelei Wi-Fi în schiță.
  • Începeți să compilați și să încărcați codul.
  • Așteptați finalizarea procesului de firmware, deconectați GPIO0 de la masă.
  • Setați viteza la 115200.
  • Va avea loc o conexiune și adresa IP va fi înregistrată.
  • Deschideți un browser, introduceți numărul IP/gpio/1 în bara de adrese
  • Uită-te la monitorul portului dacă un LED este conectat la ieșirea GPIO2, acesta ar trebui să se aprindă.

NodeMCU bazat pe esp8266

NodeMCU este o platformă bazată pe modulul esp8266. Folosit pentru a controla circuitul de la distanță folosind internetul prin Wi-Fi. Placa este de dimensiuni mici, compactă, ieftină și are un conector USB pe partea frontală. În apropiere sunt butoane pentru depanarea și repornirea microcontrolerului. De asemenea, este instalat un cip ESP8266. Tensiunea de alimentare este de la 5 la 12 V, este recomandabil să se alimenteze mai mult de 10 V.

Marele avantaj al plăcii este consumul redus de energie. Ele sunt adesea folosite în circuite cu autoalimentare. Există doar 11 porturi de uz general pe placă, dintre care unele au funcții speciale:

  • D1 și D2 – pentru interfața I2C/ TWI;
  • D5-D8 - pentru interfata SPI;
  • D9, D10 – pentru UART;
  • D1-D10 – poate funcționa ca PWM.

Platforma are un API modern pentru intrare și ieșire hardware. Acest lucru vă permite să reduceți numărul de pași atunci când lucrați cu echipamentul și când îl configurați. Cu ajutorul firmware-ului NodeMCU, puteți utiliza întregul potențial operațional pentru dezvoltarea rapidă a dispozitivului.

WeMos bazat pe esp8266

WeMos este un alt tip de platformă bazată pe microcontrolerul esp8266. În consecință, există un modul Wi-Fi, Arduino IDE este acceptat și există un conector pentru o antenă externă. Placa are 11 intrări/ieșiri digitale, care (cu excepția D0) acceptă întrerupere/pwm/I2C/one-wire. Tensiunea maximă de alimentare ajunge la 3,3 V. Există și un conector USB pe platformă. Intrarea analogică 1 cu o tensiune maximă de 3,2V.

Pentru a lucra cu modulul, trebuie să instalați driverul CH340 și să configurați IDE-ul Arduino pentru ESP8266. Pentru a face acest lucru, trebuie să adăugați adresa http://arduino.esp8266.com/stable/package_esp8266com_index.json în meniul de setări din linia „link suplimentar pentru managerul de bord”.

După aceasta, trebuie să găsiți pachetul esp8266 by ESP8266 și să îl instalați. Apoi trebuie să selectați microcontrolerul Wemos D1 R2 din meniul de instrumente și să notați schița dorită.

Concluzii privind ESP8266

Cu plăci bazate pe cipul ESP8266, puteți adăuga capabilități Big Internet proiectelor dvs., făcându-le mult mai inteligente. Telecomanda, colectarea și analiza datelor pe server, procesarea vocii și procesarea imaginilor - toate acestea devin disponibile atunci când ne conectăm proiectul prin WiFi la Internet. În următoarele articole, vom arunca o privire mai atentă asupra modului în care puteți programa dispozitive bazate pe esp8266 și, de asemenea, vom acorda atenție plăcilor populare precum WeMos și NodeMcu.