Wi-Fi модуль ESP-01 – самый популярный модуль серии ESP8266. Общение с компьютером или микроконтроллером осуществляется с через UART с помощью набора AT-команд. Кроме того, модуль можно использовать как самостоятельное устройство, для этого необходимо в него загрузить свою прошивку. Программировать и загружать прошивки можно через Arduino IDE версии выше 1.6.5. Для прошивки модуля понадобится переходник UART-USB. Модуль ESP-01 может получить широкое распространение для использования в устройствах IoT (Интернет вещей).
Технические характеристики модуля
- Wi-Fi 802.11 b/g/n
- Режимы WiFi: клиент, точка доступа
- Выходная мощность - 19,5 дБ
- Напряжение питания - 1.8 -3.6 В
- Ток потребления - 220 мА
- Портов GPIO : 4
- Тактовая частота процессора - 80 МГц
- Объём памяти для кода
- Оперативная память - 96 КБ
- Размеры - 13×21 мм
Подключение
Рассмотрим режим AT-команд. Для этого подключим модуль к компьютеру через переходник USB-UART. Назначение выводов модуля:
- VCC — +3.3 В
- GND — земля
- RX, TX — выводы UART
- ВыводCH_PD — Chip enable
- GPIO0, GPIO2 — цифровые контакты
Модулю требуется внешнее питание 3.3 В.
Назначение контактов модуля ESP-01
Схема подключения для общения с модулем в режиме AT-команд:
Схема подключения модуля ESP-01 к компьютеру по последовательному порту
Схема в сборе
Для отправки команд AT-команд в ОС Mac OS X можно использовать программу CoolTerm, в операционной системе Windows программу Termite. Узнать скорость COM-порта для соединения с модулем можно только экспериментально, для разных прошивок она может быть разной. Для моего модуля скорость оказалась равной 9600 бод. Кроме того установить обмен удалось только после отключения и повторного подключения к питанию вывода CH_PD. После подключения набираем в терминале AT и должны получить в ответ от модуля OK. Команда AT+GMR выдает номер версии прошивки модуля, команда AT+RST — перезагружает модуль (см. рис. 4). Список основных AT-команд можно посмотреть в этом документе (ESP8266ATCommandsSet.pdf).
Отправка AT-команд в модуль из программы Termite
Если режим AT команд для вас не удобен, плату можно настроить с помощью программы AppStack ESP8266 Config, скачать которую можно по ссылке https://esp8266.ru/downloads/. Внешний вид программы представлен ниже. Настройка модуля осуществляется с помощью графического интерфейса, при этом выполнение команд можно видеть в мониторе программы (см. рис. 6). В мониторе также можно послать AT-команды из командной строки.
Программа AppStack ESP8266 Config
Serial monitor программы AppStack ESP8266 Config
Есть два варианта использования данного модуля:
- в связке с микроконтроллером (например Arduino), который будет управлять модулем по UART;
- написание собственной прошивки для использования ESP8266 в качестве самостоятельного устройства.
Пример использования
Рассмотрим пример подключения к модулю ESP-01 датчика влажности и температуры DHT11 и отправки данных в облачный сервис ThingSpeak (https://thingspeak.com/). Нам понадобятся следующие детали:
- модуль ESP-01
- макетная плата
- датчик влажности и температуры DHT11
- резистор 10 кОм
- соединительные провода
- блок питания 3 - 3.6В
Сначала подключим датчик DS18B20 к модулю ESP-01. DS18B20 – цифровой датчик температуры, работающий по однопроводному интерфейсу 1-Wire. Схема подключения датчика DS18B20 к модулю показана на рис. 7.
Схема подключения датчика DHT11 к модулю ESP-01.
Затем необходимо завести профиль в сервисе ThingSpeak. В сервисе есть инструкции для отправки данных в сервис и получения данных из сервиса.
Схема в сборе.
Программу будем писать в среде Arduino IDE для ESP8266. Будем использовать библиотеки ESP8266WiFi.h (встроенную) и OneWire.h. Загрузим на плату Arduino скетч из листинга 1 – получение данных с датчика температуры и отправка данных в сервис ThingSpeak. Необходимо внести свои данные для WiFi точки доступа для модуля ESP-01:
const char *ssid;
const char *password;
а также параметр privateKey для вашего приложения в сервисе ThingSpeak. Листинг 1
// Подключаем библиотеку для работы с esp8266
#include <ESP8266WiFi.h>
// Подключаем библиотеку DHT для работы с DHT11
#include <DHT.h>
// пин подключения контакта DATA
#define DHTPIN 4
// датчик DHT11
#define DHTTYPE DHT11
// создание экземпляра объекта DHT
DHT dht(DHTPIN, DHTTYPE);
// ssid WiFi сети подключения
const char ssid = "********";
// Пароль WiFi сети подключения
const char password = "******";
// Сервер ThingSpeak
const char* host = "184.106.153.149";
// API KEY вашего приложения ThingSpeak
const char* privateKey = "****************";
// переменные для хранения температуры и влажности
float temp;
float humidity;
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
// запуск последовательного порта
Serial.begin(115200);
delay(10);
Serial.print("Connect to WiFi");
Serial.println(ssid);
// Соединяемся по WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("WiFi connected");
// запуск dht
dht.begin();
}
void loop() {
// ждем интервал 10 минут
if(milis()-millis_int1>=10*60000) {
Serial.print("connect to ThingSpeak");
Serial.println(host);
// Используем WiFi клиент
WiFiClient client;
if (!client.connect(host, 80)) {
Serial.println("connection failed");
return;
}
// получить данные температуры
temp = get_data_temperature();
humidity = get_data_humidity();
// Создаем URL с запросом для сервера
String url = "/update?key=";
url += privateKey;
url += "&temp=";
url += temp;
url += "&humidity=";
url += humidity;
// Отправляем запрос на сервер
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
delay(10);
// ответ сервера ThingSpeak
while(client.available()){
String req = client.readStringUntil('\r');
Serial.print(req);
}
}
}
Теперь в сервисе ThingSpeak мы можем смотреть график показаний нашего датчика температуры DHT11.
График показаний датчика температуры DS18B20 в сервисе ThingSpeak.
Что делать если
Модуль не отвечает на AT-команды
Проверьте правильность подключения модуля
Проверьте правильность подключения контактов Rx,Tx к переходнику UART-USB
Проверьте подключение контакта CH_PD к 3.3 В
Подберите экспериментально скорость обмена по последовательному порту
Модуль ESP-01 не получает данные температуры от датчика DHT11
Проверьте правильность подключения датчика DHT11 к модулю
Не передаются данные в сервис ThingSpeak
Проверьте подключение модуля к точке доступа WiFi
Проверьте подключение точки доступа WiFi к сети интернет
Проверьте правильность запроса к сервису ThingSpeak