Начало работы с ESP8266

Начало работы с ESP8266

Начало работы с ESP8266

В последние годы Интернет вещей (IoT) стал одной из самых горячих тем в технологической индустрии. Он изменил то, как мы работаем. Физические объекты и цифровой мир переплетены теснее, чем когда-либо прежде.

Имея это в виду, в 2014 году компания Espressif Systems выпустила невероятно крошечный и недорогой микроконтроллер с поддержкой WiFi — ESP8266. Он стоит менее 3 долларов и способен отслеживать и управлять устройствами из любой точки мира, что делает его идеальным практически для любого IoT-приложения.

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

ESP8266 — это недорогой микроконтроллер с поддержкой WiFi, созданный и разработанный компанией Espressif Systems, китайской компанией из Шанхая. Следующие особенности являются основными причинами, почему люди выбирают ESP8266:

Мощный процессор

Мощный процессор

ESP8266 оснащён микропроцессором Tensilica Xtensa® 32-bit LX106 RISC, который работает на регулируемой тактовой частоте от 80 до 160 МГц и поддерживает RTOS.

Сверхнизкое энергопотребление

Сверхнизкое энергопотребление

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

Возможности Wi-Fi

Возможности Wi-Fi

ESP8266 включает в себя приёмопередатчик Wi-Fi 802.11b/g/n HT40, что позволяет ему подключаться к сети Wi-Fi для доступа в интернет (Режим станции) или создавать собственную беспроводную сеть Wi-Fi (Режим программной точки доступа), к которой могут подключаться другие устройства.

Богатый набор периферии

Богатый набор периферии

ESP8266 включает множество встроенных периферийных устройств, таких как АЦП, UART, SPI, I2C, I2S, ШИМ и многое другое.

Множество платформ разработки

Множество платформ разработки

Для программирования ESP8266 доступно несколько платформ разработки. Вы можете использовать Arduino IDE, MicroPython, Espruino, Espressif SDK или одну из платформ, перечисленных на WikiPedia.

Низкая стоимость

Низкая стоимость

Это один из самых дешёвых микроконтроллеров с ценами, начинающимися от 3 долларов; это делает их доступными для широкой аудитории.

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

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

Ниже приведены лишь некоторые из многих различных типов плат ESP8266, которые вы можете попробовать.

ESP8266 NodeMCU

ESP8266 NodeMCU

Это одна из самых популярных плат разработки ESP8266. Она имеет 4 МБ флеш-памяти, 11 контактов GPIO и один вывод АЦП с 10-битным разрешением. Именно эту плату мы чаще всего используем в наших проектах Wi-Fi и IoT. Она чрезвычайно универсальна и идеально подходит для начинающих.

ESP8266 WeMos D1 Mini

WeMos D1 Mini

По сравнению с предыдущей платой, она имеет меньший форм-фактор и более доступную цену, что делает её отличным вариантом для более экономичного проекта. Кроме того, для платы D1 mini доступны различные шилды, позволяющие создавать небольшие и простые конструкции с минимальной проводкой.

ESP8266 ESP-01

ESP-01

Эта плата маленькая и помещается в любой корпус, что делает её идеальной для готовых проектов. Она имеет 1 МБ флеш-памяти и четыре вывода GPIO для управления и подключения периферийных устройств. Если вашим проектам требуется больше периферийных устройств, используйте одну из предыдущих плат.

Обзор аппаратной части ESP8266 NodeMCU

Когда речь заходит о платах разработки ESP8266, NodeMCU — безусловно самый широко используемый вариант. Именно эту плату мы будем использовать для наших экспериментов. Не беспокойтесь, если у вас другая плата; информация на этой странице всё равно будет полезна.

Давайте подробно рассмотрим аппаратную часть ESP8266 NodeMCU.

Модуль ESP-12E

Эта плата разработки оснащена модулем ESP-12E, который содержит процессор Tensilica Xtensa® 32-bit LX106 RISC, работающий на регулируемой тактовой частоте от 80 до 160 МГц и поддерживающий RTOS.

Совет

Чип ESP-12E

  • Tensilica Xtensa® 32-bit LX106

  • Тактовая частота от 80 до 160 МГц

  • 128 КБ внутренней RAM

  • 4 МБ внешней флеш-памяти

  • Приёмопередатчик Wi-Fi 802.11b/g/n

Аппаратные характеристики ESP8266 NodeMCU — чип ESP-12E

Также имеется 128 КБ оперативной памяти и 4 МБ флеш-памяти (для хранения программ и данных), что достаточно для обработки длинных строк, из которых состоят веб-страницы или данные JSON/XML.

ESP8266 включает в себя приёмопередатчик Wi-Fi 802.11b/g/n HT40, что позволяет ему подключаться к сети Wi-Fi для доступа в интернет (Режим станции) или создавать собственную беспроводную сеть Wi-Fi (Режим программной точки доступа), к которой могут подключаться другие устройства.

Питание

Поскольку рабочее напряжение ESP8266 составляет от 2,5 В до 3,6 В, плата включает стабилизатор напряжения LDO для поддержания стабильного напряжения 3,3 В. Он может надёжно обеспечивать ток до 600 мА, чего должно быть достаточно даже когда ESP8266 потребляет максимальный ток (80 мА) во время радиопередачи.

Совет

Требования к питанию

  • Рабочее напряжение: от 2,5 В до 3,6 В

  • Встроенный стабилизатор 3,3 В, 600 мА

  • Рабочий ток: 80 мА

  • 20 мкА в режиме сна

Аппаратные характеристики ESP8266 NodeMCU — питание

Выход стабилизатора 3,3 В выведен на контакт, обозначенный 3V3. Этот контакт может использоваться для питания внешних схем.

ESP8266 NodeMCU обычно питается через встроенный разъём MicroB USB. В качестве альтернативы, если у вас есть стабилизированный источник питания 5 В, вы можете использовать контакт VIN для прямого питания ESP8266 и его периферийных устройств.

Периферия и ввод/вывод

ESP8266 NodeMCU имеет в общей сложности 17 контактов GPIO, которые выведены на контактные гребёнки. Эти контакты могут выполнять различные периферийные функции, включая:

  • 1 канал АЦП — 1 канал 10-битного SAR АЦП

  • 2 интерфейса UART — 2 интерфейса UART с поддержкой управления потоком

  • 4 выхода ШИМ — 4 вывода ШИМ для управления, например, скоростью двигателя или яркостью светодиода

  • Интерфейсы SPI и I2C — два интерфейса SPI и один I2C для подключения различных датчиков и периферийных устройств

  • Интерфейс I2S — один интерфейс I2S для добавления звука в ваш проект

Совет

Мультиплексированные входы/выходы

  • 1 канал АЦП

  • 2 интерфейса UART

  • 4 выхода ШИМ

  • Интерфейсы SPI, I2C и I2S

Аппаратные характеристики ESP8266 NodeMCU — мультиплексированные контакты GPIO

Благодаря функции мультиплексирования контактов ESP8266, которая позволяет нескольким периферийным устройствам использовать один контакт GPIO. Например, один контакт GPIO может выполнять функции I2C, I2S, UART, ШИМ и ИК-пульта дистанционного управления и т.д.

Встроенные кнопки и светодиодный индикатор

На ESP8266 NodeMCU имеются две кнопки. Кнопка Reset, обозначенная RST, используется для сброса чипа ESP8266. Другая кнопка — FLASH, которая используется для обновления прошивки.

Совет

Кнопки и индикаторы

  • RST — сброс чипа ESP8266

  • FLASH — загрузка новых программ

  • Синий светодиод — программируемый пользователем

Аппаратные характеристики ESP8266 NodeMCU — кнопки Reset, Flash и светодиодные индикаторы

На плате также имеется программируемый пользователем светодиод, подключённый к контакту D0.

Последовательная связь

Плата включает контроллер USB-UART мост CP2102 от Silicon Labs, который преобразует USB-сигналы в последовательные и позволяет программировать чип ESP8266.

Совет

Последовательная связь

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

  • Скорость связи 4,5 Мбит/с

  • Поддержка управления потоком

Аппаратные характеристики ESP8266 NodeMCU — преобразователь CP2102 USB в TTL

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

ESP8266 NodeMCU имеет 30 контактов в общей сложности. Для удобства контакты с похожими функциями сгруппированы вместе. Распиновка выглядит следующим образом:

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

Контакты питания Имеется четыре контакта питания: один VIN и три 3.3V. Контакт VIN может использоваться для прямого питания ESP8266 и его периферийных устройств, если у вас есть стабилизированный источник питания 5 В. Контакт 3.3V является выходом встроенного стабилизатора напряжения; от него можно получить до 600 мА.

GND — контакт заземления.

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

Канал АЦП ESP8266 включает 10-битный SAR АЦП. АЦП может использоваться для выполнения двух измерений: проверки напряжения питания на контакте VDD3P3 и проверки входного напряжения на контакте TOUT. Однако они не могут выполняться одновременно.

Контакты SPI ESP8266 имеет два SPI (SPI и HSPI) в режимах ведомого и ведущего. Эти SPI также поддерживают перечисленные ниже функции общего назначения:

  • 4 режима синхронизации формата передачи SPI

  • До 80 МГц и делённые тактовые частоты от 80 МГц

  • FIFO до 64 байт

Контакты I2C ESP8266 не имеет аппаратных контактов I2C, но это можно реализовать программно (методом "bitbanging"). Это работает довольно хорошо, и ESP8266 достаточно быстр, чтобы соответствовать скорости «уровня Arduino». По умолчанию GPIO4 (SDA) и GPIO5 (SCL) используются как контакты I2C для упрощения работы людей, использующих существующий код, библиотеки и скетчи Arduino. Однако вы можете использовать любые другие два контакта GPIO в качестве контактов I2C, вызвав wire.begin(SDA, SCL) в Arduino IDE.

Контакты UART ESP8266 имеет два интерфейса UART, UART0 и UART2, которые поддерживают асинхронную связь (RS232 и RS485) на скорости до 4,5 Мбит/с. UART0 (контакты TXD0, RXD0, RST0 и CTS0) используется для связи, тогда как UART1 (контакт TXD1) имеет только сигнал передачи данных и обычно используется для вывода логов.

Контакты ШИМ (PWM) Выход широтно-импульсной модуляции (ШИМ) может быть программно реализован на всех контактах GPIO от GPIO0 до GPIO15. На ESP8266 сигнал ШИМ имеет 10-битное разрешение, а диапазон частоты ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

Контакты SDIO ESP8266 имеет один ведомый SDIO (Secure Digital Input/Output Interface) для подключения SD-карт. Поддерживаются SDIO v1.1 (4-бит, 25 МГц) и SDIO v2.0 (4-бит, 50 МГц).

Контакты управления используются для управления ESP8266. Это контакты EN, RST, FLASH и WAKE.

  • Контакт EN (также известный как CH_PD или Chip Power Down) используется для включения ESP8266. При подтяжке к HIGH чип включён; при подтяжке к LOW чип работает в режиме пониженного энергопотребления.

  • Контакт RST — контакт сброса, который обычно удерживается в высоком состоянии. Его можно использовать для сброса системы ESP8266, кратковременно подтянув его к низкому уровню. Это эквивалентно нажатию встроенной кнопки RST.

  • Контакт FLASH используется ESP8266 для определения момента загрузки в режим загрузчика. Если контакт удерживается в низком состоянии при включении питания, начнётся загрузка! Это эквивалентно нажатию встроенной кнопки FLASH.

  • Контакт WAKE используется для пробуждения ESP8266 из глубокого сна.

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

Для программирования ESP8266 доступно несколько платформ разработки.

Вы можете выбрать Espruino (JavaScript SDK и прошивка, близко эмулирующая Node.js), Mongoose OS (операционная система для IoT-устройств, рекомендованная Espressif Systems и Google Cloud IoT), MicroPython (реализация Python 3 для микроконтроллеров), SDK от Espressif или одну из платформ, перечисленных на WikiPedia.

К счастью, замечательное сообщество ESP8266 недавно пошло ещё дальше в выборе IDE, создав дополнение для Arduino. Если вы только начинаете работу с ESP8266, мы рекомендуем начать именно с этой среды, которую мы рассмотрим в данном руководстве. Для получения дополнительной информации посетите репозиторий ESP8266 Arduino на GitHub.

Установка ядра ESP8266

Первый шаг в установке ядра ESP8266 Arduino — наличие последней версии Arduino IDE (Arduino 1.8.5 или выше), установленной на вашем компьютере. Если вы ещё этого не сделали, мы рекомендуем сделать это прямо сейчас.

Последняя версия Arduino IDE

Затем запустите Arduino IDE и перейдите в File > Preferences.

Настройки Arduino IDE

Заполните поле «Additional Board Manager URLs» следующим содержимым:

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

Затем нажмите кнопку «OK».

Arduino IDE — URL JSON для ESP8266

Теперь перейдите в Tools > Board > Boards Manager…

Менеджер плат Arduino IDE

Отфильтруйте поиск, введя «esp8266». Найдите ESP8266 от ESP8266 Community. Нажмите на эту запись, а затем выберите Install.

Пакет ESP8266 в Arduino IDE

После установки перезапустите Arduino IDE и перейдите в Tools > Board, чтобы убедиться, что платы ESP8266 доступны.

Опция ESP8266 в менеджере плат Arduino IDE

Теперь выберите вашу плату в меню Tools > Board (в нашем случае это NodeMCU 1.0 (ESP-12E Module)). Если вы не уверены, какая у вас плата, выберите Generic ESP8266 Module.

Платы ESP8266 в менеджере плат Arduino IDE

Наконец, подключите ESP8266 NodeMCU к вашему компьютеру и выберите порт (если COM-порт не отображается в вашей Arduino IDE, вам необходимо установить драйверы CP210x USB to UART Bridge VCP):

Выбор порта ESP8266 в Arduino IDE

Вот и всё! Теперь вы можете начать писать код для вашего ESP8266 в Arduino IDE.

Вам следует убедиться, что у вас всегда установлена самая последняя версия ядра ESP8266 Arduino.

Просто перейдите в Tools > Board > Boards Manager, найдите ESP8266 и проверьте установленную версию. Если доступна более новая версия, вам следует установить её.

Примеры скетчей ESP8266

Ядро ESP8266 Arduino включает несколько примеров скетчей. Чтобы получить доступ к примерам скетчей, перейдите в File > Examples > ESP8266.

Вы увидите набор примеров скетчей. Вы можете выбрать любой из них, чтобы загрузить скетч в вашу IDE и начать экспериментировать с ним.

Примеры пакета ESP8266 в Arduino IDE