Lab works 4:
Підключення до WiFi з використанням мікроконтролера ESP8266 NodeMCU

Мета роботи

Навчитися підключатися до WiFi мережі з мікроконтролера Arduino і передавати дані по WiFi.

 

Завдання  роботи

1.Додати підтримку мікроконтролера NodeMCU на базі WiFi-модуля ESP8266

2. Розробити скетч для підключення до WiFi мережі і передачі даних по бездротовому каналу зв'язку.

 

Інструменти для виконанню роботи

1. Комп'ютер з підключенням до мережі Internet

2. Мікроконтролер NodeMCU V3 на базі EPS8266-12E

 

Теоретична частина

Плата NodeMCU побудована на базі модуля WiFi ESP8266.

Разпіновка плати:

Для роботи з цією платою була додана підтримка середовища розробки Arduino IDE. Практично всі бібліотеки для звичайної Arduino так само працюють і для цієї плати, однак її терморегулятори відрізняється від терморегулятори плат Arduino. Так, на платі є один аналоговий вхід (A0), на якому працює 10-бітний АЦП. Цифровим пінам 0-15 Arduino відповідають виходи, позначені GPIO1-GPIO16. Наприклад, якщо в Arduino IDE використовується пін 12, йому буде відповідати контакт, позначений на платі як D6 (GPIO12). Піни GPIO1 - GPIO5, GPIO10, GPIO12-GPIO15 підтримують ШІМ.
Характеристики плати:
підтримка WiFi протоколів 802.11 b / g / n
Wi-Fi Direct (P2P), soft-AP
вбудований стек TCP / IP
SDIO 2.0, SPI, UART
вбудований PLL, регулятори, і система управління живленням
Номінальна напруга: 3,3 В
Вхідна напруга: 3,7-20 В
Максимальний споживаний струм: 220 мА
D9, D10 - UART
D1, D2 - I²C (D1 - SCL (SCK), D2 - SDA)
D5-D8 - SPI

 

Основний сайт проектуhttps://ecoimpact-ple.com/ru/about

 

Виконання роботи

 

Додавання підтримки мікроконтролера NodeMCU на базі WiFi-модуля ESP8266

 

Для додавання підтримки NodeMCU в середу Arduino IDE потрібно виконати наступні кроки:

1.     Відкриваємо налаштування (Файл -> Настройки)

2.      Знаходимо додаткові посилання для менеджера плат і натискаємо праворуч кнопку редагування (виділена на скріншоті)

3.     Додаємо URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json

4.     Зберігаємо і заходимо в менеджер плат (Інструменти -> Плата: -> Менеджер плат)

 

5.     Вводимо в пошук "esp8266" і встановлюємо пакет esp8266

6.     Створюємо новий скетч і зберігаємо його як Esp8266Test.

7.     Вибираємо плату "NodeMCU 1.0 (ESP-12E Module)" (Інструменти -> Плата :). Нижче в меню "Інструменти" вводимо настройки для CPU Frequency, Flash Size і Upload Speed як показано на скріншоті (швидше за все, будуть стояти саме такі, якщо плата відрізняється від зображеної вище, настройки можуть відрізнятися).

8.     Обираємо потрібний порт.

 

Розробка скетчу для підключення до WiFi мережі і передачі даних по бездротовому каналу зв'язку.

Скетч для роботи з WiFi використовуємо бібліотеки, аналогічні стандартної бібліотеці WiFi для звичайних Arduino. При роботі зі звичайною Arduino і будь-яким WiFi Шілд будуть підключатися аналогічні заголовки, тільки без префікса "ESP8266".
Підключаємо заголовки

 

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

 

Вказати параметри WiFi мережі

const char *essid="WIFI_ESSID";
const char *key="WIFI_KEY";

 

WIFI_ESSID і WIFI_KEY замінюємо на ім'я і пароль використовуваної WiFi мережі.
У функції setup () запускаємо Serial і підключаємося до WiFi

 

Serial.begin(9600);
WiFi.begin(essid,key);
while(WiFi.status() !=
WL_CONNECTED)
{
    delay(500);
    Serial.print(".");
}
Serial.println("WiFi connected");

 

У функції loop виконуємо GET запит на WEB-сторінку віддаленого сервера. Для цього підключаємося до сервера

 

WiFiClient client;
if(!client.connect("wl.unn.ru",80))
{
    Serial.println("connection failed");
    return;

 


Відправляємо з генерований вручну GET запит

 

client.print("GET /laboratory/?page=1 HTTP/1.1\r\nConnection: close\r\n\r\n");

 

Очікуємо відповідь від сервера:

 

 

unsigned long timeout = millis();
while(client.available()==0)
{
    if(millis()-timeout>5000)
    {
        Serial.println(">>> Client Timeout !");
        client.stop();
        return;
    }
}

 

Виводимо відповідь і спимо 10 секунд

 

 

while(client.available())
{
    String line=client.readStringUntil('\r');
    Serial.print(line);
}
delay(10000);

 

 

Завантажуємо скетч на плату і відкриваємо менеджер порту. Там раз в десять секунд повинен з'являтися код веб-сторінки, що прийшов у відповідь від сервера wl.unn.ru.

 

Додаткове завдання: розробити скетч для сканування доступних WiFi мереж