Модуль WiFi ESP8266: руководство по настройке и проектам

ESP8266 — это Wi-Fi-модуль, подходящий для проектов в области Интернета вещей и домашней автоматизации. Он позволяет управлять входами и выходами так же, как и платы серии Arduino, но с помощью Wi-Fi. Поэтому он хорошо подходит для приложений в области домашней автоматизации/Интернета вещей.

По сравнению с другими Wi-Fi-решениями, представленными на рынке, ESP8266 является отличным выбором для большинства проектов в области «Интернета вещей». В этой статье мы расскажем об основных концепциях платы ESP8266, ее распиновке и примерах программирования.

Введение в ESP8266

ESP8266 — это мощный и универсальный микроконтроллер с поддержкой Wi-Fi, который завоевал популярность в мире электроники и IoT (Интернет вещей). Разработанный компанией Espressif Systems, ESP8266 предлагает экономичное решение для подключения устройств к Интернету и обеспечения их взаимодействия друг с другом. Он оснащен встроенным модулем Wi-Fi, мощным процессором и контактами GPIO для подключения внешних компонентов. ESP8266 можно программировать с помощью различных языков программирования, что делает его доступным как для начинающих, так и для опытных разработчиков. Низкое энергопотребление и компактный размер делают его идеальным для широкого спектра применений, включая домашнюю автоматизацию, беспроводные сенсорные сети и интеллектуальные устройства. Например, ESP8266 можно использовать для создания интеллектуального термостата, который позволяет пользователям удаленно контролировать температуру в своих домах.

ESP8266 Распиновка

ESP8266 Pinout
Распиновка ESP8266

На схеме выводов некоторые выводы имеют другие назначения, помимо GPIO. Например, вывод D1 является не только GPIO5, но и интерфейсом SCL, который можно подключить к соответствующему выводу SCL ЖК-экрана.

В следующей таблице показано соответствие между метками на идентификаторе платы и номерами GPIO, а также указано, какие контакты лучше всего использовать в проектах, а какие требуют осторожности. Контакты, выделенные зеленым цветом, готовы к использованию. Контакты, выделенные желтым цветом, можно использовать, но они требуют внимания, так как могут вести себя непредсказуемо, в основном при запуске. Контакты, выделенные красным цветом, не рекомендуется использовать в качестве входов или выходов.

Обозначение на платеGPIOВходВыходПримечания
D0GPIO16Цифровой; без прерываний GPIO в ESP8266 Arduino coreЦифровой; программный ШИМ в Arduino coreДля пробуждения из глубокого сна соедините GPIO16 с RST; проверьте схему платы.
D1GPIO5ЦифровойЦифровойОбычное назначение тактовой линии I2C в Arduino core; настраивается программно.
D2GPIO4ЦифровойЦифровойОбычное назначение линии данных I2C в Arduino core; настраивается программно.
D3GPIO0HIGH при сбросе для загрузки из FlashЦифровой после загрузкиLOW при сбросе выбирает загрузку по UART; проверьте подключение кнопки FLASH на плате.
D4GPIO2HIGH при сбросеЦифровой после загрузкиПодключение светодиода зависит от платы; не соединяйте GPIO2 напрямую с VCC.
D5GPIO14ЦифровойЦифровойТактовая линия HSPI (SCLK) при назначении SPI.
D6GPIO12ЦифровойЦифровойВход данных HSPI (MISO) при назначении SPI.
D7GPIO13ЦифровойЦифровойВыход данных HSPI (MOSI) при назначении SPI.
D8GPIO15LOW при сбросеЦифровой после загрузкиВыбор ведомого HSPI (CS); исключите внешнюю подтяжку вверх при сбросе.
RXGPIO3UART0 RX или цифровой входЦифровой, если не занят UARTМожет быть соединён с мостом USB-UART; не выбирает режим загрузки.
TXGPIO1Цифровой, если не занят UARTUART0 TX или цифровой выходЗдесь выводятся сообщения при запуске; не выбирает режим загрузки.
A0ADC0Аналоговый входОтсутствуетДиапазон АЦП кристалла — 0–1,0 В; делитель на A0 платы может менять допустимый диапазон. Проверьте схему.

Подключение и запуск ESP8266 с микроконтроллером

При соединении Wi-Fi-модуля ESP8266 с микроконтроллером или платой Arduino отдельно проверяйте питание, логические уровни и загрузочные сигналы. Многие предполагаемые ошибки UART или прошивки вызваны просадкой напряжения либо неверным состоянием при старте. Сверяйтесь со схемой конкретного модуля: отладочная плата может уже содержать регулятор и подтяжки.

  • Обеспечьте стабильные 3,3 В: рассчитайте регулятор и проводники на импульсный ток Wi-Fi, обычно закладывая не менее 500 мА переходной способности, и установите рядом накопительные и ВЧ-конденсаторы.
  • Защитите логические входы: применяйте уровни 3,3 В и согласуйте выход 5-вольтового хоста перед входом ESP8266; соедините земли низкоомным путём.
  • Подключите UART: соедините TX хоста с RX модуля, а RX с TX, задайте известную скорость и не нагружайте линии светодиодами или сильными подтяжками.
  • Задайте загрузочные уровни: для типовых ESP-12 держите EN и GPIO2 высокими, GPIO15 низким; GPIO0 должен быть высоким для запуска и низким во время reset для прошивки.
  • Запускайте поэтапно: измерьте 3,3 В и reset, запишите стартовый лог, определите наличие AT или пользовательской прошивки и проверьте одну команду либо пакет до подключения датчиков.

Как запрограммировать ESP8266 с помощью Arduino IDE?

Существует много способов программирования ESP8266:

  1. Используйте Arduino IDE для разработки, следуйте стилю разработки Arduino, простота в использовании;
  2. Используйте официальный SDK ESP8266 для разработки;
  3. Используйте MicroPython для разработки, следуя стилю программирования Python (для этого метода необходимо сначала записать специальную прошивку на плату);

Здесь мы выбираем первый вариант, потому что программирование Arduino простое и удобное.

Шаг 1: Установите Arduino IDE

Загрузите IDE с официального сайта Arduino: https://www.arduino.cc/en/software. Версия, которую я использую сейчас, — Arduino IDE 1.8.3. (Обратите внимание, что последняя версия Arduino IDE 2.1.1 не может установить пакет ресурсов ESP8266 онлайн.)

Install Arduino IDE 1.8.3
Установка Arduino IDE 1.8.3

Шаг 2: Установите пакет ESP8266

Поскольку Arduino IDE по умолчанию используется для платы разработки Arduino, по умолчанию доступны только соответствующие ресурсы для платы разработки Arduino. Чтобы использовать ESP8266 в Arduino IDE, нам необходимо вручную установить пакет разработки ESP8266. Существует два метода установки: онлайн-установка и автономная установка пакета. Здесь мы выберем первый.

Сначала найдите «Файл -> Настройки» в меню Arduino IDE: 

Open Preferences in Arduino IDE
Открытие настроек в Arduino IDE

Затем введите следующую ссылку в поле «Дополнительные URL-адреса диспетчера досок»:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Setting Additional boards manager URLs in Preferences
Настройка дополнительных URL менеджера плат в параметрах

Затем щелкните, чтобы открыть: Инструменты -> Плата -> Диспетчер плат.

Open Boards Manager in Arduino
Открытие менеджера плат в Arduino

В поле введите и найдите «esp8266», вы увидите пакет esp8266, нажмите «Установить», чтобы начать онлайн-установку.

Search and Install the ESP8266 Board
Поиск и установка платы ESP8266
Installing ESP8266 packages
Установка пакетов ESP8266

После завершения установки все ресурсы, относящиеся к плате esp8266, можно найти в меню «Инструменты->Плата».

ESP8266 Boards Resource (3.1.2 Version)
Ресурсы плат ESP8266 (версия 3.1.2)

Шаг 3: Программирование ESP8266

Здесь мы напишем простую программу для тестирования сетевого соединения для платы ESP8266. Код программы выглядит следующим образом:

				
					void setup() {
  Serial.begin(9600);
  Serial.println("esp8266 test");
  initWiFi();

}

void loop() {
  Serial.println("hello esp8266");
  delay(1000);

}

#include <ESP8266WiFi.h>

constchar ssid[] = "xxxxx";      //WiFi Name
constchar pass[] = "xxxxx";       //WiFi Password

WiFiClient client;

//Initialize WIFI
void initWiFi()
{
   Serial.print("Connecting WiFi...");
   WiFi.mode(WIFI_STA); //Configure WIFI as Station mode
   WiFi.begin(ssid, pass); //Incoming ssid and password of WIFI hotspot
   while (WiFi.status() != WL_CONNECTED) //Waiting for successful connection
   {
     delay(500);
     Serial. print(".");
   }

   Serial.println("");
   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP()); //print your own IP address
}
				
			

Примечания:
Функция setup используется для инициализации последовательного порта. Например, «Serial.begin(9600);» означает, что начальная скорость передачи данных последовательного порта составляет 9600.

Функция loop аналогична while(1){} в основной функции при разработке однокристального микрокомпьютера, где мы можем писать коды программной логики.

Чтобы использовать функцию WIFI, необходимо включить заголовочный файл «ESP8266WiFi.h».

Процесс инициализации WIFI включает 3 шага:

  1. Настройте WIFI в режим Station, то есть наш ESP8266 используется как устройство WIFI;
  2. Передача ssid и пароля точки доступа WIFI, чтобы ESP8266 мог подключиться к точке доступа;
  3. Считать статус подключения WIFI и дождаться успешного подключения.

Выберите модель и номер последовательного порта вашей платы разработчика ESP8266:

Choose Board NodeMCU 1.0 (ESP-12E Module)
Выбор платы NodeMCU 1.0 (модуль ESP-12E)

Теперь мы можем скомпилировать и записать код на плату ESP8266WiFi.

Compile and Upload the code to ESP8266 WiFi Module
Компиляция и загрузка кода в модуль WiFi ESP8266

Поделиться:

Прокрутить вверх

Instant Quote

Мгновенный расчет