Начало работы с ESP8266 NodeMCU: обзор и руководство

Впервые работаете с ESP8266? Начните здесь! ESP8266 — это Wi-Fi система на кристалле (SoC), произведённая компанией Espressif Systems. Она отлично подходит для проектов IoT и домашней автоматизации. Эта статья представляет собой руководство по началу работы с платой разработки ESP8266.

Начало работы с ESP8266 NodeMCU Wi-Fi трансивером

Впервые работаете с ESP8266? Вы в нужном месте. Это руководство содержит всю информацию, необходимую для начала работы с этой замечательной платой. Узнайте, что такое ESP8266, для чего он используется, как выбрать плату разработки ESP8266, как загрузить свою первую программу и многое другое.

Знакомство с ESP8266 NodeMCU

Что такое ESP8266 NodeMCU? ESP8266 — это недорогой Wi-Fi чип, разработанный компанией Espressif Systems.

ESP8266 NodeMCU Espressif Systems

Его можно использовать как автономное устройство или как адаптер UART-Wi-Fi, позволяющий другим микроконтроллерам подключаться к сети Wi-Fi. Например, вы можете подключить ESP8266 к Arduino, чтобы добавить Wi-Fi возможности к вашей плате Arduino. Наиболее практичное применение — использование его как автономного устройства.

С помощью ESP8266 вы можете управлять входами и выходами так же, как с Arduino, но с возможностями Wi-Fi. Это означает, что вы можете подключить свои проекты к интернету, что отлично подходит для домашней автоматизации и приложений интернета вещей. Почему ESP8266 так популярен? В основном по следующим причинам:

  • Низкая стоимость: вы можете получить платы ESP8266 от $3 (или даже дешевле) в зависимости от модели.

  • Низкое энергопотребление: ESP8266 потребляет очень мало энергии по сравнению с другими микроконтроллерами и может даже переходить в режим глубокого сна для снижения энергопотребления;

  • Wi-Fi: ESP8266 может создавать собственную Wi-Fi сеть (точка доступа) или подключаться к другим Wi-Fi сетям (станция) для доступа в интернет. Это означает, что ESP8266 может обращаться к онлайн-сервисам для выполнения HTTP-запросов или сохранения данных в облаке, например. Он также может работать как веб-сервер, к которому вы можете обращаться через веб-браузер и управлять и контролировать свои платы удалённо.

  • Совместимость с «языком программирования» Arduino (установка ESP8266 в Arduino IDE): те, кто уже знаком с программированием плат Arduino, были рады узнать, что могут программировать ESP8266 в стиле Arduino.

  • Совместимость с MicroPython: вы можете программировать ESP8266 с прошивкой MicroPython, которая является реализацией Python 3, предназначенной для микроконтроллеров и встроенных систем.

Что можно сделать с ESP8266?

Вот краткий список того, что можно сделать с ESP8266:

Технические характеристики ESP8266

Для получения более подробной информации о характеристиках ESP8266 ознакомьтесь со следующим списком:

Wi-Fi чип ESP8266-12E

Wi-Fi чип ESP8266-12E

  • Процессор: 32-разрядное RISC-ядро микропроцессора L106 на базе Tensilica Diamond Standard 106Micro, работающее на частоте 80 или 160 МГц

  • Память:

    • 32 КиБ ОЗУ инструкций

    • 32 КиБ ОЗУ кэша инструкций

    • 80 КиБ ОЗУ пользовательских данных

    • 16 КиБ ОЗУ системных данных ETS

  • Внешняя QSPI-флеш-память: поддерживается до 16 МиБ (обычно включено от 512 КиБ до 4 МиБ)

  • IEEE 802.11 b/g/n Wi-Fi

  • Встроенный переключатель TR, балун, МШУ, усилитель мощности и согласующая цепь

  • Аутентификация WEP или WPA/WPA2, или открытые сети

  • 17 выводов GPIO

  • Шина последовательного периферийного интерфейса (SPI)

  • I2C (программная реализация)

  • Интерфейсы I2S с DMA (совместное использование выводов с GPIO)

  • UART на выделенных выводах, плюс передающий UART может быть включён на GPIO2

  • 10-разрядный АЦП (АЦП последовательного приближения)

Основные различия между ESP8266 и ESP32

Существует преемник ESP8266 — ESP32. ESP32 объединяет Wi-Fi и Bluetooth и является двухъядерным. Если вы хотите начать с любой из этих плат, мы рекомендуем приобрести ESP32. Если у вас уже есть ESP8266, не переживайте. Он отлично работает, имеет огромное сообщество и справляется с задачами большинства DIY IoT-проектов.

Платы разработки ESP32 и ESP8266

В следующей таблице показаны основные различия между чипами ESP8266 и ESP32:

ESP8266

ESP32

MCU

Xtensa Single-core 32-bit L106

Xtensa Dual-Core 32-bit LX6, 600 DMIPS

802.11 b/g/n Wi-Fi

HT20

HT40

Bluetooth

X

Bluetooth 4.2 и BLE

Типичная частота

80 МГц

160 МГц

SRAM

X

да

Flash

X

да

GPIO

17

34

Аппаратный / Программный ШИМ

Нет / 8 каналов

Нет / 16 каналов

SPI/I2C/I2S/UART

2/1/2/2

4/2/2/2

АЦП

10-бит

12-бит

CAN

X

да

Интерфейс Ethernet MAC

X

да

Сенсорный датчик

X

да

Датчик температуры

X

да (старые версии)

Датчик Холла

X

да

Цена

$ ($3 – $6)

$$ ($6 – $12)

Где купить

Лучшие платы разработки ESP8266

Обзор и сравнение плат ESP32

Для более подробного анализа различий между этими платами рекомендуем прочитать следующую статью: ESP32 vs ESP8266 – Плюсы и минусы.

Версии ESP8266

Существует несколько версий модулей ESP8266, как показано на изображении ниже. ESP-01 и ESP-12E являются наиболее популярными версиями. Вы найдёте широкий выбор плат разработки с чипами ESP-12E или ESP-12F.

Версии модулей ESP8266 NodeMCU

Платы разработки ESP8266 NodeMCU

Использование голых чипов или модулей непросто и непрактично. Для обучения, тестирования и прототипирования вам понадобятся платы разработки ESP8266 NodeMCU.

Платы разработки ESP8266 NodeMCU

Они поставляются со всеми необходимыми схемами для подачи питания, загрузки кода, удобным доступом к GPIO для подключения датчиков и исполнительных устройств, антенной для Wi-Fi сигнала и другими полезными функциями.

Как выбрать плату разработки ESP8266?

Существует широкий выбор плат ESP8266 от различных производителей. Хотя все они работают аналогичным образом, некоторые платы могут быть более подходящими для определённых проектов, чем другие. При выборе платы разработки ESP8266 необходимо учитывать несколько аспектов:

  • Интерфейс USB-UART и схема стабилизатора напряжения. Большинство полнофункциональных плат разработки имеют эти две функции. Это важно для простого подключения ESP8266 к компьютеру для загрузки кода и подачи питания.

  • Кнопки BOOT и RESET/EN для перевода платы в режим прошивки или перезагрузки (перезапуска) платы.

  • Конфигурация выводов и количество выводов. Для правильного использования ESP8266 в ваших проектах вам необходим доступ к распиновке платы (как карта, показывающая, какой вывод соответствует какому GPIO и его функциям). Поэтому убедитесь, что у вас есть доступ к распиновке платы, которую вы приобретаете. Кроме того, некоторые платы имеют больше доступных GPIO, чем другие. Это фактор, который следует учитывать в зависимости от характеристик вашего проекта.

  • Размер. Существует широкий выбор плат разработки ESP8266 различных размеров. Некоторые платы выигрывают от малого форм-фактора, что может быть очень практично в зависимости от характеристик вашего проекта. Обычно платы меньшего размера имеют небольшое количество доступных GPIO, как ESP-01.

  • Разъём для антенны. Большинство плат поставляются со встроенной антенной для Wi-Fi сигнала. Некоторые платы имеют разъём для антенны, позволяющий опционально подключить внешнюю антенну. Добавление внешней антенны увеличивает дальность Wi-Fi.

Какая плата разработки ESP8266 лучше всего подходит для начинающих?

Лучшая плата разработки ESP8266 для вашего проекта будет зависеть от того, что вы собираетесь делать. Если вы только начинаете работу с платой ESP8266, мы рекомендуем использовать ESP8266-12E NodeMCU Kit.

ESP8266-12E NodeMCU Kit

ESP8266 12E NodeMCU Kit

ESP12-E NodeMCU Kit — одна из наиболее используемых плат разработки ESP8266. Она имеет 4 МБ флеш-памяти, доступ к 11 выводам GPIO и один вывод аналого-цифрового преобразователя (АЦП) с 10-битным разрешением. Кроме того, плата имеет встроенный стабилизатор напряжения, и вы можете питать модуль через разъём mini USB или вывод Vin.

Загрузка кода на плату так же проста, как загрузка кода на Arduino. Нет необходимости в FTDI-программаторе или дополнительных схемах, поскольку она имеет встроенный преобразователь USB-UART. Большинство плат поставляются с чипами CP2101 или CH340.

Она оснащена встроенной антенной для Wi-Fi сигнала и имеет кнопки RST и FLASH для перезагрузки платы и перевода её в режим прошивки. На плате есть синий светодиод, внутренне подключённый к GPIO 2, что очень удобно для отладки.

Это модель платы ESP8266, которую мы чаще всего используем в наших проектах Wi-Fi и IoT. Она очень универсальна и отлично подходит для начинающих. Поэтому, если это ваш первый опыт работы с ESP8266, это модуль, который мы рекомендуем: ESP8266 12-E NodeMCU Kit.

Где купить?

Вы можете перейти по следующей ссылке, чтобы найти ESP8266-12E NodeMCU Kit в различных магазинах:

Другие популярные платы разработки ESP8266

Другие очень популярные платы ESP8266 — это ESP-01 и ESP8266 Wemos D1 mini.

Хотя я не рекомендую ESP-01 для начинающих, ESP8266 Wemos D1 mini может быть хорошим выбором.

ESP-01

ESP-01 ESP8266

ESP-01

ESP-01 очень маленький и помещается в любой корпус, поэтому он идеально подходит для готовых проектов. Однако он очень ограничен в количестве доступных GPIO и не имеет встроенного стабилизатора напряжения, поэтому вам нужен источник питания 3,3В или необходимо добавить стабилизатор напряжения для снижения входного напряжения до 3,3В. Кроме того, он не оснащён преобразователем USB-UART, что означает, что вам нужен FTDI-программатор или специальная плата-программатор для загрузки кода.

WeMos D1 Mini

ESP8266 Wemos D1 mini

ESP8266 WeMos D1 Mini

WeMos D1 Mini предлагает 4 МБ флеш-памяти, 11 GPIO и 1 вывод АЦП в минимальной и компактной конфигурации. Сообщество разработало широкий спектр шилдов для платы D1 mini, которые позволяют создавать небольшие и простые конфигурации практически без проводки. Вам просто нужно установить шилды друг на друга для подключения нескольких периферийных устройств. Она поставляется со встроенным стабилизатором напряжения и преобразователем USB-UART, что упрощает загрузку кода. По этим причинам она также может быть хорошим выбором для начинающих.

Для сравнения различных плат ESP8266 вы можете прочитать следующую статью:

Существует множество других версий различных плат ESP8266. Большинство плат работают аналогичным образом. Просто убедитесь, что они подходят для требований вашего проекта.

В следующей таблице вы можете увидеть основные различия между ESP-01, ESP8266-12E NodeMCU Kit и WeMos D1 Mini.

ESP-01

ESP-12E NodeMCU

WeMos D1 Mini

GPIO

4 (включая TX и RX)

11

11

Выводы АЦП

1

1

1

Флеш-память

1 МБ (обновлённая версия)

4 МБ

4 МБ

Совместимость с макетной платой

x

да

да

Преобразователь USB-UART

x

да

да

Размер

24,75 мм x 14,5 мм (0,97» x 0,57»)

48,55 мм x 25,6 мм (1,91» x 1»)

34,2 мм x 25,6 мм (1,35» x 1»)

Цена

$

$$

$$

Где купить?

ESP-01

ESP-12E NodeMCU

WeMos D1 Mini

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

Наиболее широко используемые платы разработки ESP8266 NodeMCU — это ESP8266-12E NodeMCU Kit, Wemos D1 Mini и ESP-01. Мы покажем вам распиновку для этих плат. Распиновка — это как карта, которая показывает, какой вывод соответствует какому GPIO и его функциям. Таким образом, вы будете знать, какие GPIO использовать, если вам нужны SPI, I2C, АЦП или другие интерфейсы.

Если вы приобрели другую плату, вы сможете найти её распиновку с помощью быстрого поиска в Google. Здесь мы лишь кратко рассмотрим распиновку. Мы рекомендуем прочитать следующую статью, которая подробно описывает распиновку ESP8266 и использование его GPIO: Справочник по распиновке ESP8266: Какие GPIO выводы следует использовать?

Выводы питания

Обычно все платы имеют выводы питания: 3V3, GND и VIN. Вы можете использовать эти выводы для питания платы (если вы не подаёте питание через порт USB) или для получения питания для других периферийных устройств (если вы питаете плату через порт USB).

Выводы общего назначения (GPIO)

Важно отметить, что номер GPIO ESP8266 не совпадает с маркировкой на шелкографии платы. Например, D0 соответствует GPIO16, а D1 соответствует GPIO5. При программировании плат с использованием Arduino IDE вы должны использовать номер GPIO, а не номер на шелкографии. Это относится к большинству плат ESP8266.

Периферийные устройства ESP8266 включают:

  • 17 GPIO (обычно не все GPIO доступны на платах разработки ESP8266)

  • SPI

  • I2C (программная реализация)

  • Интерфейсы I2S с DMA

  • UART

  • 10-битный АЦП

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

Мы рекомендуем ознакомиться с нашим руководством по GPIO ESP8266, которое подробно описывает функции каждого GPIO и как выбрать лучшие GPIO для вашего проекта:

Распиновка ESP-12E NodeMCU Kit

На следующем изображении показан обзор распиновки ESP-12E NodeMCU Kit:

Распиновка ESP-12E NodeMCU Kit ESP8266

Распиновка WeMos D1 Mini

Вот распиновка Wemos D1 Mini:

Распиновка WeMos D1 Mini ESP8266

Распиновка ESP8266-01

Вот распиновка ESP-01.

Распиновка ESP8266-01 ESP-01

Как программировать ESP8266?

Существует множество различных способов программирования ESP8266 с использованием разных языков программирования: Arduino C/C++ с использованием ядра Arduino для ESP32, Micropython, LUA и другие.

Наш предпочтительный метод — программирование ESP8266 с использованием «языка программирования Arduino» с Arduino IDE или VS Code. Для начинающих мы рекомендуем начать с Arduino IDE.

У нас также есть несколько руководств, показывающих, как программировать ESP8266 с помощью MicroPython. Однако в этой статье мы сосредоточимся на Arduino IDE.

Программирование ESP8266 с помощью Arduino IDE

Логотип Arduino IDE 2

Для программирования ваших плат вам нужна IDE для написания кода. Для начинающих мы рекомендуем использовать Arduino IDE. Хотя это не лучшая IDE, она хорошо работает и проста и интуитивно понятна в использовании для начинающих. После знакомства с Arduino IDE, когда вы начнёте создавать более сложные проекты, вам может быть полезно использовать VS Code с расширением PlatformIO вместо этого.

Если вы только начинаете работу с ESP8266, начните с Arduino IDE.

Установка Arduino IDE

Для запуска Arduino IDE на вашем компьютере необходимо установить JAVA. Если у вас его нет, перейдите на следующий веб-сайт для загрузки и установки последней версии: http://java.com/download.

Загрузка и установка Arduino IDE

Для загрузки Arduino IDE перейдите по следующему URL:

Перейдите на веб-сайт Arduino и скачайте версию для вашей операционной системы.

Скачать Arduino IDE 2.3.2
  • Windows: запустите скачанный файл и следуйте инструкциям в руководстве по установке.

  • Mac OS X: скопируйте скачанный файл в папку приложений.

  • Linux: распакуйте скачанный файл и откройте файл arduino-ide, который запустит IDE.

Успешная установка Arduino IDE 2.0 Windows Mac OS X Linux

Если у вас есть сомнения, вы можете обратиться к руководству по установке Arduino.

Нужна плата ESP8266? Вы можете купить её здесь.

Установка ESP8266 NodeMCU в Arduino IDE

Чтобы установить плату ESP8266 в Arduino IDE, следуйте следующим инструкциям:

1. В Arduino IDE 2 перейдите в File > Preferences.

Arduino IDE 2 File, Preferences

2. Скопируйте и вставьте следующую строку в поле Additional Boards Manager URLs.

https://arduino.esp8266.com/stable/package_esp8266com_index.json
Arduino 2 - Additional Boards URL

Примечание: если у вас уже есть URL плат ESP32, вы можете разделить URL запятой, следующим образом:

http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

3. Откройте Boards Manager. Вы можете перейти в Tools > Board > Boards Manager… или просто нажать на значок Boards Manager в левом углу.

Arduino IDE 2 - Boards Manager

4. Найдите ESP8266 и нажмите кнопку установки для esp8266 by ESP8266 Community.

Установка плат ESP8266 NodeMCU в Arduino IDE 2

Вот и всё. Установка должна завершиться через несколько секунд.

После этого перезапустите Arduino IDE.

Затем перейдите в Tools > Board и убедитесь, что платы ESP8266 доступны.

Платы ESP8266 установлены в Arduino IDE 2

Теперь вы готовы к программированию ESP8266 с помощью Arduino IDE.

Тестирование установки и загрузка кода в ESP8266

Для проверки установки дополнения ESP8266 мы загрузим простой код, который мигает встроенным светодиодом (GPIO 2).

Скопируйте следующий код в вашу Arduino IDE:

/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/
*********/

#include <Arduino.h>

#define LED 2

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED, HIGH);
  Serial.println("LED is on");
  delay(1000);
  digitalWrite(LED, LOW);
  Serial.println("LED is off");
  delay(1000);
}

Просмотреть исходный код

Загрузка скетча

Подключите плату разработки ESP8266 к компьютеру с помощью USB-кабеля. Если вы используете ESP-01, ознакомьтесь с этим разделом.

Внимание: вы должны использовать USB-кабель с проводами данных. Некоторые USB-кабели от зарядных устройств или внешних аккумуляторов предназначены только для питания и не передают данные — они не будут работать.

Выберите плату перед загрузкой кода. В верхнем раскрывающемся меню нажмите на «Select other board and port…»

Arduino IDE 2 - выбор платы

Откроется новое окно, как показано ниже. Найдите модель вашей платы ESP8266.

Arduino IDE 2 выбор модели платы и COM-порта

Выберите модель платы ESP8266, которую вы используете, и COM-порт. В нашем примере мы используем плату NodeMCU 1.0. Нажмите OK, когда закончите.

Если вы не видите COM-порт или он неактивен, вам, вероятно, нужно установить USB-UART драйверы на ваш компьютер. Ознакомьтесь с этим разделом: Установка USB-драйверов ESP8266 NodeMCU.

Теперь вам просто нужно нажать на кнопку Upload.

Кнопка загрузки Arduino IDE 2

Через несколько секунд загрузка должна завершиться.

ESP8266 NodeMCU Arduino IDE 2.0 успешная загрузка

Встроенный светодиод ESP8266 должен мигать каждую секунду.

Плата ESP8266 NodeMCU с мигающим светодиодом Arduino IDE 2.0

Монитор последовательного порта

Вы можете нажать на значок Serial Monitor, чтобы открыть вкладку монитора последовательного порта.

Serial Monitor Arduino IDE 2.0 ESP8266 NodeMCU

Вот и всё! Вы успешно установили платы ESP8266 в Arduino IDE 2 и теперь знаете, как загружать код на плату.

Загрузка кода в ESP-01

Если вы используете ESP-01, прочитайте этот раздел, чтобы узнать, как загружать код на плату.

ESP-01 не имеет встроенного программатора, поэтому загрузка кода не так проста. Самый простой способ загрузить код в ESP-01 — это приобрести программатор ESP-01. В интернете доступно несколько вариантов, на изображении ниже показан пример программатора ESP-01.

Программатор ESP-01 ESP8266

Это очень удобно, потому что вам просто нужно подключить ESP-01 к модулю, а модуль к компьютеру для программирования ESP8266.

Другой вариант — использование FTDI-программатора. Вам нужно подключить ESP-01 к FTDI-программатору, как показано ниже. Затем просто подключите FTDI-программатор к компьютеру.

Подключение ESP-01 к FTDI-программатору

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

ESP8266

FTDI-программатор

RX

TX

TX

RX

CH_PD

3.3V

GPIO 0

GND

VCC

3.3V

GND

GND

Если у вас новый FTDI-программатор, вам, вероятно, потребуется установить драйверы FTDI на ваш ПК с Windows. Посетите этот сайт для получения официальных драйверов. (Если COM-порт неактивен в Arduino IDE, это, вероятно, связано с тем, что у вас не установлены драйверы).

Затем просто подключите FTDI-программатор к компьютеру и загрузите код в ESP8266, нажав на кнопку загрузки.

Кнопка загрузки Arduino IDE 2
Использование монитора последовательного порта с ESP-01

Если вы используете ESP-01, после загрузки кода отключите GPIO 0 от GND, чтобы отключить режим программирования. Затем подключите вывод RST к GND примерно на одну секунду, а затем отключите, чтобы перезагрузить плату.

Примеры ESP8266

В Arduino IDE вы можете найти множество примеров для платы ESP8266. Сначала убедитесь, что у вас выбрана плата ESP8266 в Tools > Board. Затем просто перейдите в File > Examples и ознакомьтесь с примерами в разделе ESP8266.

Примеры ESP8266 в Arduino IDE

Обновление ядра ESP8266 в Arduino IDE

Рекомендуется периодически проверять, что у вас установлена последняя версия плат ESP8266. В Arduino IDE 2 вы получите всплывающее уведомление с предложением обновиться, когда станет доступна новая версия.

Установка USB-драйверов ESP8266 NodeMCU

После подключения платы ESP8266 к компьютеру, если COM-порт в Arduino IDE неактивен, это означает, что на вашем компьютере не установлены необходимые USB-драйверы.

Большинство плат ESP8266 используют драйверы CP2101 или CH340. Проверьте преобразователь USB-UART на вашей плате и установите соответствующие драйверы.

Преобразователь ESP8266 CP2101 и CH340

Вы легко найдёте инструкции с помощью быстрого поиска в Google. Для драйверов CP2102 вы можете следовать одному из следующих руководств:

Лучшие ресурсы для начала работы с ESP8266

Если вы хотите создавать собственные проекты IoT и домашней автоматизации с платами ESP8266 и вам нужна помощь в начале работы, у нас есть лучшие ресурсы для вас.

Заключение

Мы надеемся, что это руководство по началу работы оказалось для вас полезным. Мы думаем, что включили всю необходимую информацию для начала работы. Вы узнали, что такое ESP8266, как выбрать плату разработки ESP8266 и как загрузить новый код в ESP8266 с помощью Arduino IDE.

Хотите узнать больше? Мы рекомендуем следующие руководства для начала:

Также не забудьте ознакомиться с распиновкой ESP8266, чтобы узнать, как использовать его GPIO:

Если вы серьёзно хотите изучить плату ESP8266, рекомендуем ознакомиться с нашей книгой, посвящённой ESP8266:

Вы также можете ознакомиться со всеми нашими бесплатными руководствами и проектами по ESP8266 по следующей ссылке: