Belaidis ryšys tarp elektroninių prietaisų ir modulių yra labai svarbus, kad jie būtų tinkami daiktų interneto pasaulyje. HTTP protokolas ir HTML kalba leido perduoti duomenis bet kurioje pasaulio vietoje internete. Mes jau apėmėme keletą projektų, kuriuose naudojamas „ Wi-Fi“ su „Arduino“, pažiūrėkite į juos, kaip pradėti:
- El. Pašto siuntimas naudojant „Arduino“ ir ESP8266 „WiFi“ modulį
- „WiFi“ valdomas robotas naudojant „Arduino“
- RGB LED valdymas naudojant „Arduino“ ir „Wi-Fi“
Dabar šioje pamokoje kuriame programą siųsti duomenis į internetą naudodami „Arduino“ ir „Wi-Fi“ modulį. Tam pirmiausia reikia visuotinio arba vietinio serverio IP adreso, čia, kad būtų paprasčiau ir demonstratyviau, naudojame vietinį serverį.
Būtini komponentai:
- „Arduino UNO“
- ESP8266 „Wi-Fi“ modulis
- USB kabelis
- Jungiamieji laidai
- Nešiojamas kompiuteris
- Maitinimo šaltinis
„Wi-Fi“ modulis ESP8266:
Grandinės jungtys:
„Duomenų siuntimo iš„ Arduino “į internetą“ schema pateikta žemiau. Mums labiausiai reikia „ Arduino“ ir ESP8266 „Wi-Fi“ modulio. ESP8266 „Vcc“ ir „GND“ kaiščiai yra tiesiogiai prijungti prie 3,3 V, „Arduino“ ir „CH_PD“ GND taip pat yra prijungti prie 3,3 V. ESP8266 Tx ir Rx kaiščiai yra tiesiogiai prijungti prie „Arduino“ 2 ir 3 kaiščių. Programinės įrangos nuoseklioji biblioteka naudojama nuosekliam ryšiui palaikyti „Arduino“ 2 ir 3 kontaktuose. Mes jau išsamiai aptarėme „Wi-Fi“ modulio ESP8266 sąsają su „Arduino“.
Čia naudodami „Software Serial Library“, leidome nuoseklų ryšį 2 ir 3 kaiščiuose ir padarėme juos atitinkamai Rx ir Tx. Pagal numatytuosius nustatymus nuosekliam ryšiui naudojami „Arduino“ kaiščiai 0 ir 1, tačiau naudodami „SoftwareSerial“ biblioteką galime leisti nuoseklųjį ryšį per kitus skaitmeninius „Arduino“ kaiščius.
Pastaba: norėdami stebėti ESP8266 atsakymą serijiniame monitoriuje, atidarykite „Arduino IDE“ nuoseklųjį monitorių.
Darbinis paaiškinimas:
Pirmiausia, norėdami prisijungti prie tinklo, turime prijungti „Wi-Fi“ modulį prie „Wi-Fi“ maršrutizatoriaus. Tada sukonfigūruosime vietinį serverį, išsiųsime duomenis į internetą ir galiausiai uždarysime ryšį. Šis procesas ir komandos buvo paaiškintos atliekant toliau nurodytus veiksmus:
1. Pirmiausia turime išbandyti „Wi-Fi“ modulį siųsdami komandą AT. Tai grąžins atsakymą, kuriame yra Gerai .
2. Po to turime pasirinkti režimą naudodami komandą AT + CWMODE = mode_id , mes naudojome Mode id = 3. Režimo ID:
1 = stoties režimas (klientas)
2 = AP režimas (pagrindinis kompiuteris)
3 = AP + stoties režimas (taip, ESP8266 turi dvigubą režimą!)
3. Dabar mes turime atjungti „Wi-Fi“ modulį nuo anksčiau prijungto „Wi-Fi“ tinklo naudodami komandą AT + CWQAP, nes ESP8266 yra numatytasis automatinis ryšys, sujungtas su bet kuriuo anksčiau prieinamu „Wi-Fi“ tinklu.
4. Po to vartotojas gali iš naujo nustatyti modulį naudodamas komandą AT + RST . Šis žingsnis yra neprivalomas.
5. Dabar mes turime prijungti ESP8266 prie „Wi-Fi“ maršrutizatoriaus naudodami nurodytą komandą
6. Dabar gaukite IP adresą naudodami nurodytą komandą:
Jis grąžins IP adresą.
7. Dabar įjunkite multiplekso režimą naudodami AT + CIPMUX = 1 (1 daugybiniam ryšiui ir 0 vienkartiniam ryšiui)
8. Dabar sukonfigūruokite ESP8266 kaip serverį naudodami AT + CIPSERVER = 1, port_no (prievadas gali būti 80). Dabar jūsų „Wi-Fi“ yra paruoštas. Čia „1“ naudojamas serveriui sukurti, o „0“ - serveriui ištrinti.
9. Dabar, naudodamas nurodytą komandą, vartotojas gali siųsti duomenis į vietinį sukurtą serverį:
Id = ID Nr. perdavimo ryšio
Ilgis = maksimalus duomenų ilgis yra 2 kb
10. Išsiuntę ID ir ilgį į serverį, turime siųsti tokius duomenis: Serial.println („[email protected]“);
11. Išsiuntus duomenis, reikia uždaryti ryšį pagal nurodytą komandą:
Dabar duomenys buvo perduoti vietiniam serveriui.
12. Dabar žiniatinklio naršyklės adresų juostoje įveskite IP adresą ir paspauskite „Enter“. Dabar vartotojas gali matyti perduotus duomenis tinklalapyje.
Norėdami užbaigti procesą, patikrinkite toliau pateiktą vaizdo įrašą.
Programavimo žingsniai:
1. Įtraukite „SoftwareSerial Library“, kad būtų galima nuosekliai bendrauti PIN 2 ir 3 PIN kodais, ir deklaruokite keletą kintamųjų bei eilučių.
# įtraukti
2. Po to turime apibrėžti kai kurias funkcijas norimoms užduotims atlikti.
Be Setup () funkcija, mes inicijuoti Integruotą serijos UART komunikaciją ESP8266 kaip client.begin (9600); 9600 baudos greičiu.
negaliojanti sąranka () {Serial.begin (9600); klientas. pradžia (9600); wifi_init (); Serial.println („Parengta sistemai..“); }
3. Naudodamiesi funkcija wifi_init () , mes inicijuojame „wifi“ modulį siunčiant kai kurias komandas, tokias kaip atstatymas, nustatymo režimas, prisijungimas prie maršrutizatoriaus, konfigūracijos ryšys ir kt. Šios komandos taip pat buvo paaiškintos aukščiau aprašymo dalyje.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. Funkcijoje connect_wifi () komandų duomenis siunčiame į ESP8266, tada skaitome atsakymą iš ESP8266 „Wi-Fi“ modulio.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; o (1) {Serial.println (cmd);…………………
5. funkcija sendwebdata () naudojama duomenims siųsti į vietinį serverį ar tinklalapį.
void sendwebdata (String webPage) {int ii = 0; while (1) {nepasirašytas int l = tinklalapio.length (); Serial.print („AT + CIPSEND = 0“); klientas.print („AT + CIPSEND = 0“);…………………
6. void send () funkcija naudojama duomenų eilutėms siųsti į sendwebdata () funkciją. Tai bus toliau išsiųsta į tinklalapį.
negaliojantis Siųsti () {tinklalapis = "
Sveiki atvykę į „Circuit Digest“
"; sendwebdata (tinklalapis); webpage = name; tinklalapis + = dat;…………………7. funkcija get_ip () naudojama norint gauti vietinio sukurto serverio IP adresą.
8. Funkcijoje void loop () išsiunčiame instrukcijas vartotojui atnaujinti puslapį ir patikriname, ar serveris neprijungtas. Kai vartotojas atnaujina tinklalapį arba pateikia užklausą, duomenys automatiškai perduodami tuo pačiu IP adresu.
tuštuma kilpa () {k = 0; Serial.println („Prašau atnaujinti savo puslapį“); kol (k <1000)………………
Naudodami šį procesą galime rodyti bet kokius duomenis nuo „Arduino“ iki tinklalapio, pvz., Kambario temperatūrą ir drėgmę, laikrodžio laiką, GPS koordinates, širdies ritmo dažnį ir kt.