Настройка 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.

const byte ledPin = 13; void setup() < pinMode(ledPin, OUTPUT); >void loop()
Загружаем программу на NodeMCU, смотрим на светодиод
Заключение
В следующей статье поговорим о том, как создать простейший веб-сервер на базе NodeMCU (да и вообще на любой ESP8266), который позволит нам через WiFi управлять любыми устройствами.
Распиновка NodeMcu V3 на ESP8266 и подключение к Arduino IDE

Экран последовательного порта ведомого устройства (Arduino Uno):

Экран последовательного порта главного устройства (NodeMCU V3):

Самые популярные материалы в блоге
За все время
- BMS — обзор контроллеров защиты аккумуляторных батарей
- Установка ESP32 в Arduino IDE (Руководство для Windows)
- Адресная светодиодная лента Arduino и WS2812B
- Веб-сервер потокового видео ESP32-CAM (работает с Home Assistant)
- Светодиодный индикатор TM1637 и Arduino — схема подключения
Установка ядра ESP8266 на ОС Windows
Перейдем к установке ядра Arduino ESP8266.
Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или новее). Если у вас его нет, мы рекомендуем вам обновить его сейчас.
Последняя версия Arduino IDE
Во-первых, нам нужно обновить диспетчер вкладок с помощью настраиваемого URL-адреса. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL-адрес в текстовое поле Additional Links for Board Manager, расположенное в нижней части окна:

Рисунок 7 — Установка платы ESP8266 в IDE Arduino с использованием URL-адреса json
Хороший. Затем перейдите в PCB Manager, выбрав Tools → PCB → PCB Manager. Помимо стандартных плат Arduino, должно быть несколько новых записей. Отфильтруйте результаты поиска, набрав esp8266. Щелкните эту запись и выберите Установить.

Рисунок 8 — Установка ядра ESP8266 в диспетчере плат Arduino IDE
Определения и инструменты для платы ESP8266 включают полностью новый набор gcc, g ++ и других довольно больших скомпилированных двоичных файлов, поэтому загрузка и установка может занять несколько минут (размер сжатого файла ~ 110 МБ). Когда установка будет завершена, рядом с элементом появится УСТАНОВЛЕНО. Теперь вы можете закрыть диспетчер плат.
Последовательная связь
На плате используется контроллер USB-UART Silicon Labs CP2102, который преобразует сигнал USB в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.
- Конвертер USB-UART CP2102
- Скорость связи 4,5 Мбит / с
- Поддержка управления потоком

Рисунок 5 — Конвертер USB-TTL CP2102
Если на вашем компьютере установлена старая версия драйвера CP2102, мы рекомендуем немедленно выполнить обновление.
Настройка облачной части для работы с устройством
Оставим на время наше устройство и создадим его двойника в облаке. В последнее время можно создать двойное устройство прямо на портале Azure, чтобы воспользоваться преимуществами новых функций. В группе настроек Центра Интернета вещей под названием Проводник выберите устройства Интернета вещей и нажмите + Добавить.
Чтобы подключить устройство к IoT Hub, нам нужно создать SAS (Shared Access Signature). Двойной ключ устройства используется для генерации SAS, который можно получить с помощью вспомогательной утилиты (Device Explorer, iothub-explorer, IoT Extension for Azure CLI 2.0). Но самый простой способ получить ключ по-прежнему существует на портале Azure, перейдя в Центр Интернета вещей → Устройства Интернета вещей.

IoT Explorer
SAS можно создать на устройстве или воспользоваться онлайн-службой. По сути, SDK может автоматически генерировать SAS (просто укажите в коде двойной ключ устройства).

Создание токена с помощью службы
Способ генерации токена SAS веб-службой в течение ограниченного времени немного более безопасен. Хотя есть определенный нюанс. Если вы отправляете службе только имя устройства, злоумышленник может заставить имена получить токен с другого устройства. Поэтому, чтобы немного обезопасить процесс, я предлагаю следующее решение: сохранить хеш Azure-ключа двойника устройства на устройстве. А в служебном коде перед генерацией SAS мы проверим, совпадает ли хеш с хешем ключа устройства. Следовательно, вы можете получить SAS, только если знаете имя устройства и хэш его ключа.
Первый метод, при котором SAS генерируется на устройстве, проще и удобнее, но немного менее безопасен, поскольку, получив доступ к устройству, злоумышленник сможет получить ключ и сгенерировать устройства SAS самостоятельно. Во втором случае взломщик сможет получать только токены SAS, срок действия которых ограничен.
Оказывается, оба метода обычно не идеальны, если у хакера есть доступ к устройству. Защита вашего соединения с помощью VPN здесь тоже не поможет. В этом случае канал передачи будет защищен, но тот, кто получит устройство, сможет получить доступ к каналу. К сожалению, на NodeMCU, Arduino и т.п нет возможности хранить ключи / пароли в каком-либо безопасном хранилище.
Периферия и ввод/вывод
NodeMCU ESP8266 имеет в общей сложности 17 контактов GPIO, подключенных к разъемам по обе стороны от макетной платы. Эти результаты можно использовать для выполнения различных периферийных действий, в том числе:
- вход АЦП — 10-битный канал АЦП;
- интерфейс UART — интерфейс UART используется для загрузки кода через последовательную связь;
- выходы PWM — выходы PWM могут использоваться для уменьшения яркости светодиодов или управления двигателями;
- интерфейсы SPI, I2C: интерфейсы используются SPI и I2C для подключения всех типов датчиков и периферийных устройств;
- интерфейс I2S — интерфейс I2S используется для передачи цифрового звука.
Вывод мультиплексного ввода / вывода
- 1-канальный aDC
- 2 интерфейса UART
- 4 выхода ШИМ
- Интерфейсы SPI, I2C и I2S

Рисунок 3 — Мультиплексированные контакты GPIO платы NodeMCU ESP8266
ESP8266 использует функцию мультиплексирования контактов (несколько периферийных устройств мультиплексируются на одном контакте GPIO). Это означает, что вывод GPIO может действовать как PWM / UART / SPI.
Подготовка программного обеспечения
NodeMCU в этом проекте из Китая, поэтому используется USB-чип CH341. Необходимо установить драйвер для CH341. Драйвер можно скачать ниже, разархивировать и установить на свой компьютер.
Затем для использования с Arduino IDE вам необходимо добавить библиотеку плат. Откройте IDE Arduino:
- Инструменты -> Доска -> Менеджер (Инструменты -> Доска -> Менеджер доски).
- Найдите «esp8266 от сообщества ESP8266» и установите.
- Файл -> Настройки).
- Заполните дополнительное поле URL-адреса Board Manager:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - Инструменты -> Плата -> NodeMCU 1.0 (Инструменты -> Плата -> NodeMCU 1.0).
В прикрепленном файле Arduino измените параметры соответствующим образом:
- SSID к вашему Wi-Fi
- пароль для вашего Wi-Fi
Вы также можете изменить контрольный вывод в NodeMCU.

Подключение и настройка девайса
Чтобы устройство было распознано в Windows, драйвер должен быть загружен по следующей ссылке: CP210x USB to UART Bridge VCP Drivers.
Стандартная скорость последовательного порта NodeMCU составляет 115 200 бит / с. Вы можете установить другую скорость, но при первом сбросе устройства она вернется к 115 200. Важно, чтобы драйвер был установлен на точно такую же скорость.

Собственность водителя
Прошивки для esp8266 NodeMcu
Платформа основана на стандартной прошивке MCU Node, в которую интегрирован интерпретатор языка Lua. Используя команды Lua, вы можете делать следующее:
- Подключение к точке доступа Wi-Fi;
- Работает как точка доступа Wi-Fi;
- Войдите в режим глубокого сна, чтобы снизить энергопотребление;
- Включение или выключение светодиода на выходе GPIO16;
- Выполнение различных операций с файлами во флеш-памяти;
- Найдите открытую сеть Wi-Fi, подключитесь к ней;
- Вывод MAC-адреса;
- Управление пользовательскими таймерами.
Чтобы запрограммировать NodeMCU, вы можете использовать Arduino IDE или ESPlorer SDK. Этот комплекс имеет ряд отличий:
- Его можно запускать на многих разных платформах;
- Поддержка нескольких открытых файлов;
- Позволяет выделить код языка Lua;
- Возможность грамотно отправлять файлы;
- Возможность одновременной поддержки нескольких типов прошивок.
Для обеспечения правильной и стабильной работы необходимо обновить прошивку до последней версии. Есть несколько способов обновления: облачная служба, образ Docker и сборка на Linux. У каждого из этих методов есть свои плюсы и минусы. Первый способ самый простой и понятный.
Сбор прошивки в облачном сервисе
Облачный сервис имеет простой и понятный интерфейс. Работа начинается с ввода электронной почты. Далее вам будет предложено выбрать тип прошивки: стабильная или протестированная. Первый используется для обучения и создания большого количества объектов, поэтому рекомендуется выбирать его. Следующим шагом будет подключение необходимых модулей. По умолчанию уже записано несколько основных пунктов, остальные следует включать только при необходимости. Затем выбираются дополнительные параметры. Среди них — поддержка FatFS для чтения SD-карты или включения режима отладки.
После начала сборки по почте придет письмо, сигнализирующее о начале процесса. Через некоторое время придет и вторая буква — вам будет предложено выбрать версию float (дробные числа) или integer (целые числа).
После перехода по полученной ссылке вам нужно будет скачать bin-файл и поместить его в раздел Ресурсы — Двоичный. Там будет находиться файл nodemcu_integer_0.9.5_20150318.bin, который необходимо удалить. В результате содержимое папки будет выглядеть так.

Обновление прошивки Node Mcu
Для правильной и стабильной работы карты файл esp_init_data_default.bin должен быть перезаписан. Вы можете скачать его с официального сайта. Требуемый файл необходимо вернуть в систему для прошивки NodeMCU Flasher по пути Ресурсы — Двоичные файлы после удаления из него старого файла.
Затем вы можете подключить NodeMCU и начать обновление. Для начала нужно изменить настройки: в NodeMCU Flasher во вкладке Config вместо INTERNAL: // NODEMCU нужно выбрать файл собранной прошивки.

Остальное оставьте без изменений, перейдите в «Операции» и нажмите «Вспышка». Как только прошивка закончится, нужно снова зайти в Config и в первой строке указать путь esp_init_data_default.bin. Он также указывает адрес, по которому вы хотите переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. Затем вам нужно вернуться в «Операции» и нажать «Вспышка.
Далее необходимо переформатировать всю файловую систему ячейки. Для этого вам необходимо запустить ESPlorer, установить скорость передачи данных 115200 и перезапустить NodeMCU. После всех вышеперечисленных шагов выйдет новая версия прошивки. Плата отладки полностью прошита и готова к использованию.
Требования к питанию
Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, эта плата оснащена стабилизатором напряжения LDO для поддержания постоянного напряжения 3,3 В. Он может надежно подавать ток до 600 мА, чего должно быть более чем достаточно. ESP8266 потребляет до 80 мА во время передачи RF. Выход стабилизатора также выведен на клеммы по бокам платы и обозначен как 3V3. Эти контакты можно использовать для подачи питания на внешние компоненты.
Требования к питанию
- Рабочее напряжение: от 2,5 до 3,6 В
- Встроенный стабилизатор: 3,3 В, 600 мА
- Рабочий ток: 80 мА
- Потребление в спящем режиме: 20 мкА

Рисунок 2 — Аккумуляторы NodeMCU ESP8266
ESP8266 NodeMCU получает питание через встроенный разъем MicroB USB. В качестве альтернативы, если у вас есть регулируемый источник питания 5 В, вы можете использовать вывод VIN для прямого питания ESP8266 и его периферийных устройств.
ESP8266 требует 3,3 В для питания и логического уровня 3,3 В для связи. Контакты GPIO не принимают 5В! Если вы хотите подключить плату к цепям 5 В (или выше), вам необходимо реализовать адаптацию логического уровня.
Приложение для смартфона
Мы используем MIT App Inventor (ссылка) для создания приложения для телефона Android. Вы можете бесплатно зарегистрироваться, используя свою учетную запись Gmail. Если вы просто хотите использовать приложение, загрузите zip-файл, распакуйте его и установите home3.apk на свой телефон.
Команда для каждого выходного контакта очень проста:
- включить красный / выключить красный
- включить зеленый / выключить зеленый
- включить синий / выключить синий
- включить желтый / выключить желтый
- включить оранжевый / выключить оранжевый
- включить коричневый / выключить коричневый
А если вы хотите изменить команды, перейдите в MIT App Inventor и измените home3.aiaas, как показано на изображениях ниже:
- Проект -> Импортировать проект (.aia) (Проект -> Импортировать проект).
- Перейдите в «Блокировать и редактировать команду).
- После внесения изменений выберите: Сборка -> Приложение (сохранить .apk).
- Установите ваше приложение
On-board Switches & LED Indicator
NodeMCU ESP8266 имеет две кнопки. Одна, помеченная как RST, расположенная в верхнем левом углу, — это кнопка сброса, которая, очевидно, используется для сброса микросхемы ESP8266. Другая кнопка FLASH в нижнем левом углу — это кнопка загрузки, используемая при обновлении прошивки.
Переключатели и индикаторы
- RST — сброс микросхемы ESP8266
- FLASH — загрузка новых программ
- Синий светодиод — программируется пользователем

Плата также имеет светодиодный индикатор, который программируется пользователем и подключается к контакту D0 платы.
Комплектующие
Необходимые детали перечислены ниже. Все это можно купить на Aliexpress или в любом другом интернет-магазине.
- NodeMcu V3 ESP8266 Китайская версия LoL1n v3.
- Релейный модуль с 8 реле (или отдельными релейными модулями).
- Смартфон Android.
Кроме того, нам потребуются сопутствующие детали: вентилятор, лампочки и т.д., которые мы будем включать или выключать со смартфона через приложение с помощью кнопок или голоса.
13 People Made This Project!

martini73 сделал это!

AengusR сделал это!

сирисак сделал это!
BrittB9 сделал это!
KegRaider сделал это!
PaulS557 сделал это!
Платформы разработки для ESP8266
А теперь самое интересное!
Существует множество платформ разработки, на которых можно программировать ESP8266. Вы можете использовать Espruino, JavaScript SDK и прошивку, которая эмулирует Node.js, или использовать Mongoose OS, операционную систему для устройств IoT (платформа, рекомендованная Espressif Systems и Google Cloud IoT), или использовать комплект для разработки программного обеспечения (SDK), предоставленный express или любой из платформ, перечисленных в Википедии.
К счастью, фантастическое сообщество ESP8266 сделало еще один шаг вперед в выборе IDE, создав надстройку для Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем вам начать с этой среды разработки, и мы опишем ее в этом руководстве.
Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальных участников сообщества ESP8266. Для получения дополнительной информации см. Репозиторий Arduino ESP8266 GitHub.
Создание Azure-функции для генерации SAS
Самый простой онлайн-сервис — использовать Функции Azure. Это фрагменты кода, которые можно записать прямо на портал Azure в браузере. Серьезно, но таким образом вы также можете программировать со своего смартфона. Конечно, никто не запрещает создавать и отлаживать их из Visual Studio и только потом публиковать в Azure в скомпилированном виде. Задача функции — выполнять какие-то операции, как правило, не очень сложные. По идее микросервиса каждая функция может делать что-то одно, но очень хорошо (принцип единой ответственности).
вы можете создать приложение Azure Functions на портале, заполнив небольшую анкету.

Создать функцию Azure
План Pay-As-You-Go позволяет вам оплачивать только те вызовы функций, которые сделаны. Это самый дешевый вариант. В настоящее время один миллион вызовов функций бесплатен. Обратите внимание, что вспомогательное хранилище данных (Storage) создается вместе с функцией).
Создав приложение-функцию, вы можете создать саму функцию. В этом случае нам понадобится такая функция, как Webhook + API. Функция может быть открыта для всех (анонимный доступ) или доступна только обладателям специального кода. Код можно получить из окна работы с функцией, щелкнув ссылку Получить URL-адрес функции.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного периода даст вам доступ ко ВСЕМ материалам Hacker, позволит вам загружать PDF-файлы, отключить рекламу на сайте и увеличить вашу личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Интересует статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для вас! Обратите внимание, что этот метод подходит только для статей, опубликованных более двух месяцев назад.
Подключение NodeMCU к компьютеру
Чтобы начать работу с NodeMcu, вам необходимо подключить плату к компьютеру. Первый шаг — установить драйвер CP2102 и открыть Arduino IDE. Далее нужно найти в «Файл» — «Настройки» и в окне «Дополнительные ссылки для менеджера карт» ввести ссылку http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json.

Далее в меню «документы» выберите «esp8266» — «доска» «менеджер досок» и установите последнюю версию. После действий, выполненных в меню «инструменты» — «вкладка», вам нужно найти NodeMCU.
После того, как все необходимые данные установлены и скопированы, можно приступать к работе.
Распиновка NodeMcu v3
Модуль V3 имеет 11 контактов ввода / вывода общего назначения. Кроме того, некоторые выводы имеют дополнительные функции:
- D1-D10 — вывод с широтно-импульсной модуляцией;
- D1, D2 — контакты для интерфейса I²C / TWI;
- D5 — D8 — вывод для интерфейса SPI;
- D9, D10 — UART;
- A0 — вход от АЦП.

Кнопки и светодиодный индикатор на плате
На плате NodeMCU ESP8266 есть две кнопки. Одна из них с надписью RST, расположенная в верхнем левом углу, — это кнопка сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в нижнем левом углу — это кнопка загрузки, используемая при обновлении прошивки.
Кнопки и индикаторы
- RST — сброс микросхемы ESP8266
- FLASH — загрузка новой программы
- Синий светодиод — программируется пользователем

Рисунок 4 — Кнопки и светодиоды на плате NodeMCU ESP8266
Плата также имеет программируемый пользователем светодиод, который подключается к контакту D0 платы.
Программируемый логический контроллер для автоматизации процессов

Пример подключения светодиода к NodeMCU
Принципиальная схема подключения представлена на рисунке.


Окончательный макет макета выглядит так:
Сама плата работает от 3,3 В, поэтому для подключения светодиода нужно использовать резистор. В этом примере резистор 65 Ом используется для красного светодиода.
Аналогично к плате подключается фотодиод:

Плату NodeMCU также можно использовать для инфракрасного управления. Для управления понадобится пульт с ИК-приемником и сама платформа. Инфракрасный приемник подключается по следующей схеме:

Собираем проект
Как вы можете видеть на изображении, NodeMCU работает при напряжении 3,3 В. Так что на борту есть регулятор напряжения. Вы можете включить его через порт USB, чтобы обеспечить 5 В постоянного тока, или подключить вывод VIN NodeMCU к источнику питания с максимальным диапазоном от 6 до 20 В.
На плате реле снимите перемычку между VCC — JDVCC. Поскольку реле 5 В, необходимо подать 5 В или меньше, но не менее 3,3 В. В противном случае реле не сработает.
В первом сценарии используется внешний источник питания 5 В. Для одновременной работы NodeMCU и всех реле минимум 1,5 А.
- Подключите источник питания к JD-VCC и контакту GND на плате реле.
- Подключите питание к VIN и GND NodeMCU
- Подключите выходные контакты от NodeMCU к плате реле (D0 D1 D2 D5 D6 D7)
- Подключите NodeMCU при 3,3 В к VCC на плате реле (у меня это работает, но в некоторых случаях 3,3 В недостаточно для активации реле; вы можете использовать VIN NodeMCU для VCC на плате реле, но он питает совместное использование не более доступно; это не будет проблемой, если только одно реле используется для управления лампочкой).
Во втором сценарии NodeMCU питается через USB-кабель от аккумулятора. Для платы реле используется внешний источник питания. Вместо 3,3 В вы можете подключить VIN NodeMCU к VCC на плате реле.
Краткое описание языка Lua
Lua имеет простой синтаксис, мощные конструкции описания данных на основе массивов и расширяемую семантику. Этот мощный язык программирования используется для создания программного обеспечения, расширяющего возможности различных игр. В отличие от других языков, Lua имеет более гибкие и более мощные конструкции.
Как добавить nodemcu v3 в arduino ide
И снова привет Хабр. Этот материал является продолжением моей предыдущей статьи — ESP8266 и Arduino, подключение, распиновка, и, должен сказать, что они взаимосвязаны. Я не буду затрагивать темы, которые уже раскрыты.
А сегодня, я поведаю, как же программировать ESP8266 при помощи Arduino IDE, так же прошивать другие прошивки, например NodeMcu… Вообщем, этот материал не ограничивается только одной темой Ардуино.

Тема ESP8266 — довольно таки непростая. Но, если работать с этими Wi-Fi модулями в среде разработки Arduino IDE — порог вхождения опускается до приемлемого для обычного ардуинщика уровня. Да и не только ардуинщика, а любого человека, у которого есть желание сварганить что-то по теме IoT(интернет вещей), причём не затрачивая много времени читая документацию для микросхемы и изучение API для этих модулей.
Данное видео, полностью дублирует материал, представленный в статье ниже.
Ну что же, мы уже умеем подключать ESP8266 и переводить его в режим программирования, теперь давайте перейдём к чему-то более полезному.
Скажу сразу — один раз запрограммировав модуль в среде разработки ардуино, мы сносим родную прошивку, и у нас пропадёт возможность работать с модулем при помощи AT-команд. Лично мне, от этого, не холодно/не жарко, но если кому-то это будет нужно — ближе к концу статьи я покажу, как обратно прошить в модуль родную прошивку, ну или какой-то загручик типа NodeMcu.
Для начала, на офф.сайте качаем последнюю версию Arduino IDE, на данный момент это 1.6.7. Более старые версии типа 1.0.5. не подойдут, потому что банально не имеют нужного функционала, а танцы с бубном нас не интересуют, не так ли?
Запускаем среду разработки и тут же идём в Файл/Настройки:

Вставляем ссылку в поле «Дополнительные ссылки для Менеджера плат:» и жмём «OK».
Данную ссылку я взял на странице проекта Arduino core for ESP8266 WiFi chip.
Потом идём Инструменты/Плата:/Менеджер плат.

Перед нами появится окно менеджера плат, листаем его до самого низа, и если всё сделано правильно мы увидим что-то подобно этому:

Кликаем курсором по надписи «esp8266 by ESP8266 Community» после этого, у нас появилась кнопка «Установка», выбираете нужную версию, я беру последнюю, на сегодняшний день это 2.1.0. и устанавливаю её. Среда разработки закачает нужные ей файлы(около 150 мегабайт) и напротив надписи «esp8266 by ESP8266 Community» появится «INSTALLED» то есть установлено:

Листаем список плат вниз и видим, что в списке у нас появилось много разных ESP, берём «Generic ESP8266 Module»:

Идём в «Инструменты» и выбираем нужный COM порт(у меня это COM32) Arduino или USB UART конвертора, потом ставим Upload Speed:«115200»:

Далее открываем консоль в Arduino IDE, подаём питание на модуль, если всё было сделано правильно, то мы увидим что-то в этом роде:

Выставляем скорость 74880 и «NL & CR» и опять же отключаем и подаём питание и он ответит кое какой отладочной информацией:

Заметьте, 74880 — не основная скорость ESP8266, просто он всего лишь на ней отправляет отладочную информацию. Если модуль ничего не отправляет в консоль, тогда возможно что-то подключили не так как надо.
По умолчанию скорость должна быть 115200, но в отдельных случаях может быть и 9600 и другие… Так что попробуйте подобрать.

После подбора нужной скорости отправляем модулю «AT» и он должен ответить что всё «ОК». Команда «AT+GMR» выводит информацию о прошивке.
Прежде чем начать прошивать ESP8266 в Arduino IDE я советую дочитать статью до конца.
Теперь давайте попробуем прошить ESP8266 через Arduino IDE. Переводим модуль в режим программирования(как это сделать я писал в предыдущей статье).
Давайте зашьём мигалку штатным светодиодом:
Замигал? Значит всё сделано правильно. Откуда я взял что светодиод подключен на первый пин? В предыдущей статье есть картинка с распиновкой разных модулей, и там есть разметка портов, при использовании загрузчика Arduino(пины отмечены розовым цветом).

Мигание светодиодом это конечно хорошо, но надо бы какой-то веб-сервер заделать или начать управлять светодиодом хотя бы при помощи кнопок в браузере, не так ли? Но об этом я расскажу уже как-нибудь в другой раз.
А теперь как прошить назад родную прошивку, да и как вообще прошивать модуль сторонними загрузчиками. Для ESP8266 есть такая программа как NodeMCU Flasher, которая изначально предназначена для прошивки загрузчика NodeMCU. Но как оказалось, она отлично прошивает и другие прошивки.
Я прикреплю к статье архив с данной программой и прошивкой для удобства, но тут всегда можно скачать новую версию NodeMCU Flasher.
В папке «nodemcu-flasher-master» есть 2 папки Win64 и Win32 и в зависимости от того какая разрядность у вашей ОС выбираем нужную. Дальше в папке Release запускаем «ESP8266Flasher.exe» и видим интерфейс программы:
Выбираем нужный COM порт и идём во вкладку «Config», убираем хрестик около «INTERNAL://NODEMCU» и ставим его на один пункт ниже, как на скрине:
(Если захотите прошить загрузчик NodeMCU — убираете хрестик там где его не было, и ставите — где он был, то есть около «INTERNAL://NODEMCU»).
Потом жмём по шестеренке и выбираем где лежит наша прошивка, прошивка как правило в формате *.bin(в прикреплённом архиве это «v0.9.5.2 AT Firmware.bin» которая лежит в основной папке), и так же выбираем «0x00000» как и выше.
Дальше идём во вкладку «Advanced» и меняем там скорость на 115200, именно эта скорость будет основная и модуль будет отзываться по ней на AT-команды в случае соответствующей прошивки.
Возвращаемся опять на вкладку «Operation» переводим модуль в режим программирования и жмём «Flash»:
Всё, модуль начал прошиваться, после перепрошивки не забываем перезагрузить модуль и вуаля, он прошит нужной нам прошивкой.

Проверяем AT-командой «AT+GMR» сделали ли мы всё верно:

Как видите всё нормально прошилось.
By Сергей ПоделкинЦ ака MrПоделкинЦ.
Уже на подходе плата на базе esp32:

http://www.pighixxx.com/test/2015/12/esp32-pinout/
Которая значительно круче чем esp8266, так что нас скоро ждёт бум, как мне кажется, темы IoT(интернет вещей).
Знакомство с ESP8266 и NodeMCU.

Для начала откроем Arduino ide и перейдем в настройки.

Потом в появившемся окне в строке Дополнительные ссылки для Менеджера плат вставим ссылку: http://arduino.esp8266.com/stable/package_esp8266com_index.json для установки в Arduino IDE дополнительных скриптов, что бы работать с модулями ESP8266, и жмем ОК

Далее переходим в Инструменты>Плата>менеджер плат

В появившемся окне прокручиваем список вниз к скриптам esp8266 by ESP8266 Community и кликаем.

После установки закрываем окно и переходим Инструменты > Плата и видим список доступных для программирования устройств на чипе ESP8266

Выбираем NodeMCU 1.0
Все параметры остальные оставляем по умолчанию.
Ну и загружаем в плату скетч:
В этом скетче объявлен пин 13 для управления светодиодом, но на плате NodeMCU нет такого пина, на плате все пины начинаются с буквы. Ниже привел картинку, сопоставления пинов NodeMCU с пинами программирования в Arduino IDE

В схеме видим, что 13 пин это D7
Подключаем светодиод и загружаем скетч. После наслаждаемся миганием светодиода.
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.
NodeMCU — быстрый старт для любителей Arduino
Аппаратная платформа Arduino отличная возможность начать программирование микроконтроллеров, не смотря на все её недостатки в виде упрощенного IDE и раздутого скомпилированного кода. Но рано или поздно возможностей ардуино перестает хватать для реализации своих идей и настает момент, когда надо двигаться дальше.
Если вам не хватает поддержки беспроводных сетей, то у вас два выхода: подключить к ардуино модуль ESP-01 (на Али) и остаться со всеми остальными параметрами ардуино, либо использовать платы на основе ESP-12(E), например NodeMCU, WeMos (на Ali) и многие другие китайские поделки, и получить при этом все преимущества и недостатки контроллера esp8266 (да-да, по сравнению с ардуино у esp8266 все же есть некоторые недостатки, но о них ниже).
В этой статье я буду рассматривать работу с NodeMCU с точки зрения пользователя ардуино, покажу быстрый способ перехода от ардуино к NodeMCU, проведу сравнение NodeMCU с ардуино, а так же покажу как получить доступ к устройству, построенному на NodeMCU, через интернет из любой точки мира (при условии что само устройство имеет доступ в интернет).
Но в самом начале несколько слов о параметрах и возможностях NodeMCU. Но перед этим стоит уточнить, что сравнивать NodeMCU и Arduino довольно сложно, так как у них разная «весовая категория». При этом у каждой из плат есть свои преимущества и недостатки. Так NodeMCU имеет бОльшие вычислительные способности и частоту процессора, бОльший объем памяти и самое главное имеет встроенную поддержку Wi-Fi, но при этом уступает Arduino в количестве как цифровых, так и аналоговых выводов.
Файлы печатной платы приведены на гитхабе https://github.com/nodemcu/nodemcu-devkit-v1.0 , там же и распиновка печатной платы
![]()
Обратите внимание на два зарезервированных вывода слева сверху. На плате, что досталась мне, сюда выведены дополнительные выводы питания прямо с usb гнезда (см. изображение ниже), при этом при питании через Vin на выводе VUSB отсутствует напряжение. Не знаю, сделали ли это сами разработчики NodeMCU или же постарались китайские изготовители плат.
Модуль можно питать тремя различными способами с различным напряжением:
- 5-18 вольт через вывод Vin (согласно параметрам стабилизатора AMS1117-3.3)
- 5 вольт через вывод VUSB или USB-гнездо
- 3.3 вольта непосредственно через вывозы 3V
![]()
На плате установлен 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 С
В том же даташите приведены назначения выводов. Выводы нумеруются против часовой стрелки начиная слева сверху, при этом антенна ESP-12E должна находиться вверху, а сам модуль должен быть повернут лицевой стороной.

NO. Pin Name Function
1 RST Reset the module
2 ADC АЦП 10 бит, диапазон входящего напряжения 0-1 вольт
3 EN Chip enable pin.Active high
4 IO16 GPIO16; может использоваться для вывода модуля из сна
5 IO14 GPIO14; HSPI_CLK
6 IO12 GPIO12; HSPI_MISO
7 IO13 GPIO13; HSPI_MOSI; UART0_CTS
8 VCC 3.3V power supply (VDD)
9 CS0 Chip selection
10 MISO Salve output master input
11 IO9 GPIO9
12 IO10 GBIO10
13 MOSI Master output slave input
14 SCLK Clock
15 GND GND
16 IO15 GPIO15; MTDO; HSPICS; UART0_RTS
17 IO2 GPIO2; UART1_TXD
18 IO0 GPIO0
19 IO4 GPIO4
20 IO5 GPIO5
21 RXD UART0_RXD; GPIO3
22 TXD UART0_TXD; GPIO1
И еще одна наглядная картинка с распиновкой ESP-12
![]()
Так же даташит содержит таблицу описания интерфейсов.
![]()
![]()
В качестве преобразователя USB-UART используется микросхема CH340G.
NodeMCU и ArduinoIDE
Переход в программировании от ардуино к NodeMCU не является сложной задачей, так как не придется осваивать иной язык программирования или иную IDE. Программировать NodeMCU можно из старой доброй ArduinoIDE, только необходимо добавить в нее поддержку esp8266. Для этого необходимо:
- запустить ArduinoIDE;
- перейти в пункт «Файл – Настройки»;
- в поле «Дополнительные ссылки для Менеджера плат» ввести адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать кнопку «ОК» (на скриншоте устаревшая и уже не рабочая ссылка);
![]()
- перейти в пункт меню «Инструменты – Плата:… — Менеджер плат», откроется окно Менеджера плат;
![]()
- в самом низу списка появится новый пункт «esp8266…», нажать на него и затем на кнопку «Установка»;
- дождаться завершения загрузки и установки необходимых файлов (будут загружены несколько пакетов объемом не менее 160 мегабайт) и перезапустить ArduinoIDE.
В итоге в пункте меню «Инструменты – Плата:…» появляется 21 новый пункт. Для работы с NodeMCU я выбираю из списка плату «NodeMCU 1.0 (ESP-12E Моdule)». На этом настройка ArduinoIDE завершена.
Обратите внимание на ссылки в менеджере плат. Ссылка More info приведет нас на страницу проекта на github, там в первую очередь стоит взглянуть на файл https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h в котором описано, как обращаться к выводам из среды ArduinoIDE и их соответствие выводам GPIO.
Так же назначения выводов описаны в файле https://github.com/esp8266/Arduino/blob/master/variants/generic/common.h
Здесь видно, что SPI соответствует выводам D5-8.
Если нажать на ссылку Online help, то откроется страница http://esp8266.github.io/Arduino/versions/2.2.0/ что несколько странно, потому что установлена последняя версия 2.3.0 и страница http://esp8266.github.io/Arduino/versions/2.3.0/ так же существует и доступна. На этой странице можно найти много полезной информации на английском языке. Разберемся же что из того что там представлено будет полезно для нас.
Первым делом рассмотрим описание стандартных функций (приведены на странице http://esp8266.github.io/Arduino/versions/2.3.0/doc/reference.html). Здесь сказано что номера выводов в среде ArduinoIDE совпадают с нумерацией GPIO. То есть что бы установить единицу на выводе GPIO16 нужно использовать команду digitalWrite(16, HIGH) или digitalWrite(D0, HIGH). Все выводы (описанные в https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h) могут работать с функциями pinMode, digitalRead, digitalWrite и analodWrite. Так же выводы, сконфигурированные на вход можно подтянуть к положительному выводу питания командой INPUT_PULLUP , вывод 16 можно притянуть к земле командой INPUT_PULLDOWN_16.
Прерывания доступны на всех GPIO, кроме GPIO16. Работа с прерываниями в NodeMCU ничем не отличается от работы с прерываниям в ардуино.
Аналоговый вход работает так же, как и на ардуино, analogRead(A0) считывает аналоговое значение с вывода GPIO17 (A0). Этот же АЦП может считывать напряжение VCC командой ESP.getVcc(), но перед этим в самом начале скетча (до функции setup) необходимо добавить строку ADC_MODE(ADC_VCC), а так же вывод А0 не должен быть никуда подключен.
Программный ШИМ работает на всех доступных GPIO, включается стандартной командой analogWrite(pin, value). Значение value лежит в диапазоне 0-1023 и может быть изменено функцией analogWriteRange(new_range). Стандартная частота ШИМ 1кГц, так же может быть изменена при помощи analogWriteFreq(new_frequency).
Порицаемая многими функция delay здесь играет особую роль. Дело в том, что кроме выполнения скетча, так же необходимо поддерживать связь по Wi-Fi. Это делается автоматически, после каждого выполнения loop или при вызове delay. Таким образом, если в функции loop есть фрагменты кода, которые выполняются более 50 микросекунд (например, выполняется какой-то большой цикл), то рекомендуют вызвать delay для нормальной работы Wi-Fi. Так же есть функция yield(), которая аналогична delay(0).
Последовательный порт Serial работает на GPIO1(TX) и GPIO3(RX). Последовательный порт Serial можно переназначить на GPIO15 (TX) и GPIO13 (RX) , для этого после вызова функции Serial.begin необходимо вызвать Serial.swap(). Для отмены переназначения выводов необходимо снова вызвать Serial.swap(). В Serial1 доступен только TX (GPIO2).
Так же в составе пакета для работы с esp8266 идут измененные библиотеки, работа с которыми отличается от стандартных библиотек.
EEPROM — перед началом работы с eeprom необходимо вызвать функцию EEPROM.begin(size), где необходимо указать, какой объем памяти eeprom необходимо использовать (от 4 до 4096 байт), функция EEPROM.write не записывает данные сразу,для записи данных надо использовать функцию EEPROM.commit, функция EEPROM.end так же записывает данные и завершает работу с eeprom.
I2C — перед началом работы с I2C необходимо вызвать функцию Wire.begin(int sda, int scl) , по умолчанию 4 (SDA) и 5 (SCL).
- функция ESP.deepSleep(microseconds, mode) переводит модуль в сон (mode — WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED). Чтобы вывести модуль из режима сна необходимо соединить GPIO16 и RST
- ESP.restart() перезапускает процессор
- сторожевой таймер (watchdog) реализован функциями ESP.wdtEnable(), ESP.wdtDisable(), и ESP.wdtFeed()
ESP8266 WiFi очень похожа на библиотеку WiFi Shield (https://www.arduino.cc/en/Reference/WiFi), и на странице http://esp8266.github.io/Arduino/versions/2.3.0/doc/libraries.html#wifi-esp8266wifi-library указаны только различия между этими библиотеками. Рассматривать только различия между библиотеками в отрыве от основной библиотеки WiFi Shield не имеет смысла, поэтому здесь делать я этого не буду.
Перейдем к практике.
Аналогом скетча «блинк» является нижеприведённый скетч, который создает локальную сеть и позволяет управлять выводами NodeMCU через адресную строку браузера.
Но если уж NodeMCU дает возможность управлять собой через интернет, то намного интереснее/удобнее/рациональнее создать устройство, управлять которым можно будет отовсюду, с любой точки планеты, а не только из локальной сети. Что бы реализовать такое соединение, необходимо использовать DNS серверы и настраивать модем, или использовать специальные сервисы, такие как Blynk или RemoteXY, например. Таких сервисов появляется всё больше и больше, выбор не ограничивается приведенными двумя примерами. Тем не менее, я покажу, как организовать доступ к NodeMCU из любой точки планеты именно при помощи сервиса RemoteXY.
В одной из своих предыдущих статей я рассказывал о способах подключения различных модулей связи к ардуино и работы с ними в сервисе RemoteXY, так же было рассмотрено подключение NodeMCU к локальной Wi-Fi сети (статья расположена по ссылке http://cxem.net/arduino/arduino213.php). Облачный способ подключения был создан уже послу публикации той статьи, и я в постскриптуме обещал рассмотреть этот способ связи в одной из следующих статей. Итак, поморгаем светодиодом через интернет.
Первым делом необходимо произвести конфигурацию подключения (смотрим скриншот).
![]()
Выбираем соединение «Cloud server — beta test», устройство NodeMCU, встроенный модуль связи и ArduinoIDE в качестве среды программирования. Далее необходимо настроить конфигурацию подключения модуля.

Здесь необходимо указать имя и пароль сети, к которой необходимо подключиться, выбрать токен из списка, нижние поля с серым фоном заполняются автоматически. Если необходимо создать новый токен, то необходимо нажать на кнопку «Мои токены», откроется страница со списком токенов, привязаных к вашему аккаунту.
![]()
Жмем «Создать новый токен», появляется окошко, в котором необходимо ввести имя устройства, при нажатии кнопки «создать» токен будет сгенерирован автоматически и появится в списке токенов.

В дальнейшем можно изменить имя устройства, нажав ссылку «изменить» в крайнем правом столбце таблицы. Переходим обратно в редактор и продолжаем работу над проектом.
На рабочем поле редактора я поместил элемент «кнопка», который по умолчанию привязан к выводу со светодиодом.


Здесь больше ничего делать не надо, жмем кнопку «Получть исходный код», копируем его в ArduinoIDE, в менеджере плат выбираем NodeMCU 1.0 (ESP-12E Module), выбираем COM-порт, остальные настройки оставляем без изменений и жмем «Загрузка».
Далее переходим к смартфону и запускаем программу RemoteXY. на стартовом экране сверху справа жмем на «+» что бы добавить новое подключение,
![]()
В списке выбираем «Облачный сервер»
![]()
Жмем на поле «Токен устройства» и появившемся окне вводим токен
![]()

Жмем «Ок» и «Подключиться»
![]()
И сразу же мы получаем доступ к устройству (если оно конечно имеет связь с сервером).
![]()
Обратите внимание, на странице списка токенов можно отслеживать состояние каждого устройство. Так надпись «connected» означает, что устройство подключено к серверу, а надпись «used» — что установлена связь между смартфоном и устройством.
![]()
А теперь создадим что-то полезное — кодовый замок-головоломку «Железный Феликс».
Идея этой «головоломки» принадлежит не мне, я лишь её адаптировал. В конце 90-х годов на телеканале «РТР» (нынешний первый канал) выходила передача «Довгань-шоу», маленький аналог «Форт-Боярда» с испытаниями и одним участником. В самом начале игры при помощи лототрона определялось 9-значное число, игроку в течение 9 небольших испытаний необходимо было найти эти числа (испытания были не сложными и короткими по продолжительности — 60-90-120 секунд). В конце игры, добытые в испытаниях числа, игроку необходимо было ввести в огромную копию арифмометра «Феликс», а недостающие числа подобрать. На подбор комбинации отводилось 120 секунд. Если комбинация была подобрана правильно, то рычаг, находящийся с правой стороны устройства, поддавался, дверь открывалась, и игрок мог выйти из комнаты (естественно в роли победителя).
Итак, воспроизведем этот «аттракцион» при помощи NodeMCU и смартфона. Для чего это нужно? Например, для организации квестов (по аналогии с той самой передачей, игроку необходимо будет добывать части пароля, а недостающие подобрать). Контроллер, при правильно подобранном пароле, может открыть дверь, или вывести на экран пароль, от кодового замка, точки доступа Wi-Fi (которая в свою очередь может открыть доступ к следующему квестовому устройству) или bluetooth. На худой конец такое устройство можно использовать просто как кодовый замок для двери, который трудно будет взломать перебором значений (еще бы, устройство предполагает 1 000 000 000 комбинаций пароля).
Getting Started w/ NodeMCU ESP8266 on Arduino IDE © GPL3+
In this tutorial, you will learn how to use NodeMCU with Arduino IDE.
- 131,585 views
- 12 comments
- 17 respects
Components and supplies
About this project
In this tutorial, you will learn how to use NodeMCU on Arduino IDE.
What You Will Learn
- General information about NodeMCU
- How to install ESP8266 based boards on Arduino IDE
- How to program NodeMCU on Arduino IDE
- Introducing boards that can be used instead of NodeMCU
What Is NodeMCU?
Today, IOT applications are on the rise, and connecting objects are getting more and more important. There are several ways to connect objects such as Wi-Fi protocol.
NodeMCU is an open source platform based on ESP8266 which can connect objects and let data transfer using the Wi-Fi protocol. In addition, by providing some of the most important features of microcontrollers such as GPIO, PWM, ADC, and etc, it can solve many of the project’s needs alone.
The general features of this board are as follows:
- Easy to use
- Programmability with Arduino IDE or IUA languages
- Available as an access point or station
- practicable in Event-driven API applications
- Having an internal antenna
- Containing 13 GPIO pins, 10 PWM channels, I2C, SPI, ADC, UART, and 1-Wire

How to program NodeMCU using Arduino IDE
In order to use Arduino IDE to program the NodeMCU, you have to introduce it to the software at first.
To do this copy the following code and follow the steps below:
step1. Choose Preferences in the File menu and enter the copied code in Additional Board Manager URLs part. Then press OK.

Step2. Search the word ESP8266 in Boards>boards manager from Tools menu. Then install ESP8266 boards. After complete installation, you will see the INSTALLED label on ESP8266 boards.

After these two steps, you can see ESP8266 based boards such as NodeMCU in your Arduino IDE boards list, and you can choose your desired board to upload the code.

You can see the NodeMCU pinouts below

In order to use digital pins, you should select GPIO numbers. For example, the D7 pin is defined as GPIO13. So you should set up the pin number 13 whenever you want to use D7 in your program. Also, you can use pin D2(GPIO4) as SDA and pin D1(GPIO5) as SCL
Controlling LED through an HTTP page Using NodeMCU
You can connect the internet through Wi-Fi using NodeMCU, and apply your desired commands by creating an HTTP page.
In this example, you can control an LED by pressing the ON and OFF key.
Enter your modems SSID and password in the provided part and upload it on your NodeMCU board using Arduino IDE. (Leave other settings to the default)
After opening the Serial Monitor, if the Internet connection is established, you will be given the IP address of the page you have created (for example 192.168.1.18).copy and paste it in your browser to open the HTTP page.
What other boards can I use instead of NodeMCU?
There are various important factors for choosing the type of board for an IOT system, such as the number of GPIO pins, communicating protocols, including an antenna, and etc.
Also, there are different boards and platforms, each has its specific features.
Here we have compared them based on the most important required features for IOT projects.
Похожие публикации:
- Как подключить изображение css
- Как подключить скачанный шрифт в css
- Как поднять картинку вверх css
- Как полностью удалить node js ubuntu
Setting up a NodeMCU V3 ESP-12E (esp8266) for Arduino IDE

There are various environments that can be used to program an ESP8266, but as a lot of users will come to this chip after previously working with the Arduino system, being able to use this familiar environment would be great. And the good news is we can Thanks to a lot of hard work by some people the Arduino IDE can talk to and program these boards.
A video is available for this article (but apologies for sound, I seemed to have picked up some mains hum on the mike)
Below is a picture of the ESP8266 varient I will be using from LoLin. It’s a ESP-12E version. As there seem to be many variations of board using the 8266 I cannot guarantee that this guide will work for your particular variation.


Why use an ESP8266 variant?
Good question, for a lot of projects you wont need its power at all and a Arduino will be fine. However for various projects these boards are essential. The fundamental advantages for this version are
- Much more program memory (various by board but 1 to 4meg is typical)
- More variable memory (around 80K)
- Built in Wifi
- Much faster 40-80Mhz (switchable) compared to the Arduino’s 16Mhz
Disadvantages
Doesn’t fit a standard breadboard, the development boards (as seen above) can be huge and you won’t fit them on a single width board. You will need to link two together usually or use a larger width bread board. Obviously on strip-board or PCB fabrication this is not as important.
Development Boards
These chips run on 3.3V but Dev. boards will have a regulator on board so you can connect it to your regular USB 5V supplies easily. Although it shouldn’t be easy to do never intercept any of the 5V supply on the board and connect to any pin-out of your board. The board will have 3.3V outputs for you to use for add-ons.
Updating the Arduino IDE
We need to add this board as an option on our IDE. However by default the Arduino IDE does not know where to get the drivers from. But we can tell it. On the Arduino IDE go to File->Preferences
You will see towards the bottom a text field titled
“Additional Board Manager URLs”

Paste the following line into it
If you already have something in there (from adding in other boards) then you will need to click the small icon just to the left of this field to allow you to put in more options.
Once this is done click “OK”. Then go to your board manager “Tools->Some Board previously selected->Boards Manager…“. The boards manager option is at the top of this menu, just in case you can’t see it.

You will then see this window:

Type esp8266 into the search field and the drivers from the esp8266 community should appear. Select it and click install, takes about 2-3mins depending upon your internet connection. Once done close the board manager window.
Selecting the right board
There will now be a lot of new boards to choose from, and it can look quite daunting. Look at the board you have in front of you to help you choose the right one from the list. Initially I chose the “Generic 8266 Module” board but this did not work giving the following errors
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
I looked at my board and saw that it was NodeMCU V3 and that the seller had labelled it as NodeMCU V3 ESP. So I selected the “NodeMCU 1.0 (ESP 12E Module)“. This seemed the nearest match. I then tested it with a blink program and it was fine. The NodeMCU 0.9 (ESP12 Module) also appeared to work for uploading but I couldn’t get the blink program to work so I presume my board is the 12E version.
The Blink Program
The example blink program (at time of writing) used a constant “LED_BUILTIN” to denote the built in LED. However this did not work. A little research on these boards revealed that it is in fact pin 2 that is connected to the little blue LED. Changing all occurrences of LED_BUILTIN to 2 then worked great. The blink code I used is below.
