Начало работы с ESP8266 NodeMCU: обзор и руководство
Впервые работаете с ESP8266? Начните здесь! ESP8266 — это Wi-Fi система на кристалле (SoC), произведённая компанией Espressif Systems. Она отлично подходит для проектов IoT и домашней автоматизации. Эта статья представляет собой руководство по началу работы с платой разработки ESP8266.
Впервые работаете с ESP8266? Вы в нужном месте. Это руководство содержит всю информацию, необходимую для начала работы с этой замечательной платой. Узнайте, что такое ESP8266, для чего он используется, как выбрать плату разработки ESP8266, как загрузить свою первую программу и многое другое.
Знакомство с ESP8266 NodeMCU
Что такое ESP8266 NodeMCU? ESP8266 — это недорогой Wi-Fi чип, разработанный компанией 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
Процессор: 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-проектов.
В следующей таблице показаны основные различия между чипами 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) |
Где купить |
Для более подробного анализа различий между этими платами рекомендуем прочитать следующую статью: ESP32 vs ESP8266 – Плюсы и минусы.
Версии ESP8266
Существует несколько версий модулей ESP8266, как показано на изображении ниже. ESP-01 и ESP-12E являются наиболее популярными версиями. Вы найдёте широкий выбор плат разработки с чипами ESP-12E или ESP-12F.
Платы разработки 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
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
ESP-01 очень маленький и помещается в любой корпус, поэтому он идеально подходит для готовых проектов. Однако он очень ограничен в количестве доступных GPIO и не имеет встроенного стабилизатора напряжения, поэтому вам нужен источник питания 3,3В или необходимо добавить стабилизатор напряжения для снижения входного напряжения до 3,3В. Кроме того, он не оснащён преобразователем USB-UART, что означает, что вам нужен FTDI-программатор или специальная плата-программатор для загрузки кода.
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») |
Цена |
$ |
$$ |
$$ |
Где купить? |
Распиновка 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:
Распиновка WeMos D1 Mini
Вот распиновка Wemos D1 Mini:
Распиновка 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
Для программирования ваших плат вам нужна 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 и скачайте версию для вашей операционной системы.
Windows: запустите скачанный файл и следуйте инструкциям в руководстве по установке.
Mac OS X: скопируйте скачанный файл в папку приложений.
Linux: распакуйте скачанный файл и откройте файл arduino-ide, который запустит IDE.
Если у вас есть сомнения, вы можете обратиться к руководству по установке Arduino.
Нужна плата ESP8266? Вы можете купить её здесь.
Установка ESP8266 NodeMCU в Arduino IDE
Чтобы установить плату ESP8266 в Arduino IDE, следуйте следующим инструкциям:
1. В Arduino IDE 2 перейдите в File > Preferences.
2. Скопируйте и вставьте следующую строку в поле Additional Boards Manager URLs.
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Примечание: если у вас уже есть 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 в левом углу.
4. Найдите ESP8266 и нажмите кнопку установки для esp8266 by ESP8266 Community.
Вот и всё. Установка должна завершиться через несколько секунд.
После этого перезапустите Arduino IDE.
Затем перейдите в Tools > Board и убедитесь, что платы ESP8266 доступны.
Теперь вы готовы к программированию 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…»
Откроется новое окно, как показано ниже. Найдите модель вашей платы ESP8266.
Выберите модель платы ESP8266, которую вы используете, и COM-порт. В нашем примере мы используем плату NodeMCU 1.0. Нажмите OK, когда закончите.
Если вы не видите COM-порт или он неактивен, вам, вероятно, нужно установить USB-UART драйверы на ваш компьютер. Ознакомьтесь с этим разделом: Установка USB-драйверов ESP8266 NodeMCU.
Теперь вам просто нужно нажать на кнопку Upload.
Через несколько секунд загрузка должна завершиться.
Встроенный светодиод ESP8266 должен мигать каждую секунду.
Монитор последовательного порта
Вы можете нажать на значок Serial Monitor, чтобы открыть вкладку монитора последовательного порта.
Вот и всё! Вы успешно установили платы ESP8266 в Arduino IDE 2 и теперь знаете, как загружать код на плату.
Загрузка кода в ESP-01
Если вы используете ESP-01, прочитайте этот раздел, чтобы узнать, как загружать код на плату.
ESP-01 не имеет встроенного программатора, поэтому загрузка кода не так проста. Самый простой способ загрузить код в ESP-01 — это приобрести программатор ESP-01. В интернете доступно несколько вариантов, на изображении ниже показан пример программатора ESP-01.
Это очень удобно, потому что вам просто нужно подключить ESP-01 к модулю, а модуль к компьютеру для программирования ESP8266.
Другой вариант — использование FTDI-программатора. Вам нужно подключить ESP-01 к FTDI-программатору, как показано ниже. Затем просто подключите 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, нажав на кнопку загрузки.
Использование монитора последовательного порта с 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 2 вы получите всплывающее уведомление с предложением обновиться, когда станет доступна новая версия.
Установка USB-драйверов ESP8266 NodeMCU
После подключения платы ESP8266 к компьютеру, если COM-порт в Arduino IDE неактивен, это означает, что на вашем компьютере не установлены необходимые USB-драйверы.
Большинство плат ESP8266 используют драйверы CP2101 или CH340. Проверьте преобразователь USB-UART на вашей плате и установите соответствующие драйверы.
Вы легко найдёте инструкции с помощью быстрого поиска в Google. Для драйверов CP2102 вы можете следовать одному из следующих руководств:
Лучшие ресурсы для начала работы с ESP8266
Если вы хотите создавать собственные проекты IoT и домашней автоматизации с платами ESP8266 и вам нужна помощь в начале работы, у нас есть лучшие ресурсы для вас.
Домашняя автоматизация с ESP8266: это наша премиальная книга по ESP8266. Узнайте, как использовать ESP8266 для автоматизации вашего дома. Даже если вы абсолютный новичок, вы сможете следовать инструкциям и создать свои собственные IoT-проекты.
Бесплатные проекты и руководства по ESP8266: у нас есть множество руководств и гайдов по ESP8266, охватывающих множество различных тем, которые вы можете посмотреть здесь.
У нас есть другие книги об ESP8266, которые охватывают более конкретные темы, которые могут вас заинтересовать:
Заключение
Мы надеемся, что это руководство по началу работы оказалось для вас полезным. Мы думаем, что включили всю необходимую информацию для начала работы. Вы узнали, что такое ESP8266, как выбрать плату разработки ESP8266 и как загрузить новый код в ESP8266 с помощью Arduino IDE.
Хотите узнать больше? Мы рекомендуем следующие руководства для начала:
Также не забудьте ознакомиться с распиновкой ESP8266, чтобы узнать, как использовать его GPIO:
Если вы серьёзно хотите изучить плату ESP8266, рекомендуем ознакомиться с нашей книгой, посвящённой ESP8266:
Вы также можете ознакомиться со всеми нашими бесплатными руководствами и проектами по ESP8266 по следующей ссылке: