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. Вам потребуется

Возьмите необходимые для проекта элементы, представленные в таблице ниже.

Шаг 2. Подключите Wifi модуль к шилду

Выполните подключение модуля в соответствии со схемой ниже.

Шаг 3. Загрузите скетч на контроллер

Загрузите скетч, представленный ниже, на контроллер. Предварительно измените значения переменных:

  • char ssid[] - здесь должно быть Ваше имя WiFi сети
  • char pass[] - здесь должен быть пароль от Вашей WiFi сети
#include "WiFiEsp.h" //подключение библиотеки WiFiEsp
 
// Эмуляция Serial соединения
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial wifiSerial(6, 7); // RX, TX
#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 модуля