Draadloze communicatie tussen elektronische apparaten en modules is erg belangrijk om ze 'Fit' te maken in de World of Internet of Things. Het HTTP-protocol en de HTML-taal hebben het mogelijk gemaakt om de gegevens overal ter wereld via internet over te dragen. We hebben al enkele projecten behandeld die Wi-Fi gebruiken met Arduino, bekijk ze eens op Aan de slag:
- E-mail verzenden met Arduino en ESP8266 WiFi-module
- WiFi-gestuurde robot met Arduino
- RGB LED aansturen met Arduino en Wi-Fi
In deze tutorial bouwen we nu een programma om gegevens naar het web te verzenden met behulp van Arduino en Wi-Fi-module. Hiervoor hebben we eerst een IP-adres van een globale of lokale server nodig, hier gebruiken we voor het gemak en de demonstratie de lokale server.
Vereiste componenten:
- Arduino UNO
- ESP8266 Wi-Fi-module
- USB-kabel
- Draden aansluiten
- Laptop
- Stroomvoorziening
Wi-Fi-module ESP8266:
Circuitverbindingen:
Het schakelschema voor "Gegevens van Arduino naar web posten" wordt hieronder gegeven. We hebben voornamelijk een Arduino en ESP8266 wifi-module nodig. De Vcc- en GND-pinnen van ESP8266 zijn rechtstreeks verbonden met 3.3V en GND van Arduino en CH_PD is ook verbonden met 3.3V. Tx- en Rx-pinnen van ESP8266 zijn rechtstreeks verbonden met pin 2 en 3 van Arduino. Software Serial Library wordt gebruikt om seriële communicatie op pin 2 en 3 van Arduino mogelijk te maken. We hebben de interface van de ESP8266 Wi-Fi-module met Arduino al in detail besproken.
Door hier Software Serial Library te gebruiken, hebben we seriële communicatie op pin 2 en 3 toegestaan en deze respectievelijk Rx en Tx gemaakt. Standaard worden pin 0 en 1 van Arduino gebruikt voor seriële communicatie, maar door de SoftwareSerial-bibliotheek te gebruiken, kunnen we seriële communicatie op andere digitale pinnen van de Arduino toestaan.
Opmerking: om de reactie van ESP8266 op een seriële monitor te bekijken, opent u Serial Monitor van Arduino IDE.
Werkende uitleg:
Allereerst moeten we onze Wi-Fi-module verbinden met een Wi-Fi-router voor netwerkconnectiviteit. Vervolgens zullen we de lokale server configureren, de gegevens naar het web verzenden en ten slotte de verbinding sluiten. Dit proces en de opdrachten zijn uitgelegd in onderstaande stappen:
1. Eerst moeten we de Wi-Fi-module testen door een AT- commando te verzenden, het zal een antwoord met OK terugzetten.
2. Hierna moeten we de modus selecteren met het commando AT + CWMODE = mode_id , we hebben Mode id = 3 gebruikt. Modus-id's:
1 = Station-modus (client)
2 = AP-modus (host)
3 = AP + Station-modus (Ja, ESP8266 heeft een dubbele modus!)
3. Nu moeten we onze Wi-Fi-module loskoppelen van het eerder verbonden Wi-Fi-netwerk door de opdracht AT + CWQAP te gebruiken, aangezien ESP8266 standaard automatisch verbonden is met elk eerder beschikbaar Wi-Fi-netwerk
4. Daarna kan de gebruiker de module resetten met het AT + RST- commando. Deze stap is optioneel.
5. Nu moeten we de ESP8266 verbinden met de Wi-Fi-router met behulp van het opgegeven commando
6. Haal nu het IP-adres op door het gegeven commando te gebruiken:
Het zal een IP-adres retourneren.
7. Schakel nu de multiplexmodus in door AT + CIPMUX = 1 te gebruiken (1 voor meervoudige verbinding en 0 voor enkele verbinding)
8. Configureer nu ESP8266 als server door AT + CIPSERVER = 1, port_no te gebruiken (poort kan 80 zijn). Nu is je wifi klaar. Hier wordt '1' gebruikt om de server aan te maken en '0' om de server te verwijderen.
9. Nu kan de gebruiker met behulp van het gegeven commando gegevens naar de lokaal gemaakte server verzenden:
Id = ID-nr. van verzenden verbinding
Lengte = maximale lengte van gegevens is 2 kb
10. Na het verzenden van ID en lengte naar de server, moeten we gegevens verzenden zoals: Serial.println ("[email protected]");
11. Na het verzenden van gegevens moeten we de verbinding verbreken met het gegeven commando:
Nu zijn de gegevens naar de lokale server verzonden.
12. Typ nu het IP-adres in de adresbalk in de webbrowser en druk op enter. Nu kan de gebruiker de verzonden gegevens op de webpagina zien.
Bekijk de onderstaande video voor het volledige proces.
Stappen voor programmeren:
1. Voeg SoftwareSerial Library toe om seriële communicatie op PIN 2 & 3 mogelijk te maken en geef enkele variabelen en strings aan.
# omvatten
2. Hierna moeten we enkele functies definiëren om onze gewenste taken uit te voeren.
In de Setup () functie initialiseren we ingebouwde seriële UART-communicatie voor ESP8266 als client.begin (9600); met een baudrate van 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("Systeem gereed.."); }
3. In de wifi_init () functie initialiseren we de wifi module door enkele commando's te sturen zoals reset, set mode, verbinding maken met router, verbinding configureren etc. Deze commando's zijn ook hierboven uitgelegd in het beschrijvingsgedeelte.
ongeldig wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. In de functie connect_wifi () sturen we commandogegevens naar ESP8266 en lezen we het antwoord van de ESP8266 Wi-Fi-module.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd);…………………
5. sendwebdata () functie wordt gebruikt voor het verzenden van gegevens naar lokale server of webpagina.
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. void send () functie wordt gebruikt voor het verzenden van gegevensstrings naar sendwebdata () functie. Dat wordt verder naar de webpagina gestuurd.
void Verzenden () {webpage = "
Welkom bij Circuit Digest
"; sendwebdata (webpagina); webpage = naam; webpagina + = dat;…………………7. functie get_ip () wordt gebruikt om het IP-adres van de lokaal gemaakte server op te halen.
8. In de void loop () -functie sturen we een instructie naar de gebruiker om de pagina te vernieuwen en te controleren of de server is verbonden of niet. Wanneer de gebruiker de webpagina vernieuwt of opvraagt, worden de gegevens automatisch naar hetzelfde IP-adres verzonden.
lege lus () {k = 0; Serial.println ("Vernieuw uw pagina"); terwijl (k <1000)………………
We kunnen alle gegevens van Arduino naar webpagina weergeven met behulp van dit proces, zoals kamertemperatuur en vochtigheid, kloktijd, GPS-coördinaten, hartslag enz.