Содержание
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. Назначение выводов модуля (см. рисунок 1):- VCC — +3.3 В
- GND — земля
- RX, TX — выводы UART
- ВыводCH_PD — Chip enable
- GPIO0, GPIO2 — цифровые контакты
Рисунок 1. Назначение контактов модуля ESP-01
Схема подключения для общения с модулем в режиме AT-команд (рисунок 2):Рисунок 2. Схема подключения модуля ESP-01 к компьютеру по последовательному порту
Рисунок 3. Схема в сборе
Для отправки команд AT-команд в ОС Mac OS X можно использовать программу CoolTerm, в операционной системе Windows программу Termite. Узнать скорость COM-порта для соединения с модулем можно только экспериментально, для разных прошивок она может быть разной. Для моего модуля скорость оказалась равной 9600 бод. Кроме того установить обмен удалось только после отключения и повторного подключения к питанию вывода CH_PD. После подключения набираем в терминале AT и должны получить в ответ от модуля OK. Команда AT+GMR выдает номер версии прошивки модуля, команда AT+RST — перезагружает модуль (см. рис. 4). Список основных AT-команд можно посмотреть в этом документе (ESP8266ATCommandsSet.pdf).Рисунок 4. Отправка AT-команд в модуль из программы Termite
Если режим AT команд для вас не удобен, плату можно настроить с помощью программы AppStack ESP8266 Config, скачать которую можно по ссылке http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip. Внешний вид программы представлен на рисунке 5. Настройка модуля осуществляется с помощью графического интерфейса, при этом выполнение команд можно видеть в мониторе программы (см. рис. 6). В мониторе также можно послать AT-команды из командной строки.Рисунок 5. Программа AppStack ESP8266 Config
Рисунок 6. Serial monitor программы AppStack ESP8266 Config
Есть два варианта использования данного модуля:- в связке с микроконтроллером (например Arduino), который будет управлять модулем по UART;
- написание собственной прошивки для использования ESP8266 в качестве самостоятельного устройства.
Пример использования
Рассмотрим пример подключения к модулю ESP-01 датчика влажности и температуры DHT11 и отправки данных в облачный сервис ThingSpeak (https://thingspeak.com/). Нам понадобятся следующие детали:- модуль ESP-01
- макетная плата
- датчик влажности и температуры DHT11
- резистор 10 кОм
- соединительные провода
- блок питания 3 - 3.6В
Рисунок 7. Схема подключения датчика DHT11 к модулю ESP-01.
Затем необходимо завести профиль в сервисе ThingSpeak. В сервисе есть инструкции для отправки данных в сервис и получения данных из сервиса.Рисунок 8. Схема в сборе.
Программу будем писать в среде Arduino IDE для ESP8266. Будем использовать библиотеки ESP8266WiFi.h (встроенную) и OneWire.h. Загрузим на плату Arduino скетч из листинга 1 – получение данных с датчика температуры и отправка данных в сервис ThingSpeak. Необходимо внести свои данные для WiFi точки доступа для модуля ESP-01:- const char *ssid;
- const char *password;
// 3d-diy.ru // Подключаем библиотеку для работы с 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 (рисунок 9).
Рисунок 9. График показаний датчика температуры DS18B20 в сервисе ThingSpeak.
Часто задаваемые вопросы FAQ
1. Модуль не отвечает на AT-команды- Проверьте правильность подключения модуля;
- Проверьте правильность подключения контактов Rx,Tx к переходнику UART-USB ;
- Проверьте подключение контакта CH_PD к 3.3 В;
- Подберите экспериментально скорость обмена по последовательному порту.
- Проверьте правильность подключения датчика DHT11 к модулю.
- Проверьте подключение модуля к точке доступа WiFi;
- Проверьте подключение точки доступа WiFi к сети интернет;
- Проверьте правильность запроса к сервису ThingSpeak.