Безжичната комуникация между електронни устройства и модули е много важна, за да ги направи „подходящи“ в света на интернет на нещата. HTTP протоколът и HTML езикът направиха възможно прехвърлянето на данните навсякъде по света, през мрежата. Вече разгледахме някои проекти, които използват Wi-Fi с Arduino, разгледайте ги до Първи стъпки:
- Изпращане на имейл с помощта на Arduino и ESP8266 WiFi модул
- WiFi контролиран робот, използващ Arduino
- Управление на RGB LED с помощта на Arduino и Wi-Fi
Сега в този урок изграждаме програма за изпращане на данни в мрежата с помощта на Arduino и Wi-Fi модула. За това първо се нуждаем от IP адрес на глобален или локален сървър, тук за улеснение и демонстрация използваме локален сървър.
Необходими компоненти:
- Arduino UNO
- ESP8266 Wi-Fi модул
- USB кабел
- Свързващи проводници
- Лаптоп
- Захранване
Wi-Fi модул ESP8266:
Верижни връзки:
Схема за „Публикуване на данни от Arduino в мрежата“ е дадена по-долу. Основно се нуждаем от Arduino и ESP8266 Wi-Fi модул. Изводите Vcc и GND на ESP8266 са директно свързани към 3.3V и GND на Arduino, а CH_PD също е свързан с 3.3V. Tx и Rx щифтовете на ESP8266 са директно свързани към щифтове 2 и 3 на Arduino. Софтуерната серийна библиотека се използва, за да позволи последователна комуникация на пинове 2 и 3 на Arduino. Вече разгледахме подробно взаимодействието на Wi-Fi модула ESP8266 с Arduino.
Използвайки тук софтуерна серийна библиотека, ние разрешихме последователна комуникация на щифтове 2 и 3 и ги направихме съответно Rx и Tx. По подразбиране Пин 0 и 1 на Arduino се използват за серийна комуникация, но с помощта на библиотеката SoftwareSerial можем да разрешим серийна комуникация на други цифрови щифтове на Arduino.
Забележка: За да гледате отговора на ESP8266 на сериен монитор, моля, отворете Serial Monitor на Arduino IDE.
Работно обяснение:
На първо място трябва да свържем нашия Wi-Fi модул с Wi-Fi рутер за мрежова свързаност. След това ще конфигурираме локалния сървър, ще изпратим данните до уеб и накрая ще затворим връзката. Този процес и команди са обяснени в стъпките по-долу:
1. Първо трябва да тестваме Wi-Fi модула, като изпратим AT команда, той ще върне обратно отговор, съдържащ ОК .
2. След това трябва да изберем режим с помощта на командата AT + CWMODE = mode_id , използвахме режим id = 3. Идентификатори на режима:
1 = режим на станция (клиент)
2 = режим на AP (хост)
3 = режим на AP + станция (да, ESP8266 има двоен режим!)
3. Сега трябва да изключим нашия Wi-Fi модул от свързаната преди това Wi-Fi мрежа, като използваме командата AT + CWQAP, тъй като ESP8266 по подразбиране се свързва автоматично с която и да е налична Wi-Fi мрежа по-рано
4. След това потребителят може да нулира модула с командата AT + RST . Тази стъпка не е задължителна.
5. Сега трябва да свържем ESP8266 към Wi-Fi рутера с помощта на дадената команда
6. Сега вземете IP адрес, като използвате дадена команда:
Той ще върне IP адрес.
7. Сега активирайте мултиплексния режим, като използвате AT + CIPMUX = 1 (1 за многократна връзка и 0 за единична връзка)
8. Сега конфигурирайте ESP8266 като сървър, като използвате AT + CIPSERVER = 1, port_no (портът може да е 80). Сега вашият Wi-Fi е готов. Тук „1“ се използва за създаване на сървъра и „0“ за изтриване на сървъра.
9. Сега с помощта на дадена команда потребителят може да изпраща данни на локално създаден сървър:
Id = ID номер. на предавателна връзка
Дължина = Максималната дължина на данните е 2 kb
10. След изпращане на идентификатор и дължина на сървъра, трябва да изпратим данни като: Serial.println (“[email protected]”);
11. След изпращане на данни трябва да затворим връзката чрез дадена команда:
Сега данните са предадени на локален сървър.
12. Сега въведете IP адрес в адресната лента в уеб браузъра и натиснете Enter. Сега потребителят може да вижда предадени данни на уеб страница.
Проверете видеото по-долу за пълен процес.
Стъпки за програмиране:
1. Включете SoftwareSerial Library, за да позволите серийна комуникация на ПИН 2 и 3 и декларирайте някои променливи и низове.
#include
2. След това трябва да дефинираме някои функции за изпълнение на желаните от нас задачи.
Във функцията Setup () инициализираме вградената серийна UART комуникация за ESP8266 като client.begin (9600); при скорост на предаване 9600.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("Готов за системата.."); }
3. Във функцията wifi_init () ние инициализираме wifi модула, като изпращаме някои команди като нулиране, задаване на режим, свързване с рутер, конфигуриране на връзка и т.н. Тези команди също са обяснени по-горе в частта за описание.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. Във функцията connect_wifi () изпращаме данни за команди на ESP8266 и след това четем отговора от Wi-Fi модула ESP8266.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; докато (1) {Serial.println (cmd);…………………
5. функцията sendwebdata () се използва за изпращане на данни до локален сървър или уеб страница.
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 () функция се използва за изпращане на низове от данни до функцията sendwebdata () . Това ще бъде допълнително изпратено на уеб страница.
void Изпрати () {webpage = "
Добре дошли в Circuit Digest
"; sendwebdata (уеб страница); уеб страница = име; уеб страница + = dat;…………………7. Функцията get_ip () се използва за получаване на IP адрес на локално създаден сървър.
8. Във функцията void loop () изпращаме инструкции до потребителя за опресняване на страницата и проверяваме дали сървърът е свързан от not. Когато потребителят опресни или поиска уеб страницата, данните автоматично се предават на същия IP адрес.
цикъл void () {k = 0; Serial.println ("Моля, опреснете страницата си"); докато (k <1000)………………
Можем да покажем всякакви данни от Arduino до уеб страница, използвайки този процес, като стайна температура и влажност, време на часовника, GPS координати, сърдечен ритъм и др.