Conectarea Arduino Nano cu modulul ESP8266 Wifi

Recent am început să mă joc cu Arduinos pentru a conecta câțiva senzori. Am folosit un Arduino Nano pentru a măsura temperatura, umiditatea, presiunea aerului și nivelul de lumină.

Pentru a stoca datele într-o bază de date, am folosit un alt Arduino pe care l-am conectat la un Raspberry Pi și i-am lăsat pe cei doi Arduino să vorbească. fără fir între ele prin intermediul a 433 MHz.

Toate acestea funcționează destul de bine, dar comunicația de 433 MHz nu este tocmai cea mai fiabilă (de multe ori îmi lipsește o transmisie). Când am dat peste modulul ESP8266, mi s-a părut soluția optimă pentru comunicare. Cât de mișto ar fi dacă aș putea extrage informațiile printr-un apel HTTP de la Raspberry Pi?

După ce m-am jucat mai multe ore, am încărcat multe firmware-uri diferite, devenind din ce în ce mai frustrat pentru că nu aș putea obțineți-l să facă orice, în sfârșit am funcționat printr-un modul FTDI conectat astfel:

introduceți descrierea imaginii aici

Folosesc un modul de alimentare MB102 pentru a furniza 3.3v cerut de ESP8266. Se pare că trebuie să conectați solul de la MB102 la solul modulului FTDI pentru a obține orice răspuns adecvat. După ce am făcut asta, am putut să trimit comenzi AT și să primesc răspunsurile corecte. Aș putea chiar să-l conectez la Wifi-ul meu de acasă.

Următorul lucru pe care vreau să-l fac este să-l conectez la Arduino. Am găsit o schemă foarte simplă pentru asta ( http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/ ), unde conectați RX la TX și TX la RX. Folosind MB102 l-am conectat astfel:

introduceți descrierea imaginii aici

Se pare că acum ar trebui să pot încărca o schiță goală pe Arduino și apoi să folosesc din nou monitorul serial pentru a detecta comanda AT, exact așa cum am făcut-o când am folosit modulul FTDI.

Problema este că nu obțin nimic în acest fel. Nici măcar nu văd propriile comenzi AT în consolă. Văd ESP8266 clipind de fiecare dată când trimit o comandă (chiar o văd că este încă conectată la routerul meu, probabil că își amintea informațiile pe care le trimit prin FTDI .. .?)

Întrebarea este, ce greșesc? Am citit câteva postări despre TX de la Arduino fiind și 5v și că trebuie să faceți ceva pentru a-l readuce la 3.3v, dar acolo sunt, de asemenea, multe tutoriale care spun că „nu este obligatoriu.

Răspuns

Cel mai simplu mod de a lucra cu acești furnizori este să vă conectați le la o pereche de pini Arduino de rezervă și utilizați SoftwareSerial pentru comunicare (cu excepția cazului în care utilizați unul dintre Arduinos cu mai multe UART). SoftwareSerial funcționează până la 9600 baud pe dispozitive de 16 MHz, 4800 pe dispozitive de 8 MHz, deci veți avea nevoie pentru a seta ESP8266 pentru a se potrivi asta. În prezent, expediază la 115200 baud. Puteți utiliza hardware-ul UART pe pini (0, 1), dar reprogramarea Arduino înseamnă deconectarea & reconectarea temporară a ESP de fiecare dată și îmbătrânirea destul de rapidă.

Iată ce fac cu ESP-urile noi (dacă v-ați relansat ESP-ul, va trebui să descărcați emulatorul setului de instrucțiuni AT și să-l re-flash cu asta, mai întâi):

# To configure a new ESP module: # Connect the ESP and the FTDI as in your top diagram, set your # terminal-emulator to 115200 baud, and enter the following: AT # ESP should respond "OK" AT+RST # Resets the ESP AT+UART_DEF=9600,8,1,0,0 # Sets ESP UART: 9600,N,8,1,no flow ctl # Now change the terminal emulator baud rate to 9600 AT+CWMODE=1 # Set ESP to station mode (client) ATE0 # Set ESP"s echo off AT+CWLAP # List access points - after a short pause # the ESP returns a list of WiFi access points 

Pentru referințe viitoare, iată un link către set de instrucțiuni ESP8266 AT .

Actualizare iunie 2020: linkul de mai sus a fost întrerupt, acum remediat. Puteți găsi, de asemenea, documentație în contul github Espressif (lizibil online, dar nu pdf, începând cu această dată).

Comentarii

  • Tocmai mi-am dat seama că această întrebare a fost eliminată din arhiva întrebărilor fără răspuns de acum 6 luni . Oh, bine – poate că acest răspuns va ajuta pe altcineva acum sau în curând.

Răspuns

S-ar putea să existe problemă cu viteza de transmisie de la cipul Nano FTDI la RX / TX și ESP8266. V-ați deconectat când încărcați schița?

Ce zici de încercarea aici ?

Noroc!

Comentarii

  • Când lucrez cu ESP8266, funcționează om 115200 baud, orice altceva dă doar gunoi . Am ‘ încercat codul de pe blogul conectat (modificând doar rata de transmisie), îl văd ‘ trimitând comanda către ESP8266 (lumină albastră intermitentă), dar nu reușește atunci când încearcă să execute Serial.find (” > „) comanda. De asemenea, văd ieșirea nouă de la ESP8266. Am deconectat ESP8266 în timp ce încărcai.

Răspuns

Am dat peste un tutorial bun aici, am încercat și face asta job: https://blogs.msdn.microsoft.com/abhinaba/2016/01/23/esp8266-wifi-with-arduino-uno-and-nano/

Comentarii

  • Aceasta va funcționa, cu excepția comenzii CIOBAUD care a fost înlocuită.Comanda curentă pentru toate funcțiile UART este: AT+UART_DEF=<baud>,<databits>,<stopbits>,<parity>,<flowcontrol> sau AT+UART_DEF-9600,8,1,0,0 pentru a fi compatibil cu SoftwareSerial. Înlocuiți ” _DEF ” cu ” _CUR ” dacă această modificare este doar pentru sesiune; prima comandă o face implicită la pornire.
  • Vă rugăm să puteți extinde informațiile de pe blogul respectiv în acest răspuns dacă linkul moare, dar și pentru a face un răspuns mai bun

Răspuns

Da, dacă utilizați diferite surse de alimentare, întotdeauna trebuie conectate la sol, altfel plăcile nu știu ce zero volți este.

TX-ul Arduino este 5v, aveți nevoie de un schimbător de nivel pentru a converti 5v în 3,3v, ceva de genul acesta ( https://shop.pimoroni.com/products/adafruit-4-channel-i2c-safe-bi-directional-logic-level-converter?utm_medium=cpc&utm_source=googlepla&variant=302017581&gclid=CPqujsPxlc0CFcYcGwodb8YIoA )

TX-ul ESP8266 este de 3,3 v, iar RX-ul Arduino-ului este de 5 V și veți avea nevoie de un schimbător de nivel pentru a face față acestui lucru. utilizați același lucru ca cel enumerat mai sus, deoarece poate converti 4 semnale de înaltă (5v) în 4 semnale de joasă (3,3v).

Oamenii spun că puteți face acest lucru cu rezistențe, dar am citit și că nu funcționați suficient de bine pentru a gestiona semnalele digitale cu comutare rapidă (deci 300 Baud pe serial ar putea fi OK, dar nu 115000 :))

Spuneți că nu aveți nevoie de convertoare de nivel. Lucrurile adevărate s-ar putea funcționa pentru o vreme fără ele, dar mai devreme sau mai târziu va apărea ceva. Creșterea tensiunii va accelera procesul, astfel încât să vă puteți imagina ce se va întâmpla dacă ați conectat o sursă de 230v direct la un dispozitiv USB.

Un ultim punct, știți că ESP8266 este un procesor de 80 / 160MHz cu 256KB de RAM, atunci când comparați că Arduino este ca și cum vă programează PC-ul prin telefon. ați putea încerca să conectați ESP8266 printr-un modul FTDI și să-l programați prin Arduino IDE în Arduino C. Este mult mai ușor decât toate aceste conexiuni.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *