Az elektronikai eszközök és modulok közötti vezeték nélküli kommunikáció nagyon fontos, hogy „illeszkedjenek” a tárgyak internetének világába. A HTTP protokoll és a HTML nyelv lehetővé tette az adatok átadását a világ bármely pontjára, az interneten keresztül. Már bemutattunk néhány olyan projektet, amelyek a Wi-Fi-t használják az Arduinóval, és nézze át őket az Első lépések című részben:
- E-mail küldése az Arduino és az ESP8266 WiFi modul használatával
- WiFi vezérlésű robot Arduino használatával
- Az RGB LED vezérlése Arduino és Wi-Fi használatával
Most ebben az oktatóanyagban egy olyan programot építünk, amellyel adatokat küldhetünk az internetre az Arduino és a Wi-Fi modul segítségével. Ehhez először egy globális vagy egy helyi szerver IP-címére van szükségünk, itt a könnyű és a bemutatás céljából a helyi szervert használjuk.
Szükséges alkatrészek:
- Arduino UNO
- ESP8266 Wi-Fi modul
- USB kábel
- Csatlakozó vezetékek
- Laptop
- Tápegység
ESP8266 Wi-Fi modul:
Áramköri csatlakozások:
Az „Adatok közzététele az Arduinóról a webre” áramköri diagram az alábbiakban látható. Elsősorban Arduino és ESP8266 Wi-Fi modulra van szükségünk. Az ESP8266 Vcc és GND csatlakozói közvetlenül csatlakoznak a 3,3 V-hoz, az Arduino és a CH_PD pedig a 3,3 V-hoz is csatlakoznak. Az ESP8266 Tx és Rx csapjai közvetlenül kapcsolódnak az Arduino 2. és 3. érintkezőjéhez. A szoftveres soros könyvtár lehetővé teszi a soros kommunikáció lehetővé tételét az Arduino 2. és 3. érintkezőjén. Az ESP8266 Wi-Fi modul Interfacingjét az Arduinóhoz már részletesen ismertettük.
A Software Serial Library itteni használatával engedélyeztük a soros kommunikációt a 2. és 3. tűn, és Rx-ként, illetve Tx-kké alakítottuk őket. Alapértelmezés szerint az Arduino 0-as és 1-es érintkezõjét használják a soros kommunikációhoz, de a SoftwareSerial könyvtár használatával engedélyezhetjük a soros kommunikációt az Arduino más digitális érintkezõin.
Megjegyzés: Az ESP8266 válaszának soros monitoron történő megtekintéséhez nyissa meg az Arduino IDE soros monitorját.
Munka magyarázat:
Először is csatlakoztatnunk kell a Wi-Fi modulunkat a Wi-Fi útválasztóhoz a hálózati kapcsolat érdekében. Ezután konfiguráljuk a helyi szervert, elküldjük az adatokat az internetre és végül bezárjuk a kapcsolatot. Ezt a folyamatot és a parancsokat az alábbi lépések magyarázták:
1. Először tesztelnünk kell a Wi-Fi modult az AT parancs küldésével, ez visszaállítja az OK-t tartalmazó választ.
2. Ezt követően az AT + CWMODE = mode_id paranccsal kell kiválasztanunk a módot, a Mode id = 3 parancsot használtuk. Mód-azonosítók:
1 = Állomás mód (kliens)
2 = AP mód (állomás)
3 = AP + Állomás mód (Igen, az ESP8266 kettős móddal rendelkezik!)
3. Most le kell választanunk a Wi-Fi modulunkat az előzőleg csatlakoztatott Wi-Fi hálózatról az AT + CWQAP paranccsal , mivel az ESP8266 alapértelmezés szerint automatikusan csatlakozik bármelyik korábban elérhető Wi-Fi hálózathoz
4. Ezt követően a felhasználó visszaállíthatja a modult az AT + RST paranccsal. Ez a lépés nem kötelező.
5. Most az adott parancs használatával csatlakoztatnunk kell az ESP8266-ot a Wi-Fi routerhez
6. Most kapja meg az IP címet a megadott paranccsal:
IP-címet ad vissza.
7. Most engedélyezze a multiplex módot az AT + CIPMUX = 1 használatával (1 több kapcsolathoz és 0 egyetlen csatlakozáshoz)
8. Most konfigurálja az ESP8266-ot kiszolgálóvá az AT + CIPSERVER = 1, port_no (a port lehet 80) használatával. Most készen áll a Wi-Fi-kapcsolat. Itt az '1' a szerver létrehozására, a '0' pedig a szerver törlésére szolgál.
9. Most a megadott parancs használatával a felhasználó adatokat küldhet a helyi létrehozott szerverre:
Id = azonosítószám átviteli kapcsolat
Hossz = Az adatok maximális hossza 2 kb
10. Miután elküldtük az azonosítót és a hosszúságot a szerverre, adatokat kell küldenünk, például: Serial.println (“[email protected]”);
11. Az adatok elküldése után meg kell szüntetnünk a kapcsolatot egy adott paranccsal:
Az adatokat továbbítottuk a helyi szerverre.
12. Most írja be az IP címet a webböngésző címsorába, és nyomja meg az Enter billentyűt. Most a felhasználó láthatja a továbbított adatokat a weboldalon.
Ellenőrizze az alábbi videót a teljes folyamat érdekében.
A programozás lépései:
1. Tartalmazza a SoftwareSerial Library programot, hogy lehetővé tegye a soros kommunikációt a PIN 2 és 3 PIN kódokon, és deklaráljon néhány változót és karakterláncot.
#include
2. Ezt követően meg kell határoznunk néhány funkciót a kívánt feladataink elvégzéséhez.
A Setup () függvényben inicializáljuk a beépített soros UART kommunikációt az ESP8266 számára, mint client.begin (9600); 9600 átviteli sebességgel.
void setup () {Soros.kezdés (9600); client.begin (9600); wifi_init (); Serial.println ("Rendszer kész.."); }
3. A wifi_init () függvényben inicializáljuk a wifi modult néhány parancs elküldésével, mint például a reset, set mode, kapcsolódás az útválasztóhoz, a kapcsolat konfigurálása stb.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. A connect_wifi () függvényben parancsadatokat küldünk az ESP8266-nak, majd beolvassuk a választ az ESP8266 Wi-Fi modulból.
void connect_wifi (Karakterlánc cmd, int t) {int temp = 0, i = 0; míg (1) {Soros.println (cmd);…………………
5. a sendwebdata () függvény az adatok helyi szerverre vagy weboldalra történő elküldésére szolgál.
void sendwebdata (String webPage) {int ii = 0; while (1) {unsigned int l = weblap.length (); Serial.print ("AT + CIPSEND = 0,"); client.print ("AT + CIPSEND = 0,");…………………
6. void send () függvény az adat stringek küldésére sendwebdata () függvényre szolgál. Ezt tovább fogjuk küldeni a weboldalra.
void Küldés () {webpage = "
Üdvözöljük a Circuit Digest oldalán
"; sendwebdata (weboldal); weblap = név; weboldal + = dat;…………………7. A get_ip () függvény a helyi létrehozott szerver IP-címének lekérésére szolgál.
8. A void loop () függvényben utasítást küldünk a felhasználónak az oldal frissítésére, és ellenőrizzük, hogy a szerver nincs-e csatlakoztatva. Amikor a felhasználó frissíti vagy kéri a weboldalt, az adatok automatikusan ugyanarra az IP-címre kerülnek.
void loop () {k = 0; Serial.println ("Kérjük, frissítse az oldalát"); míg (k <1000)………………
Ezzel az eljárással bármilyen adatot megjeleníthetünk az Arduinótól a weboldalig, például szobahőmérséklet és páratartalom, óra idő, GPS koordináták, pulzusszám stb.