Бездротовий зв’язок між електронними пристроями та модулями дуже важливий, щоб зробити їх «вписаними» у Світ Інтернету речей. Протокол HTTP та мова HTML дозволили передавати Дані в будь-яку точку світу, через Інтернет. Ми вже висвітлювали деякі проекти, які використовують Wi-Fi з Arduino, подивіться на них Початок роботи:
- Надсилання електронної пошти за допомогою Arduino та ESP8266 WiFi модуля
- Робот, керований Wi-Fi за допомогою Arduino
- Керування RGB світлодіодом за допомогою Arduino та Wi-Fi
Зараз у цьому підручнику ми створюємо програму для надсилання даних в Інтернет за допомогою модуля Arduino та Wi-Fi. Для цього нам спочатку потрібна IP-адреса глобального або локального сервера, тут для зручності та демонстрації ми використовуємо локальний сервер.
Необхідні компоненти:
- Arduino UNO
- Модуль Wi-Fi ESP8266
- USB-кабель
- Підключення проводів
- Ноутбук
- Блок живлення
Модуль Wi-Fi ESP8266:
Ланцюгові з'єднання:
Принципова схема для «Опублікування даних з Arduino в Інтернеті» подана нижче. В основному нам потрібні модулі Wi-Fi Arduino та ESP8266. Виводи Vcc та GND ESP8266 безпосередньо підключені до 3,3 В, а GND Arduino, а CH_PD - також до 3,3 В. Виводи Tx і Rx ESP8266 безпосередньо підключені до виводів 2 і 3 Arduino. Програмна послідовна бібліотека використовується для забезпечення послідовного зв'язку на висновках 2 і 3 Arduino. Ми вже детально висвітлювали взаємодію модуля Wi-Fi ESP8266 з Arduino.
Використовуючи тут послідовну бібліотеку програмного забезпечення, ми дозволили послідовний зв’язок на виводах 2 і 3 і зробили їх відповідно Rx та Tx. За замовчуванням виводи 0 і 1 Arduino використовуються для послідовного зв'язку, але, використовуючи бібліотеку SoftwareSerial, ми можемо дозволити послідовний зв'язок на інших цифрових контактах Arduino.
Примітка: Щоб переглянути відповідь ESP8266 на послідовному моніторі, відкрийте послідовний монітор Arduino IDE.
Робоче пояснення:
Перш за все нам потрібно підключити наш модуль Wi-Fi до маршрутизатора Wi-Fi для підключення до мережі. Тоді ми налаштуємо локальний сервер, надішлемо дані в Інтернет і, нарешті, закриємо з'єднання. Цей процес і команди були пояснені в наступних кроках:
1. Спочатку нам потрібно протестувати модуль Wi-Fi, надіславши команду AT , він поверне відповідь, що містить ОК .
2. Після цього нам потрібно вибрати режим за допомогою команди AT + CWMODE = mode_id , ми використовували режим id = 3. Ідентифікатори режиму:
1 = режим станції (клієнт)
2 = режим
точки доступу (хост) 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 = ідентифікаційний номер передавального з'єднання
Довжина = Максимальна довжина даних - 2 кб
10. Після надсилання ідентифікатора та довжини на сервер нам потрібно надіслати такі дані, як: Serial.println (“[email protected]”);
11. Після відправки даних нам потрібно розірвати з'єднання за допомогою заданої команди:
Тепер дані передаються на локальний сервер.
12. Тепер введіть IP-адресу в адресному рядку у веб-браузері та натисніть Enter. Тепер користувач може бачити передані дані на веб-сторінці.
Перевірте відео нижче для повного процесу.
Кроки для програмування:
1. Включіть SoftwareSerial Library, щоб дозволити послідовний зв’язок за PIN-кодами 2 та 3, та оголосіть деякі змінні та рядки.
#включати
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; while (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 Send () {webpage = "
Ласкаво просимо до Circuit Digest
"; sendwebdata (веб-сторінка); веб-сторінка = ім'я; веб-сторінка + = dat;…………………7. Функція get_ip () використовується для отримання IP-адреси локально створеного сервера.
8. У функції void loop () ми надсилаємо користувачеві інструкцію щодо оновлення сторінки та перевіряємо, чи не підключений сервер. Коли користувач оновлює або запитує веб-сторінку, дані автоматично передаються на ту саму IP-адресу.
цикл void () {k = 0; Serial.println ("Будь ласка, оновіть свою сторінку"); в той час як (k <1000)………………
За допомогою цього процесу ми можемо відображати будь-які дані з Arduino на веб-сторінку, такі як кімнатна температура та вологість, час годинника, координати GPS, частота серцебиття тощо.