Bezprzewodowa komunikacja między urządzeniami i modułami elektronicznymi jest bardzo ważna, aby były „dopasowane” do świata Internetu rzeczy. Protokół HTTP i język HTML umożliwiły przesyłanie danych w dowolne miejsce na świecie przez Internet. Omówiliśmy już niektóre projekty, które używają Wi-Fi z Arduino, spójrz na nie, aby rozpocząć:
- Wysyłanie wiadomości e-mail za pomocą Arduino i modułu WiFi ESP8266
- Robot sterowany przez WiFi za pomocą Arduino
- Sterowanie LED RGB za pomocą Arduino i Wi-Fi
Teraz w tym samouczku budujemy program do wysyłania danych do sieci przy użyciu Arduino i modułu Wi-Fi. W tym celu najpierw potrzebujemy adresu IP serwera globalnego lub lokalnego, tutaj dla ułatwienia i celów demonstracyjnych używamy serwera lokalnego.
Wymagane składniki:
- Arduino UNO
- Moduł Wi-Fi ESP8266
- Kabel USB
- Przewody łączące
- Laptop
- Zasilacz
Moduł Wi-Fi ESP8266:
Połączenia obwodów:
Schemat obwodu dla „przesyłania danych z Arduino do sieci” jest podany poniżej. Potrzebujemy głównie Arduino i modułu Wi-Fi ESP8266. Piny Vcc i GND ESP8266 są bezpośrednio podłączone do 3,3 V, a GND Arduino, a CH_PD jest również połączone z 3,3 V. Piny Tx i Rx ESP8266 są bezpośrednio podłączone do pinów 2 i 3 Arduino. Oprogramowanie Serial Library umożliwia komunikację szeregową na pinach 2 i 3 Arduino. Omówiliśmy już szczegółowo interfejs modułu Wi-Fi ESP8266 z Arduino.
Używając tutaj Software Serial Library, zezwoliliśmy na komunikację szeregową na pinach 2 i 3 i stworzyliśmy je odpowiednio Rx i Tx. Domyślnie pin 0 i 1 Arduino są używane do komunikacji szeregowej, ale korzystając z biblioteki SoftwareSerial, możemy zezwolić na komunikację szeregową na innych pinach cyfrowych Arduino.
Uwaga: Aby zobaczyć odpowiedź ESP8266 na monitorze szeregowym, otwórz Monitor szeregowy Arduino IDE.
Objaśnienie robocze:
Przede wszystkim musimy podłączyć nasz moduł Wi-Fi do routera Wi-Fi w celu uzyskania łączności sieciowej. Następnie skonfigurujemy serwer lokalny, wyślemy dane do sieci i ostatecznie zamkniemy połączenie. Ten proces i polecenia zostały wyjaśnione w poniższych krokach:
1. Najpierw musimy przetestować moduł Wi-Fi, wysyłając komendę AT , cofnie on odpowiedź zawierającą OK .
2. Następnie musimy wybrać tryb poleceniem AT + CWMODE = mode_id , użyliśmy Mode id = 3. Identyfikatory trybu:
1 = tryb stacji (klient)
2 = tryb AP (host)
3 = tryb AP + stacja (tak, ESP8266 ma tryb podwójny!)
3. Teraz musimy odłączyć nasz moduł Wi-Fi od poprzednio podłączonej sieci Wi-Fi, używając polecenia AT + CWQAP, ponieważ ESP8266 jest domyślnie automatycznie połączony z dowolną wcześniej dostępną siecią Wi-Fi
4. Następnie użytkownik może zresetować moduł poleceniem AT + RST . Ten krok jest opcjonalny.
5. Teraz musimy podłączyć ESP8266 do routera Wi-Fi za pomocą podanego polecenia
6. Teraz uzyskaj adres IP za pomocą podanego polecenia:
Zwróci adres IP.
7. Teraz włącz tryb multipleksowania za pomocą AT + CIPMUX = 1 (1 dla wielu połączeń i 0 dla pojedynczego połączenia)
8. Teraz skonfiguruj ESP8266 jako serwer, używając AT + CIPSERVER = 1, port_no (port może wynosić 80). Teraz Twoje Wi-Fi jest gotowe. Tutaj „1” służy do tworzenia serwera, a „0” do usuwania serwera.
9. Teraz za pomocą podanej komendy użytkownik może wysłać dane do utworzonego lokalnie serwera:
Id = nr ID połączenia transmisyjnego
Długość = maksymalna długość danych to 2 kb
10. Po przesłaniu ID i Length na serwer musimy przesłać dane takie jak: Serial.println („[email protected]”);
11. Po przesłaniu danych musimy zakończyć połączenie wydanym poleceniem:
Teraz dane zostały przesłane do lokalnego serwera.
12. Teraz wpisz adres IP w pasku adresu w przeglądarce internetowej i naciśnij enter. Teraz użytkownik może zobaczyć przesyłane dane na stronie internetowej.
Sprawdź poniższy film, aby zobaczyć cały proces.
Kroki do programowania:
1. Dołącz bibliotekę SoftwareSerial, aby umożliwić komunikację szeregową na PIN 2 i 3 oraz zadeklaruj niektóre zmienne i ciągi.
#zawierać
2. Następnie musimy zdefiniować kilka funkcji do wykonania naszych żądanych zadań.
W funkcji Setup () inicjalizujemy wbudowaną komunikację szeregową UART dla ESP8266 jako client.begin (9600); przy szybkości transmisji 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("System gotowy.."); }
3. W funkcji wifi_init () inicjalizujemy moduł wifi wysyłając polecenia takie jak reset, ustawianie trybu, łączenie z routerem, konfigurowanie połączenia itp. Polecenia te zostały również wyjaśnione powyżej w części opisowej.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. W funkcji connect_wifi () wysyłamy dane poleceń do ESP8266, a następnie odczytujemy odpowiedź z modułu Wi-Fi ESP8266.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd);…………………
5. Funkcja sendwebdata () służy do wysyłania danych do lokalnego serwera lub strony internetowej.
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. Funkcja void send () służy do wysyłania ciągów danych do funkcji sendwebdata () . Zostaną one dalej przesłane na stronę internetową.
void Send () {webpage = "
Witamy w Circuit Digest
"; sendwebdata (strona internetowa); strona internetowa = nazwa; strona internetowa + = dat;…………………7. Funkcja get_ip () służy do uzyskania adresu IP lokalnie utworzonego serwera.
8. W funkcji void loop () wysyłamy do użytkownika instrukcję odświeżenia strony i sprawdzamy, czy serwer jest podłączony czy nie. Gdy użytkownik odświeża lub żąda strony internetowej, dane są automatycznie przesyłane na ten sam adres IP.
void loop () {k = 0; Serial.println ("Odśwież stronę"); podczas gdy (k <1000)………………
Możemy wyświetlać dowolne dane z Arduino na stronę internetową za pomocą tego procesu, takie jak temperatura i wilgotność w pomieszczeniu, czas zegara, współrzędne GPS, tętno itp.