Wi-Fi модуль ESP-01

Содержание:

  • Обзор
  • Технические характеристики модуля
  • Подключение 
  • Пример использования
  • Часто задаваемые вопросы FAQ

Wi-Fi модуль ESP-01  (рисунок 1) – самый популярный модуль серии ESP8266. Общение с компьютером или микроконтроллером осуществляется с через UART с помощью набора AT-команд. Кроме того, модуль можно использовать как самостоятельное устройство, для этого необходимо в него загрузить свою прошивку. Программировать и загружать прошивки можно через Arduino IDE версии выше 1.6.5. Для прошивки модуля понадобится переходник UART-USB. Модуль ESP-01 может получить широкое распространение для использования в устройствах IoT (Интернет вещей).

Wi-Fi модуль ESP8266 Uart

Рисунок 1. Модуль ESP-01


Технические характеристики модуля

  • Wi-Fi 802.11 b/g/n;
  • Режимы WiFi: клиент, точка доступа;
  • Выходная мощность — 19,5 дБ;
  • Напряжение питания — 1.8 -3.6 В;
  • Ток потребления — 220 мА;
  • Портов GPIO : 4;
  • Тактовая частота процессора — 80 МГц;
  • Объём памяти для кода
  • Оперативная память — 96 КБ;
  • Размеры — 13×21 мм;

Подключение

Рассмотрим режим AT-команд. Для этого подключим модуль к компьютеру через переходник USB-UART. Назначение выводов модуля (см. рисунок 2):

  • VCC — +3.3 В;
  • GND — земля;
  • RX, TX — выводы UART;
  • ВыводCH_PD  — Chip enable;
  • GPIO0, GPIO2 — цифровые контакты.

Модулю требуется внешнее питание   3.3 В.

Назначение контактов модуля ESP-01

Рисунок 2. Назначение контактов модуля ESP-01

Схема подключения для общения с модулем в режиме AT-команд (рисунок 3):

Схема подключения модуля ESP-01 к компьютеру по последовательному порту

Рисунок 3. Схема подключения модуля ESP-01 к компьютеру по последовательному порту

Схема в сборе

Рисунок 4. Схема в сборе.

Для отправки команд AT-команд в ОС Mac OS X можно использовать программу CoolTerm, в операционной системе Windows программу Termite. Узнать скорость COM-порта для соединения с модулем можно только экспериментально, для разных прошивок она может быть разной. Для моего модуля скорость оказалась равной 9600 бод. Кроме того установить обмен удалось только после отключения и повторного подключения к питанию вывода  CH_PD. После подключения набираем в терминале  AT и должны получить в ответ от модуля OK. Команда AT+GMR выдает номер версии прошивки модуля, команда AT+RST — перезагружает модуль (см. рис. 5). Список основных AT-команд можно посмотреть в этом документе (ESP8266ATCommandsSet.pdf).

 

Отправка AT-команд в модуль из программы Termite

Рисунок 5. Отправка AT-команд в модуль из программы Termite

Если режим AT команд для вас не удобен, плату можно настроить с помощью программы AppStack  ESP8266 Config, скачать которую  можно по ссылке http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip. Внешний вид программы представлен на рисунке 6. Настройка модуля осуществляется с помощью графического интерфейса, при этом выполнение команд можно видеть в мониторе программы (см. рис. 7). В мониторе также можно послать AT-команды из командной строки.

Программа AppStack ESP8266 Config

Рисунок 6. Программа AppStack ESP8266 Config

Serial monitor программы AppStack ESP8266 Config

Рисунок 7. Serial monitor программы AppStack ESP8266 Config

Есть два варианта использования данного модуля:

  • в связке с микроконтроллером (например Arduino), который будет управлять модулем по UART;
  • написание собственной прошивки для использования ESP8266 в качестве самостоятельного устройства.

 


Пример использования

Рассмотрим пример подключения к модулю ESP-01 датчика влажности и температуры DHT11 и отправки данных в облачный сервис ThingSpeak (https://thingspeak.com/).

Нам понадобятся следующие детали:

Сначала подключим датчик DS18B20 к модулю ESP-01. DS18B20 – цифровой датчик температуры, работающий по однопроводному интерфейсу 1-Wire. Схема подключения датчика DS18B20 к модулю показана на рис. 8.

Схема подключения датчика DHT11 к модулю ESP-01.

Рисунок 8. Схема подключения датчика DHT11 к модулю ESP-01.

Рисунок 8. Схема подключения датчика DHT11 к модулю ESP-01.

Затем необходимо завести профиль в сервисе ThingSpeak. В сервисе есть инструкции для отправки данных в сервис и получения данных из сервиса.

Схема в сборе

Рисунок 9. Схема в сборе.

Программу будем писать в среде Arduino IDE для ESP8266. Будем использовать библиотеки ESP8266WiFi.h (встроенную) и OneWire.h. Загрузим на плату Arduino скетч из листинга 1 – получение данных с датчика температуры и отправка данных в сервис ThingSpeak. Необходимо внести свои данные для WiFi точки доступа для модуля ESP-01:

  • const char *ssid;
  • const char *password;

а также параметр privateKey для вашего приложения в сервисе ThingSpeak.

Листинг 1

// makerplus.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 (рисунок 10).

График показаний датчика температуры DS18B20 в сервисе ThingSpeak

Рисунок 10. График показаний датчика температуры DS18B20 в сервисе ThingSpeak.


Часто задаваемые вопросы FAQ

     1.  Модуль не отвечает на AT-команды

  • Проверьте правильность подключения модуля;
  • Проверьте правильность подключения контактов Rx,Tx к переходнику UART-USB ;
  • Проверьте подключение контакта CH_PD к 3.3 В;
  • Подберите экспериментально скорость обмена по последовательному порту.

     2. Модуль ESP-01 не получает данные температуры от датчика DHT11

  • Проверьте правильность подключения датчика DHT11 к модулю.

     3. Не передаются данные в сервис ThingSpeak

  • Проверьте подключение модуля к точке доступа WiFi;
  • Проверьте подключение точки доступа WiFi к сети интернет;
  • Проверьте правильность запроса к сервису ThingSpeak.