ESP8266 — это низкобюджетный Wi-Fi-чип от компании Espressif, обладающий полным стеком протоколов TCP/IP и функциями микроконтроллера. Он разработан специально для мобильных устройств, носимой электроники и приложений Интернета вещей, отличаясь низким энергопотреблением и крайне низкой стоимостью.
ESP8266 поддерживает множество сред разработки; в данной статье рассматривается настройка среды разработки Arduino IDE.
Ссылки на покупку используемой в статье платы разработки, других модулей и соединительных проводов указаны в конце.
В данной статье используется плата NodeMCU, оснащённая этим чипом.
Скачайте и установите драйверы для вашего USB-to-TTL-чипа в зависимости от используемой платы разработки. Моя плата использует чип CH340.
Установка Arduino IDE
Arduino IDE — это интегрированная среда разработки, официально предоставляемая Arduino, поддерживающая язык C, в основном предназначенная для программирования плат серии Arduino.
С помощью простой настройки можно добавить поддержку плат ESP8266 в существующую среду разработки. Для пользователей, знакомых с библиотеками Arduino и процессом разработки, использование не будет отличаться.
Ссылка для скачивания Arduino IDE:
Официальный сайт Arduino: https://www.arduino.cc/en/Main/Software
Tencent Weiyun: http://go.zeruns.com/E
Baidu Netdisk: http://go.zeruns.com/F Код доступа: h6cy
Добавление поддержки ESP8266
Откройте Arduino IDE, нажмите Файл в левом верхнем углу, перейдите в Параметры (Preferences), найдите поле Дополнительные URL-адреса менеджера плат (Additional Board Manager URLs) и введите следующую ссылку: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Затем перейдите в Инструменты → Платы → Менеджер плат, чтобы открыть интерфейс менеджера плат:
Найдите esp8266 и установите его:
После установки перезапустите Arduino IDE. В разделе Инструменты → Платы появится опция для плат ESP8266:
Выберите порт: сначала проверьте порт в Диспетчере устройств, затем выберите соответствующий порт в Arduino IDE.
Примеры проектов
Отправка “Hello World” через последовательный порт
Создайте новый проект в Arduino IDE и введите следующий код:
void setup() { // Функция инициализации, выполняется один раз при запуске
Serial.begin(115200); // Установка скорости передачи последовательного порта
}
/*
https://blog.zeruns.com
*/
void loop() { // Циклическая функция, код внутри неё выполняется постоянно
Serial.println("Hello World"); // Отправка "Hello World" через последовательный порт
}
После ввода нажмите кнопку Загрузить для компиляции и загрузки на плату, затем откройте Монитор последовательного порта, выбрав скорость 115200 — вы увидите вывод “Hello World”.
Мигание светодиода
На модуле ESP8266 встроен светодиод, подключённый к выводу D4.
Внимание: Существует множество плат ESP8266, и их GPIO-выводы могут отличаться.
void setup() { // Функция инициализации, выполняется один раз при запуске
pinMode(D4,OUTPUT); // Настройка вывода D4 в режим выхода
}
void loop() { // Циклическая функция, код внутри неё выполняется постоянно
digitalWrite(D4,HIGH); // Установка высокого уровня на выводе D4 (HIGH можно заменить на 1)
delay(1000); // Задержка 1000 мс
digitalWrite(D4,LOW); // Установка низкого уровня на выводе D4 (LOW можно заменить на 0)
delay(1000); // https://blog.zeruns.com
}

Чтение данных с DHT11 и отображение на экране
В этом примере используется датчик DHT11 для измерения температуры и влажности, а результаты выводятся на OLED-экран 0,96 дюйма.
Исходный код:
#include <Arduino.h>
#include <NTPClient.h>
#include <U8g2lib.h>
#include <DHT.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
DHT dht(D3,DHT11, 15);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D1, /* data=*/ D2, /* reset=*/ U8X8_PIN_NONE);
void setup(){
u8g2.begin();
u8g2.enableUTF8Print();
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.setFontDirection(0);
u8g2.setCursor(0, 15);
u8g2.print("Влажность:");
u8g2.setCursor(80, 15);
u8g2.print(h); // https://blog.zeruns.com
u8g2.setCursor(120, 15);
u8g2.print("%");
u8g2.setCursor(0, 40);
u8g2.print("Температура:");
u8g2.setCursor(0, 55);
u8g2.print(t);
u8g2.setCursor(40, 55);
u8g2.print("°C");
u8g2.sendBuffer();
delay(1000);
}
Поскольку в исходном коде используются библиотеки DHT и U8g2, которые не входят в состав Arduino IDE по умолчанию, необходимо сначала перейти в Проект → Подключить библиотеку → Управление библиотеками, найти и установить следующие три зависимости: Adafruit Unified Sensor, DHT sensor library и U8g2:
Подключение схемы
| NodeMcu | DHT11 |
|---|---|
| 3V3 | VCC |
| GND | GND |
| D3 | DATA |
| NodeMcu | 0.96-дюймовый OLED |
|---|---|
| 3V3 | VCC |
| GND | GND |
| D1 | SCL |
| D2 | SDA |
Подключение к Wi-Fi
Главная особенность ESP8266 — его сверхнизкая стоимость реализации Wi-Fi.
Приведём простой пример кода для подключения к Wi-Fi:
#include <ESP8266WiFi.h>
const char* ssid = "blog.zeruns.com"; // имя Wi-Fi
const char* passwd = "blog.zeruns.com"; // пароль Wi-Fi
void setup() {
Serial.begin(115200); // Установка скорости последовательного порта
WiFi.begin(ssid,passwd); // Подключение к Wi-Fi
while (WiFi.status() != WL_CONNECTED) // Проверка состояния подключения Wi-Fi
{
delay(500);
Serial.print("."); // Вывод точки через последовательный порт
}
Serial.println(""); // Переход на новую строку
Serial.println("Wi-Fi подключён");
Serial.println(WiFi.localIP()); // Вывод полученного IP-адреса
Serial.println("https://blog.zeruns.com");
}
void loop() {
}
Ссылки на покупку
Плата NodeMcu (ESP8266): https://s.click.taobao.com/mWfgiTu
Модуль датчика DHT11: https://s.click.taobao.com/gAduxTu
Провода Dupont: https://s.click.taobao.com/yxUfiTu
OLED-экран 0,96 дюйма: https://s.click.taobao.com/6IFfiTu
Рекомендуемые статьи
- Рекомендации по недорогим и высокопроизводительным VPS/облакам: https://blog.zeruns.com/archives/383.html
- Настройка сервера для проброса внутренней сети с веб-панелью: 搭建内网穿透服务器,带Web面板 - Zeruns's Blog
- Чтение данных с датчиков DHT11, DHT22, SHTC3 с помощью Arduino: Arduino读取DHT11,DHT22,SHTC3温湿度数据 - Zeruns's Blog
- Как создать личный блог: https://blog.zeruns.com/archives/218.html
- Полный список студенческих льгот: 学生优惠权益大全 - Zeruns's Blog











