ESP12: Подключение к сети WiFi
Описание
В данном мини-проекте рассматривается подключение модуля к контроллеру с помощью Sensor shield, и подключение к существующей сети Wi-Fi.
Модуль общается с контроллером посредством интерфейса UART. Так как на контроллерах UNO (Arduino Uno, Genuino Uno, Smart Uno) всего один аппаратный интерфейс UART, мы будем общаться с контроллером с помощью программного UART интерфейса. Это даёт нам возможность не занимать аппаратный интерфейс, таким образом мы сможем, как минимум, наблюдать за происходящим на Wi-Fi модуле, через монитор Serial-порта контроллера.
Изначально модуль настроен на работу с помощью AT-команд. Но вручную писать AT-команды очень неудобно, по нескольким причинам:
- Очень велика вероятность ошибиться и ввести неверную AT-команду;
- Разбор ответа от контроллера будет довольно ёмким
- Скетч будет трудно-читаемым из-за огромного количества кода
- Сложно выявить ошибки
Поэтому, чтобы общение с модулем было наиболее эффективным, простым и быстрым, мы воспользуемся библиотекой WiFiEsp
Скачайте и установите данную библиотеку в среду разработки Arduino IDE.
Перед началом работы настройте модуль на скорость обмена в 9600 бод. О том как это сделать, рассказано на этой странице.
Шаг 1. Вам потребуется
Возьмите необходимые для проекта элементы, представленные в таблице ниже.
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart Uno | 1 |
Wi-Fi модуль ESP-12 | 1 |
Sensor Shield | 1 |
Провода мама-мама | 4 |
Шаг 2. Подключите Wifi модуль к шилду
Выполните подключение модуля в соответствии со схемой ниже.
Шаг 3. Загрузите скетч на контроллер
Загрузите скетч, представленный ниже, на контроллер. Предварительно измените значения переменных:
- char ssid[] - здесь должно быть Ваше имя WiFi сети
- char pass[] - здесь должен быть пароль от Вашей WiFi сети
#include "WiFiEsp.h" //подключение библиотеки WiFiEsp
// Эмуляция Serial соединения
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial wifiSerial(6, 7); // TX - модуля , RX - модуля
#endif
char ssid[] = "SmartElements"; //имя сети wifi
char pass[] = "1234567890"; //пароль от сети wifi
int status = WL_IDLE_STATUS; // статус сети wifi
void setup()
{
//инициализация Serial-соединения для отладки
Serial.begin(9600);
//инициализация Serial-соединения для ESP-модуля
wifiSerial.begin(9600);
//инициализация ESP модуля
WiFi.init(&wifiSerial);
//проверка существования модуля
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi module not present");
//если модуля нет, то не продолжать работу далее
while (true);
}
//попытка подключения к wifi сети
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: "); //вывод надписи о попытке подключения
Serial.println(ssid); //вывод названия сети
//подключение к сети, используя имя и пароль
status = WiFi.begin(ssid, pass);
}
Serial.println("You're connected to the network");
}
void loop()
{
//вывод информации о подключении к сети каждые 10 секунд
Serial.println();
printCurrentNet();
printWifiData();
delay(10000);
}
void printWifiData()
{
//вывод IP-адреса модуля
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
//вывод MAC-адреса модуля
byte mac[6];
WiFi.macAddress(mac);
char buf[20];
sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]);
Serial.print("MAC address: ");
Serial.println(buf);
}
void printCurrentNet()
{
//вывод информации о сети, к которой подключен модуль
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
//вывод MAC-адреса роутера
byte bssid[6];
WiFi.BSSID(bssid);
char buf[20];
sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", bssid[5], bssid[4], bssid[3], bssid[2], bssid[1], bssid[0]);
Serial.print("BSSID: ");
Serial.println(buf);
//вывод силы сигнала сети wifi
long rssi = WiFi.RSSI();
Serial.print("Signal strength (RSSI): ");
Serial.println(rssi);
}
Шаг 4. Результат соединения
Далее, откройте монитор Serial-порта в Arduino IDE, и посмотрите параметры подключения. Вы увидите информацию вида:
[WiFiEsp] Initializing ESP module
[WiFiEsp] Initilization successful - 1.5.4
Attempting to connect to WPA SSID: SmartElements
[WiFiEsp] Connected to SmartElements
You're connected to the network
SSID: SmartElements
BSSID: 7C:B9:3C:CC:B8:94
Signal strength (RSSI): -89
IP Address: 192.168.1.18
MAC address: 19:FE:56:F1:29:EF
Где:
- SSID - имя сети, к которой подключился модуль
- Signal strength (RSSI) - уровень сигнала
- IP Address - IP адрес модуля
- MAC address - уникальный MAC модуля