Что такое NodeMCU? Программируем в среде Arduino IDE
NodeMCU это отладочная плат на базе микроконтроллера ESP8266. Основная особенность данных микроконтроллеров наличие Wi-fi на борту. Вы сможете управлять своим проектом через Wi-fi соединения, это упрощает создания радио управляемых моделей. Разработку систем умного дома и пр.
Как показано на картинке выше NodeMCU имеет 11 пинов ввода-выводов.
Доп. Назначение пинов:
- D1–D10 — выходы с ШИМ (PWM)
- A0 — аналоговый вход с АЦП
- D9, D10 — UART
- D1, D2 — I²C/TWI
- D5–D8 — SPI
Это не очень много по сравнению с той же Arduino NANO у которой 22.
Запитать NodeMCU можно :
- 5-18 вольт через вывод Vin (согласно параметрам стабилизатора AMS1117-3.3)
- 5 вольт через вывод VUSB или USB-гнездо
- 3.3 вольта непосредственно через выводы 3V
Однако мой опыт показывает что при подключении по Vin больше 9 В . Стабилизатор начинает очень сильно греться и через некоторое время начинаются сбои в работе Wi-fi.
На плате установлен ESP-12E, параметры взяты из даташита на ESP-12E:
- протокол Wi-Fi 802.11 b/n/g
- частота 2.4 — 2.5 GHz (2400-2483.5 MHz)
- режим Wi-Fi: точка доступа, клиент
- защита Wi-Fi: WPA, WPA2
- шифрование Wi-Fi: WEP, TKIP, AES
- сетевые протоколы: IPv4, TCP, UDP, HTTP, FTP
- 80 MHz 32-bit процессор
- 11 доступных портов ввода/вывода UART, HSPI, I2C, I2S, GPIO, PWM
- рабочее напряжение 3.0 . 3.6 вольт
- максимальная нагрузка на вывод не более 12 mA
- максимальное потребление модуля 200 mA, среднее 80 mA (подробнее в 11 таблице даташита ESP-12E)
- рабочая температура -40 . 125 С
Еще одна особенность данной отладочной платы в том что ее можно программировать в среде Arduino IDE. Для данной платы написано много библиотек и есть много примеров на просторах интернета.
Для того чтобы начать программировать NodeMCU в среде Arduino IDE нужно подготовить срезу разработки.
В пункте меню Фаил → Настройки
В поле Дополнительные ссылки для Менеджера плат пишем такую ссылку:
Жмем ОК и переходим в окно менеджера плат:
В самом низу будет нужный нам пакет « esp8266 by ESP8266 Community». Выбираем его и жмем кнопку «Установка».
Спустя некоторое время пакет скопирует необходимые файлы и в Arduino IDE.
После чего можно будет выбрать нужную нам плату.
После чего выбираем порт. В Ubuntu это выгладит так.
В Windows это com-порт.
Все Сейчас можно загрузить первый скетч. Для примера возьмем ESP8266 Blink из примеров которые устанавливаются при установки платы ESP8266.
После загрузки вы увидите мигание синего светодиода на плате NodeMCU. Мы научились прошивать данную отладочную плату. Сейчас можно создавать различные проекты на ESP8266.
Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.
Спасибо за внимание!
Понравилась статья? Поделитесь ею с друзьями:
Настройка Arduino IDE для NodeMCU
NodeMCU — это популярная и очень удобная платформа на основе WiFi модуля ESP-8266. По сути, NodeMCU представляет собой плату, на которой размещены: сам модуль ESP-8266, стабилизатор напряжения и USB-UART мост.
Существуют разные версии ESP8266, но почти для всех используется один и тот же способ настройки среды разработки Arduino IDE. О том, как, собственно, сделать эту настройку и пойдет речь в статье.
Настройка ESP8266 в Arduino IDE
Для этой процедуры необходим доступ в интернет, так как Arduino IDE требуется скачать дополнительные пакеты.
В поле Дополнительные ссылки для Менеджера плат пишем такую ссылку:
В самом низу будет нужный нам пакет «esp8266 by ESP8266
Жмём кнопку Установить.
Спустя некоторое время пакет скопирует необходимые файлы и в Arduino IDE можно будет выбрать нужную нам плату.
Подключение светодиода к NodeMCU
В качестве примера, подключим к NodeMCU светодиод и напишем программу, которая будет включать и выключать его с периодом в одну секунду.
Для начала посмотрим на схемы выводов NodeMCU.
Плата имеет 13 цифровых выводов, обозначенных аббревиатурой GPIO. Можем подключить светодиод к любому из них. Пусть это будет вывод D7 (он же GPIO13).
Принципиальная схема
Внешний вид макета
NodeMCU работает с напряжением 3.3 Вольта, так что для подключения красного светодиода нам потребуется использовать токозадающий резистор с сопротивлением 65 Ом. Но подойдет и распространенный резистор 200 Ом.
Загрузка программы на NodeMCU с помощью Arduino IDE
Теперь, когда Arduino IDE умеет работать с NodeMCU и светодиод подключен, попробуем загрузить первую программу.
В меню «Инструменты/Плата» выбираем NodeMCU 1.0.
Загружаем программу на NodeMCU, смотрим на светодиод 🙂
Заключение
В следующей статье поговорим о том, как создать простейший веб-сервер на базе NodeMCU (да и вообще на любой ESP8266), который позволит нам через WiFi управлять любыми устройствами.
Обзор платы NodeMCU ESP8266 и ее использование в Arduino IDE
Интернет вещей (IoT) является одной из самых популярных областей в мире технологий. Физические объекты и цифровой мир связаны сейчас как никогда. Помня об этом, компания Espressif Systems (шанхайская компания по производству полупроводниковых устройств) выпустила крутой микроконтроллер с поддержкой Wi-Fi, ESP8266, по невероятной цене! С помощью него менее чем за 3 доллара можно контролировать и управлять устройством из любой точки мира – идеально подходит практически для любого проекта IoT.
Характеристики платы NodeMCU ESP8266 и ее использование в Arduino IDE
Модуль ESP-12E
Отладочная плата оснащена модулем ESP-12E, содержащим микросхему ESP8266 с RISC микропроцессором Tensilica Xtensa® 32-bit LX106, который работает с регулируемой тактовой частотой от 80 до 160 МГц и поддерживает RTOS.
Характеристики ESP-12E
- 32-разрядный LX106 от Tensilica Xtensa®
- Тактовая частота от 80 до 160 МГц
- 128 КБ встроенной оперативной памяти
- 4 МБ внешней внешней флеш-памяти
- Приемопередатчик Wi-Fi 802.11b/g/n
Рисунок 1 – ESP8266 NodeMCU
Также данный модуль имеет 128 КБ ОЗУ и 4 МБ флеш-памяти (для хранения программ и данных), достаточных, чтобы справиться с большими строками, которые составляют веб-страницы, данными в JSON/XML и всем, что мы сегодня добавляем на устройства IoT.
ESP8266 содержит встроенный приемопередатчик Wi-Fi 802.11b/g/n HT40, поэтому он может не только подключаться к сети Wi-Fi и взаимодействовать с интернетом, но и устанавливать собственную сеть, позволяя другим устройствам подключаться напрямую к нему. Это делает ESP8266 NodeMCU еще более универсальным.
Требования к питанию
Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.
Требования к питанию
- Рабочее напряжение: от 2,5 до 3,6 В
- Встроенный стабилизатор: 3,3 В, 600 мА
- Рабочий ток: 80 мА
- Потребление в спящем режиме: 20 мкА
Рисунок 2 – Элементы питания ESP8266 NodeMCU
Питание к ESP8266 NodeMCU подается через встроенный USB-разъем MicroB. В качестве альтернативы, если у вас есть стабилизированный источник напряжения 5 В, можно использовать вывод VIN для непосредственного питания ESP8266 и его периферии.
Предупреждение
ESP8266 требует 3,3 В для питания и логические уровни 3,3 В для связи. Контакты GPIO не допускают напряжение 5 В! Если вы хотите соединить плату со схемами 5 В (или выше), то необходимо реализовать согласование логических уровней.
Периферия и ввод/вывод
ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, выведенных на разъемы с обеих сторон отладочной платы. Эти выводы могут использоваться для выполнения различных периферийных задач, в том числе:
- вход АЦП – канал 10-разрядного АЦП;
- интерфейс UART – интерфейс UART используется для загрузки кода по последовательной связи;
- выходы ШИМ – выводы ШИМ могут использоваться для регулировки яркости светодиодов или управления двигателями;
- интерфейсы SPI, I2C – интерфейсы используются SPI и I2C для подключения всевозможных датчиков и периферийных устройств;
- интерфейс I2S – интерфейс I2S используется для цифровой передачи звука.
Мультиплексируемые выводы ввода/вывода
- 1 канал АЦП
- 2 интерфейса UART
- 4 выхода ШИМ
- Интерфейсы SPI, I2C и I2S
Рисунок 3 – Мультиплексируемые выводы GPIO платы ESP8266 NodeMCU
В ESP8266 используется функция мультиплексирования выводов (несколько периферийных устройств мультиплексируются на один вывод GPIO). Это означает, что один вывод GPIO может действовать как PWM/UART/SPI.
Кнопки и светодиодный индикатор на плате
На плате ESP8266 NodeMCU находятся две кнопки. Одна из них, помеченная как RST, расположенная в верхнем левом углу, представляет собой кнопку сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в левом нижнем углу – это кнопка загрузки, используемая при обновлении прошивки.
Кнопки и индикаторы
- RST – сброс чипа ESP8266
- FLASH – загрузка новой программы
- Синий светодиод — программируется пользователем
Рисунок 4 – Кнопки и светодиоды на плате ESP8266 NodeMCU
На плате также имеется светодиодный индикатор, который программируется пользователем и подключен к выводу D0 платы.
Последовательная связь
На плате установлен контроллер USB-UART CP2102 от Silicon Labs, который преобразует USB сигнал в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.
Последовательная связь
- USB-UART преобразователь CP2102
- Скорость связи 4,5 Мбит/с
- Поддержка управления потоком
Рисунок 5 – Преобразователь USB↔TTL CP2102
Если на вашем компьютере установлена старая версия драйвера CP2102, рекомендуем выполнить обновление прямо сейчас.
Распиновка ESP8266 NodeMCU
С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.
Рисунок 6 – Распиновка ESP8266 NodeMCU
Для простоты мы сгруппируем выводы с аналогичными функциями.
Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.
GND – это вывод земли отладочной платы ESP8266 NodeMCU.
Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.
Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.
Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).
Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0 , RXD0 , RST0 и CTS0 ), который поддерживает управление потоком. UART1 (вывод TXD1 ) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.
Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:
- 4 режима синхронизации передачи SPI;
- до 80 МГц и тактовые частоты, полученные делением 80 МГц;
- до 64 байт FIFO.
Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.
Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.
Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN , вывод сброса RST и вывод пробуждения WAKE .
- Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
- Вывод RST используется для сброса микросхемы ESP8266.
- Вывод WAKE используется для вывода чипа из глубокого сна.
Платформы разработки для ESP8266
Теперь перейдем к интересным вещам!
Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на Википедии.
К счастью, крутое сообщество ESP8266 сделало выбор IDE на шаг вперед, создав дополнение к Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем начать с этой среды разработки, и ее мы опишем в данном руководстве.
Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.
Установка ядра ESP8266 на ОС Windows
Давайте приступим к установке ядра ESP8266 Arduino.
Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.
Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:
Рисунок 7 – Установка платы ESP8266 в Arduino IDE с помощью json URL
Отлично. Затем перейдите к Менеджеру плат, выбрав Инструменты → Платы → Менеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.
Рисунок 8 – Установка ядра ESP8266 в менеджере плат Arduino IDE
Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит
110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.
Пример Arduino: мигалка
Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!
Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!
Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню Инструменты → Плата.
Рисунок 9 – Выбор отладочного модуля NodeMCU в Arduino IDE
Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200
Рисунок 10 – Выбор COM порта в Arduino IDE
Предупреждение
Уделите больше внимания выбору платы, выбору COM порта и скорости загрузки. В случае некорректных настроек при загрузке новых скетчей вы можете получить ошибку espcomm_upload_mem.
После выполнения всех настроек попробуйте пример скетча, приведенного ниже.
После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.
Рисунок 11 – Рабта тестового скетча Blink на ESP8266 NodeMCU