Bezdrátová komunikace mezi elektronickými zařízeními a moduly je velmi důležitá, aby byla „fit“ ve světě internetu věcí. Protokol HTTP a jazyk HTML umožnily přenos dat kamkoli na světě, přes web. Některé projekty, které využívají Wi-Fi s Arduinem, jsme již pokryli , podívejte se na ně Začínáme:
- Odesílání e-mailů pomocí modulů Arduino a ESP8266 WiFi
- WiFi řízený robot pomocí Arduina
- Ovládání RGB LED pomocí Arduina a Wi-Fi
Nyní v tomto tutoriálu vytváříme program pro odesílání dat na web pomocí modulu Arduino a Wi-Fi. K tomu nejprve potřebujeme IP adresu globálního nebo místního serveru, zde pro usnadnění a demonstraci používáme místní server.
Požadované komponenty:
- Arduino UNO
- Modul Wi-Fi ESP8266
- USB kabel
- Připojovací vodiče
- Notebook
- Zdroj napájení
Modul Wi-Fi ESP8266:
Připojení obvodu:
Obvodové schéma pro „Odesílání dat z Arduina na web“ je uvedeno níže. Potřebujeme hlavně modul Wi-Fi Arduino a ESP8266. Kolíky ESP8266 Vcc a GND jsou přímo připojeny k 3,3 V a GND Arduina a CH_PD je také připojeno k 3,3 V. Kolíky Tx a Rx ESP8266 jsou přímo připojeny k pinům 2 a 3 Arduina. Softwarová sériová knihovna se používá k umožnění sériové komunikace na pinech 2 a 3 Arduina. Rozhraní Wi-Fi modulu ESP8266 na Arduino jsme již podrobně pokryli.
Tím, že zde používáme softwarovou sériovou knihovnu, jsme povolili sériovou komunikaci na pinech 2 a 3 a vytvořili jsme z nich Rx a Tx. Ve výchozím nastavení se pro sériovou komunikaci používají Pin 0 a 1 Arduina, ale pomocí knihovny SoftwareSerial můžeme povolit sériovou komunikaci na jiných digitálních pinech Arduina.
Poznámka: Chcete-li sledovat odezvu ESP8266 na sériovém monitoru, otevřete Serial Monitor v Arduino IDE.
Pracovní vysvětlení:
Nejprve musíme pro připojení k síti připojit náš modul Wi-Fi k routeru Wi-Fi. Poté nakonfigurujeme místní server, odešleme data na web a nakonec zavřeme připojení. Tento proces a příkazy byly vysvětleny v následujících krocích:
1. Nejprve musíme otestovat modul Wi-Fi odesláním příkazu AT , vrátí zpět odpověď obsahující OK .
2. Poté musíme vybrat režim pomocí příkazu AT + CWMODE = mode_id , použili jsme Mode id = 3. ID režimu:
1 = režim stanice (klient)
2 = režim AP (hostitel)
3 = režim AP + stanice (ano, ESP8266 má duální režim!)
3. Nyní musíme odpojit náš modul Wi-Fi od dříve připojené sítě Wi-Fi pomocí příkazu AT + CWQAP, protože ESP8266 je výchozí automatické připojení k jakékoli dříve dostupné síti Wi-Fi
4. Poté může uživatel resetovat modul pomocí příkazu AT + RST . Tento krok je volitelný.
5. Nyní musíme pomocí zadaného příkazu připojit ESP8266 k Wi-Fi routeru
6. Nyní získáte IP adresu pomocí zadaného příkazu:
Vrátí IP adresu.
7. Nyní povolte režim multiplex pomocí AT + CIPMUX = 1 (1 pro vícenásobné připojení a 0 pro jedno připojení)
8. Nyní nakonfigurujte ESP8266 jako server pomocí AT + CIPSERVER = 1, port_no (port může být 80). Nyní je vaše Wi-Fi připraveno. Zde se 1 'používá k vytvoření serveru a' 0 'k jeho smazání.
9. Nyní může uživatel pomocí zadaného příkazu odesílat data na lokálně vytvořený server:
Id = ID č. přenosového spojení
Délka = maximální délka dat je 2 kb
10. Po odeslání ID a délky na server musíme odeslat data jako: Serial.println („[email protected]“);
11. Po odeslání dat potřebujeme uzavřít spojení daným příkazem:
Nyní byla data přenesena na místní server.
12. Nyní zadejte IP adresu do adresního řádku ve webovém prohlížeči a stiskněte klávesu Enter. Nyní může uživatel vidět přenášená data na webové stránce.
Kompletní proces najdete ve videu níže.
Kroky programování:
1. Zahrňte SoftwareSerial Library pro povolení sériové komunikace na PIN 2 a 3 a deklarujte některé proměnné a řetězce.
#zahrnout
2. Poté musíme definovat některé funkce pro provádění požadovaných úkolů.
Ve funkci Setup () inicializujeme vestavěnou sériovou komunikaci UART pro ESP8266 jako client.begin (9600); při přenosové rychlosti 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("Systém připraven.."); }
3. Ve funkci wifi_init () inicializujeme modul wifi zasláním některých příkazů, jako je reset, nastavení režimu, připojení k routeru, konfigurace připojení atd. Tyto příkazy byly také vysvětleny výše v popisné části.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5 000);…………………
4. Ve funkci connect_wifi () odesíláme data příkazů na ESP8266 a poté čteme odpověď z modulu Wi-Fi ESP8266.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd);…………………
5. funkce sendwebdata () se používá k odesílání dat na místní server nebo webovou stránku.
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. funkce void send () se používá k odesílání datových řetězců do funkce sendwebdata () . To bude dále odesláno na webovou stránku.
void Odeslat () {webpage = "
Vítejte v Circuit Digest
"; sendwebdata (webová stránka); webová stránka = název; webová stránka + = dat;…………………7. Funkce get_ip () slouží k získání IP adresy lokálně vytvořeného serveru.
8. Ve funkci void loop () pošleme uživateli instrukci k obnovení stránky a zkontrolujeme, zda je server připojen nebo ne. Když uživatel obnoví nebo požádá o webovou stránku, data se automaticky přenesou na stejnou adresu IP.
void loop () {k = 0; Serial.println ("Obnovte prosím stránku"); while (k <1000)………………
Pomocí tohoto procesu můžeme zobrazit libovolná data z Arduina na webovou stránku, jako je teplota a vlhkost místnosti, čas, GPS souřadnice, tepová frekvence atd.