Brezžična komunikacija med elektronskimi napravami in moduli je zelo pomembna, da se uredijo v svetu interneta stvari. Protokol HTTP in jezik HTML sta omogočila prenos podatkov kjer koli na svetu, prek spleta. Z Arduinom smo že pokrili nekaj projektov, ki uporabljajo Wi-Fi, poglejte si jih v Uvod:
- Pošiljanje e-pošte z uporabo modula Arduino in ESP8266 WiFi
- Robot, ki ga nadzoruje WiFi, z uporabo Arduina
- Nadzor RGB LED z uporabo Arduino in Wi-Fi
Zdaj v tej vadnici gradimo program za pošiljanje podatkov v splet z uporabo modula Arduino in Wi-Fi. Za to najprej potrebujemo naslov IP bodisi globalnega bodisi lokalnega strežnika, tu za lažji in predstavitveni namen uporabljamo lokalni strežnik.
Potrebne komponente:
- Arduino UNO
- ESP8266 Wi-Fi modul
- Kabel USB
- Priključne žice
- Prenosnik
- Napajanje
Modul Wi-Fi ESP8266:
Circuit Connections:
Shema vezja za »Objavljanje podatkov iz Arduina na splet« je podana spodaj. Potrebujemo predvsem modul Arduino in ESP8266 Wi-Fi. Zatiči Vcc in GND ESP8266 so neposredno povezani na 3.3V, GND Arduina in CH_PD pa je povezan tudi z 3.3V. Zatiča Tx in Rx ESP8266 sta neposredno priključena na zatiča 2 in 3 Arduina. Programska serijska knjižnica se uporablja za serijsko komunikacijo na nogah 2 in 3 Arduina. Podrobno smo že obravnavali povezavo modula Wi-Fi ESP8266 z Arduinom.
Z uporabo programske serijske knjižnice tukaj smo dovolili serijsko komunikacijo na pin 2 in 3 ter jih naredili Rx oziroma Tx. Privzeto se za zaporedno komunikacijo uporabljata pin 0 in 1 Arduina, z uporabo knjižnice SoftwareSerial pa lahko omogočimo serijsko komunikacijo na drugih digitalnih nožicah Arduina.
Opomba: Če si želite ogledati odziv ESP8266 na serijskem monitorju, odprite Serial Monitor za Arduino IDE.
Delovna razlaga:
Najprej moramo svoj modul Wi-Fi povezati z usmerjevalnikom Wi-Fi za omrežno povezljivost. Nato bomo konfigurirali lokalni strežnik, podatke poslali na splet in na koncu zaprli povezavo. Ta postopek in ukazi so razloženi v spodnjih korakih:
1. Najprej moramo preizkusiti modul Wi-Fi s pošiljanjem ukaza AT , ta pa bo vrnil odgovor, ki vsebuje OK .
2. Po tem moramo izbrati način z ukazom AT + CWMODE = mode_id , uporabili smo način id = 3. ID-ji načina:
1 = Način postaje (odjemalec)
2 = Način AP (gostitelj)
3 = Način AP + Postaja (Da, ESP8266 ima dvojni način!)
3. Zdaj moramo z ukazom AT + CWQAP odklopiti naš modul Wi-Fi s predhodno povezanim omrežjem Wi-Fi , saj je ESP8266 privzeto samodejno povezan s katerim koli predhodno razpoložljivim omrežjem Wi-Fi
4. Po tem lahko uporabnik ponastavi modul z ukazom AT + RST . Ta korak ni obvezen.
5. Zdaj moramo povezati ESP8266 z usmerjevalnikom Wi-Fi z danim ukazom
6. Zdaj dobite naslov IP z uporabo ukaza:
Vrnil bo naslov IP.
7. Zdaj omogočite način multipleksa z uporabo AT + CIPMUX = 1 (1 za večkratno povezavo in 0 za enojno povezavo)
8. Zdaj konfigurirajte ESP8266 kot strežnik z AT + CIPSERVER = 1, port_no (vrata so lahko 80). Zdaj je vaš Wi-Fi pripravljen. Tu se '1' uporablja za ustvarjanje strežnika in '0' za brisanje strežnika.
9. Zdaj lahko uporabnik s pomočjo danega ukaza pošlje podatke lokalno ustvarjenemu strežniku:
Id = ID št. oddajne povezave
Dolžina = Največja dolžina podatkov je 2 kb
10. Po pošiljanju ID-ja in dolžine strežniku moramo poslati podatke, kot so: Serial.println (“[email protected]”);
11. Po pošiljanju podatkov moramo povezavo prekiniti z danim ukazom:
Zdaj so bili podatki poslani na lokalni strežnik.
12. Zdaj v naslovno vrstico spletnega brskalnika vnesite naslov IP in pritisnite Enter. Zdaj lahko uporabnik vidi prenesene podatke na spletni strani.
Za popoln postopek preverite spodnji video.
Koraki za programiranje:
1. Vključite programsko knjižnico SoftwareSerial, da omogočite serijsko komunikacijo na PIN 2 in 3 ter navedite nekatere spremenljivke in nize.
#include
2. Po tem moramo določiti nekatere funkcije za izvajanje želenih nalog.
V funkciji Setup () inicializiramo vgrajeno serijsko komunikacijo UART za ESP8266 kot client.begin (9600); s hitrostjo prenosa 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("Sistem pripravljen.."); }
3. V funkciji wifi_init () inicializiramo wifi modul tako, da pošljemo nekaj ukazov, kot so ponastavitev, nastavitev načina, povezava z usmerjevalnikom, konfiguriranje povezave itd. Ti ukazi so bili tudi pojasnjeni zgoraj v opisnem delu.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. V funkciji connect_wifi () na ESP8266 pošljemo podatke o ukazih in nato preberemo odgovor iz modula Wi-Fi ESP8266.
neveljavno connect_wifi (Niz cmd, int t) {int temp = 0, i = 0; medtem ko (1) {Serial.println (cmd);…………………
5. funkcija sendwebdata () se uporablja za pošiljanje podatkov na lokalni strežnik ali spletno stran.
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. funkcija void send () se uporablja za pošiljanje podatkovnih nizov v funkcijo sendwebdata () . To bo nadalje poslano na spletno stran.
void Pošlji () {webpage = "
Dobrodošli v Circuit Digest
"; sendwebdata (spletna stran); spletna stran = ime; spletna stran + = dat;…………………7. funkcija get_ip () se uporablja za pridobivanje naslova IP lokalno ustvarjenega strežnika.
8. V funkciji void loop () uporabniku pošljemo navodila za osvežitev strani in preverimo, ali je strežnik povezan. Ko uporabnik osveži ali zahteva spletno stran, se podatki samodejno prenesejo na isti naslov IP.
void loop () {k = 0; Serial.println ("Prosimo, osvežite svojo stran"); medtem ko (k <1000)………………
S tem postopkom lahko prikažemo katere koli podatke od Arduina do spletne strani, na primer sobno temperaturo in vlažnost, čas ure, GPS koordinate, srčni utrip itd.