Comunicarea fără fir între dispozitivele electronice și module este foarte importantă, pentru a le face „potrivite” în lumea internetului obiectelor. Protocolul HTTP și limbajul HTML au făcut posibilă transferul datelor oriunde în lume, pe web. Am acoperit deja câteva proiecte care utilizează Wi-Fi cu Arduino, aruncați o privire la ele pentru a începe:
- Trimiterea e-mailului utilizând modulul Arduino și ESP8266 WiFi
- Robot controlat WiFi folosind Arduino
- Controlul LED-urilor RGB folosind Arduino și Wi-Fi
Acum, în acest tutorial, construim un program pentru a trimite date pe web utilizând modulul Arduino și Wi-Fi. Pentru aceasta, mai întâi avem nevoie de o adresă IP fie a unui server global, fie a unui server local, aici, în scopul ușurării și demonstrării, folosim serverul local.
Componente necesare:
- Arduino UNO
- Modul Wi-Fi ESP8266
- Cablu USB
- Conectarea firelor
- Laptop
- Alimentare electrică
Modul Wi-Fi ESP8266:
Conexiuni de circuit:
Diagrama circuitului pentru „Postați date de la Arduino pe web” este prezentată mai jos. Avem nevoie în principal de un modul Wi-Fi Arduino și ESP8266. Pinii Vcc și GND ai ESP8266 sunt conectați direct la 3.3V și GND din Arduino, iar CH_PD este conectat și cu 3.3V. Pinii Rx și Tx ai ESP8266 sunt conectați direct la pinii 2 și 3 din Arduino. Software Serial Library este utilizat pentru a permite comunicarea serială pe pinii 2 și 3 din Arduino. Am acoperit deja în detaliu interfațarea modulului Wi-Fi ESP8266 către Arduino.
Folosind Software Serial Library aici, am permis comunicarea în serie pe pinul 2 și 3 și le-am făcut Rx și respectiv Tx. În mod implicit, pinul 0 și 1 din Arduino sunt utilizați pentru comunicații seriale, dar prin utilizarea bibliotecii SoftwareSerial, putem permite comunicarea serială pe alți pini digitali ai Arduino.
Notă: Pentru a urmări răspunsul ESP8266 pe monitorul serial, deschideți Serial Monitor of Arduino IDE.
Explicație de lucru:
În primul rând, trebuie să ne conectăm modulul Wi-Fi la routerul Wi-Fi pentru conectivitate la rețea. Apoi vom configura serverul local, vom trimite datele pe Web și, în final, vom închide conexiunea. Acest proces și comenzile au fost explicate în pașii de mai jos:
1. Mai întâi trebuie să testăm modulul Wi-Fi prin trimiterea comenzii AT , acesta va reveni la un răspuns care conține OK .
2. După aceasta, trebuie să selectăm modul folosind comanda AT + CWMODE = mode_id , am folosit Mode id = 3. ID-uri de mod:
1 = Mod stație (client)
2 = Mod AP (gazdă)
3 = AP + Mod stație (Da, ESP8266 are un mod dual!)
3. Acum trebuie să ne deconectăm modulul Wi-Fi de la rețeaua Wi-Fi conectată anterior, utilizând comanda AT + CWQAP, deoarece ESP8266 este conectat automat implicit la orice rețea Wi-Fi disponibilă anterior.
4. După aceea, utilizatorul poate reseta modulul cu comanda AT + RST . Acest pas este opțional.
5. Acum trebuie să conectăm ESP8266 la routerul Wi-Fi folosind comanda dată
6. Acum obțineți adresa IP utilizând comanda dată:
Acesta va returna o adresă IP.
7. Acum activați modul multiplex utilizând AT + CIPMUX = 1 (1 pentru conexiune multiplă și 0 pentru conexiune simplă)
8. Acum configurați ESP8266 ca server utilizând AT + CIPSERVER = 1, port_no (portul poate fi 80). Acum, Wi-Fi-ul dvs. este gata. Aici „1” este utilizat pentru a crea serverul și „0” pentru a șterge serverul.
9. Acum, utilizând comanda dată, utilizatorul poate trimite date către serverul creat local:
Id = ID nr. a conexiunii de transmisie
Lungime = Lungimea maximă a datelor este de 2 kb
10. După trimiterea ID-ului și a lungimii către server, trebuie să trimitem date precum: Serial.println („[email protected]”);
11. După trimiterea datelor, trebuie să închidem conexiunea prin comanda dată:
Acum datele au fost transmise către serverul local.
12. Acum introduceți adresa IP în bara de adrese din browserul web și apăsați Enter. Acum utilizatorul poate vedea datele transmise pe pagina web.
Verificați videoclipul de mai jos pentru procesul complet.
Pași pentru programare:
1. Includeți SoftwareSerial Library pentru a permite comunicarea în serie pe PIN 2 și 3 și declarați unele variabile și șiruri.
#include
2. După aceasta, trebuie să definim câteva funcții pentru îndeplinirea sarcinilor dorite.
În funcția Setup () , inițializăm comunicarea serial UART încorporată pentru ESP8266 ca client.begin (9600); la rata de baud de 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("Sistem gata.."); }
3. În funcția wifi_init () , inițializăm modulul wifi trimițând câteva comenzi precum resetare, setare mod, conectare la router, configurare conexiune etc. Aceste comenzi au fost explicate mai sus în partea de descriere.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. În funcția connect_wifi () , trimitem date comenzilor către ESP8266 și apoi citim răspunsul de la modulul Wi-Fi ESP8266.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd);…………………
5. funcția sendwebdata () este utilizată pentru trimiterea datelor către serverul local sau pagina web
void sendwebdata (String webPage) {int ii = 0; while (1) {unsigned int l = webPage.length (); Serial.print ("AT + CIPSEND = 0"); client.print ("AT + CIPSEND = 0");…………………
6. funcția void send () este utilizată pentru trimiterea șirurilor de date către funcția sendwebdata () . Aceasta va fi trimisă în continuare pe pagina web.
void Trimite () {pagina web = "
Bine ați venit la Circuit Digest
"; sendwebdata (pagina web); pagina web = nume; pagina web + = dat;…………………7. funcția get_ip () este utilizată pentru obținerea adresei IP a serverului creat local.
8. În funcția de buclă nulă () , trimitem instrucțiuni utilizatorului pentru reîmprospătarea paginii și verificăm dacă serverul este conectat sau nu. Când utilizatorul reîmprospătează sau solicită pagina web, datele sunt transmise automat la aceeași adresă IP.
bucla nulă () {k = 0; Serial.println („Vă rugăm să reîmprospătați pagina”); în timp ce (k <1000)………………
Putem afișa orice date de la Arduino la pagina web folosind acest proces, cum ar fi temperatura camerei și umiditatea, timpul ceasului, coordonatele GPS, ritmul cardiac etc.