Esp32: знакомимся, пишем и запускаем первую прошивку

Введение

Успех ESP8266 от Espressif Systems неоспорим. Это мощный микроконтроллер обладает встроенным Wi-Fi модулем и легко адаптируется к множеству применений в быстро растущей отрасли IoT (Internet of Things, интернет вещей). Одной из немногих трудностей использования этой микросхемы стало обновление прошивки в тысячах и тысячах отладочных модулей, которые проникли на рынок. Для предыдущей статьи были выявлены некоторые исправления и улучшения, и представление этой информации является целью данной статьи.

В частности, будут рассмотрены следующие улучшения:

  • лучшая схема прошивки;
  • более простая в использовании программа терминала;
  • обновленный инструмент прошивки Flash Download Tool и обновленная прошивка ESP8266 SDK v2.0.0.

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

Данная статья является продолжением этой статьи, и, возможно, вы захотите ознакомиться с ней для получения какой-либо полезной справочной информации.

Step 1: Wire Connections

The wire connections with the Arduino UNO and ESP-01 module can be made easily using jumper cables and a breadboard. The connections between the Arduino development board and the ESP module are described in the table. The RX and TX connections are not reversed in this case, since the communication is not happening between the Arduino and ESP module but between the ESP and the computer. So, in this case, the Arduino UNO board is used as a serial bridge via its on-board USB to serial converter.

The RX pins connection between the Arduino board and the ESP module should be made through a voltage divider, since the ESP-01 operates on 3.3 V logic level and receiving 5 V logic level from the Arduino UNO could damage the ESP module. You can build a simple 3.3 V voltage divider using only 2 resistors as shown in the figure. Optionally, you could use a logic level converter.

Caution: For my setup, i just wired the RX pins directly (not advisable!) and everything worked, but if you decide to forego the logic level conversion, proceed at your own risk!

To establish a common Ground connection, the Arduino UNO Ground pin is connected to the ESP module Ground pin.

The Arduino UNO is used to provide 3.3 V power directly to the ESP module’s VCC pin. Connect the 3.3 V pin to the breadboard using a jumper wire, since the 3.3 V will be used not only for the ESP’s VCC pin but also the ESP’s CH_PD pin to enable the ESP chip.

The RESET pin on the Arduino UNO is connected to Ground to bypass any code uploaded via the Arduino so that the code is instead sent from the computer to the ESP-01.

The table figure shows the full set of connections for firmware flashing but at this stage, do not connect the ESP’s Reset and GPIO_0 pins since we will only be reading the firmware information in the next step.

Запись прошивки NodeMCU с использованием Windows-ПК

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

Очень просто. Если вы уже настроили последовательную коммуникацию между ESP8266 и ПК, то вам осталось проделать следующее:

  • Откройте флэшер на ПК;
  • Перейдите на вкладку Advanced (см. скриншот ниже);
  • Выставьте скорость передачи данных на 9600 бод;

Примечание: Некоторые ESP8266-модули по умолчанию коммуницируют на скорости 115200 бод. Если вы попытались записать прошивку, но ничего не произошло, попробуйте поменять скорость передачи данных на 115200 бод. Интерфейс вкладки Advanced должен выглядеть примерно так:

Затем откройте вкладку Config и нажмите на иконку с изображением шестеренки, чтобы выбрать двоичный файл прошивки NodeMCU.

Далее вам нужно будет выбрать двоичный файл прошивки NodeMCU, который вы скачали выше в разделе «Загружаем двоичные файлы прошивки NodeMCU».

В результате вкладка Config должна будет выглядеть как-то так:

Затем перейдите на вкладку Operation и проделайте следующее:

  1. Выберите COM-порт, к которому подключен FTDI-программатор (или ESP-12E);
  2. Нажмите на кнопку Flash(F);

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

Во время прошивки у ESP8266 будет мигать синий светодиод. Если он не мигает, а флэшер завис, проделайте следующее:

  1. Проверьте подключения;
  2. Отключите FTDI-программатор (или ESP-12E) от ПК и снова подключите;
  3. Перезапустите флэшер NodeMCU;
  4. Проверьте настройки на вкладке Advanced флэшера;
  5. Попробуйте другую скорость передачи данных (9600 или 115200 бод);
  6. Снова попробуйте записать прошивку;

Когда прошивка будет выполнена, отключите ESP8266 от питания, а контакт GPIO0 – от GND.

Собираем всё вместе

На приведенной ниже схеме показаны соединения, необходимые для ESP-01, а на фотографиях показан завершенный макет на беспаечной макетной плате. Цвета проводов на схеме соответствуют цветам проводов на фотографиях.

Соберите макет, как показано на рисунке, но не подключайте кабель USB-TTL конвертера к компьютеру, пока не установите перемычку на плате конвертера в положение 3,3В, и дважды перепроверьте правильность всех соединений. Использование 5В для питания ESP-01 может вывести модуль из строя, после чего тот не будет подлежать ремонту.

Схема подключения модуля ESP-01 к компьютеруМакет подключения модуля ESP-01 к компьютеру (вид сверху)Макет подключения модуля ESP-01 к компьютеру (вид спереди)Макет подключения модуля ESP-01 к компьютеру (вид сзади)

Для сборки макета вам может понадобиться дополнительная информация:

  • USB-TTL конвертер, показанный на фотографиях, использует UART микросхему FTDI232 и хорошо работает с операционными системами Windows, Mac и Linux. Он также предоставляет напряжение 3,3В для питания ESP-01. Убедитесь, что перемычка на печатной плате преобразователя установлена в положение 3,3В; что обеспечит как напряжение питания 3,3В, так и правильное напряжение на линии TxD. Использование более высокого напряжения может повредить ESP-01.
  • Независимо от того, какой USB-TTL конвертер вы решите использовать, он должен быть проверен перед использованием с ESP-01. Драйвера устройств на FTDI можно найти на сайте FTDI.
  • Величина тока, необходимого для ESP-01 во время работы Wi-Fi, варьируется от 250 мА до 750 мА. Ток, поставляемый USB-TTL преобразователем, должен быть достаточным для программирования ESP-01, но может оказаться недостаточным для длительного использования. Лучшим выбором является стабилизированный источник постоянного напряжения 3,3В, рассчитанный на ток 1 А и выше.
  • Выводы DTR и CTS USB-TTL конвертера остаются неподключенными.
  • Два коммутатора на схеме – это нормально разомкнутые однополюсные кнопки.
  • Одним из расхождений в доступных источниках информации об ESP-01 является то, должен ли CH_PD быть подключен к +3,3В напрямую или через подтягивающий резистор 10 кОм. Автор протестировал оба способа, и оба они работают. После того, как вы собрали и проверили схему, как показано здесь (с CH_PD, подключенным к +3,3В напрямую), попробуйте использовать подключение через резистор 10 кОм. Если схема работает с подтягивающим резистором 10 кОм, то оставьте его в схеме.

Как видите на приведенных выше фотографиях, использование свободных проводов от USB-TTL конвертера не оптимально. Лучшим вариантом является замена шести загнутых выводов разъема конвертера на шесть прямых выводов на нижней части печатной платы. Эта модификация позволит устанавливать преобразователь USB-TTL непосредственно в беспаечную макетную плату, что приведет к значительно более аккуратной и менее хрупкой сборке макета, как показано на фотографии ниже.

Альтернативная сборка макета подключения ESP-01 к компьютеру

Загрузки для ESP8266

Вся необходимая документация и инструменты для прошивки программного обеспечения чипов ESP8266 доступны в интернете, и большая их часть находится на сайте Espressif. Для удобства читателей RadioProg большая часть из них также доступна здесь. Обязательно необходимы Flash Download Tool и Software Development Kit. Обязательно наличие не всех документов, но все они потенциально полезны. Загрузите файлы и сохраните их у себя на компьютере, чтобы выполнить прошивку ESP8266, как описано в данной статье.

Flash Download Tool v3.4.4

Версия 3.4.4 Flash Download Tool – это последняя версия, доступная от Espressif на момент подготовки данной статьи. Этот инструмент для ESP8266 почти идентичен предыдущим версиям вплоть до 2.3, за исключением того, что в пакет добавлены два новых инструмента. Один для ESP8285, второй для ESP32, ни один из которых не используется с ESP8266. Нажмите кнопку ниже, чтобы скачать v3.4.4; вы заметите, что она содержит версии для PC и Mac. В данной статье будет использоваться версия для PC.

Software Development Kit 2.0.0

На момент написания этой статьи последняя доступная версия ESP8266 Software Development Kit – версия 2.0.0, которая была выпущена в июле 2016 года. Данная версия стабильна и будет использоваться в этой статье. Она доступна для бесплатного скачивания с Espressif, но чтобы уберечь читателей от некоторых проблем, она также доступна здесь, нажав кнопку ниже.

Документация на ESP8266

Как часто говорят: «Когда уже ничего не помогло, попробуйте почитать инструкцию.». И для этого у Espressif есть впечатляющая коллекция документов, относящихся к ESP8266. Слабо сомневаюсь в том, что ответы на многие вопросы содержатся на их страницах. Автором статьи наиболее часто используются три документа: ESP8266 Quick Start Guide (version 1.3), ESP8266 SDK Getting Started Guide (version 2.7) и ESP AT Instruction Set (version 2.0.0). Три этих документа с несколькими другими включены в архив, доступный для скачивания по кнопке ниже

Обратите внимание, что дополнительные документы и более современные версии предоставленных документов могут быть доступны на сайте Espressif

Работа с устройством

Вставьте microSD карту памяти (макс. 32 ГБ) в установленный на монтажной плате адаптер и подключите все устройство к любому USB-совместимому порту (или источнику питания 5 В). Мы подали питание на устройство. Следует удостовериться, что выбранный USB порт способен обеспечить выходной ток 1 А, – модуль ESP-12E потребляет большой ток при передаче файлов.

Как только устройство получит питание, будет создана беспроводная Wi-Fi точка доступа с именем «SD Reader». Подключитесь к этой точке доступа, используя пароль, который указан в исходном коде (скетче). Затем, в зависимости от того, какое устройство вы используете для подключения к точке доступа, откройте соотвествующее приложение: если вы подключаетесь с ПК, можно использовать ПО FileZilla или WinSCP, если вы подключаетесь с Android-устройства, то можно использовать приложение AndFTP.

В приложении настройте учетные данные. Например, для AndFTP потребуется ввести имя пользователя и пароль (по умолчанию в исходном коде имя пользователя и пароль «esp8266») и адрес хоста – 192.168.12.7. После настройки подключитесь к FTP серверу; как только подключение будет установлено, вы сможете загружать любые файлы с SD-карты памяти, а также загружать файлы со своего телефона на SD-карту памяти (Рисунок 7).

Рисунок 7. Подключение к FTP серверу на ESP-12E с Android
-смартфона.

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

Прежде чем прийти к выводу, что в целом такого типа устройства очень удобны, давайте сделаем шаг назад.

Несмотря на то, что устройство выполняет свою функцию, оно очень медленное. Для передачи четырех файлов (каждый примерно по 100 Кбайт) потребуется около 30 секунд. Если взять файл большего размера (около 10 Мбайт), то его передача займет около 3-4 минут. Есть некоторые способы  оптимизации и увеличения скорости обмена данными до 450 Кбит/с, а в случае применения Wi-Fi модуля на ESP32 – скорость обмена данными может достигать 1 Мбит/с.

Автор называет две основные причины, по которым он не пытался оптимизировать устройство. Во-первых, хотелось наряду с FTP-сервером иметь возможность использовать интерфейс USB для обмена данными, но данный интерфейс не поддерживается в ESP8266 или ESP32. Во-вторых, низкая скорость передачи данных по FTP. По этой же причине не имеет смысла использовать ESP32 вместо ESP-12E.

Тем не менее, вероятно, одну из проблем можно решить, если использовать Wi-Fi модуль ESP32 S2, который поддерживает полноскоростной USB интерфейс.

Step 3: Flash Ai-Thinker Firmware

You can find Ai-Thinker Firmware in this three places

  • on Ai-Thinker’s website:
  • on Electrodragon’s website:

  • on my github repository:

Both zip files

AiThinker_1.5.4_AT_Firmware_DIO_8M_1MByte.zip and

At_firmware_bin1.54.zip are containing the same file that we need here.

Setup the flash-tool as folows:

  • flash AiThinker_ESP8266_DIO_32M_32M_20160615_V1.5.4.bin in position

    0x00000

  • keep CrystalFreq at 26M, SPI Speed at 40MHz
  • select SPI MODE: DIO
  • select Flash Size: 32Mbit

When are you ready press start.

As in previous step keep «Flash button» pressed and quiclky press and depresse «Reset» when Connecting is displayed.

Once connected the screen will pause for a while.

The flashing is showing the progress.

Once finished it will say «Leaving… comm closed» and it will display Finished green icon.

A little test:

run Arduino Serial Monitor at 115200 bauds.

Reset the ESP-12F.

AT+GMR

will show you the version of the firmware

AT+GMR
AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
Ai-Thinker Technology Co. Ltd.
Jun 13 2016 11:29:20
OK

ESP-07

Особенности этого модуля — керамическая антенна и разъем для внешней антенны, металлический экран.

Подключение к IoT

Аппаратная часть

Работа с этим модулем, к сожалению, прошла не слишком гладко. Ни один из возможных вариантов подключения не сработал, и я, уже отчаявшись, решила удалять его описание из статьи. Но тут мне дали новый модуль и сказали попробовать еще раз — о чудо, он заработал с первого раза! В чем было дело и как сломался первый модуль, который я мучила, — неизвестно, но скорее всего он был убит нещадной статикой. Мораль этого лирического отступления такова — если у вас что-то не заработало по инструкции, написанной ниже, не вините инструкцию — сначала прозвоните и проверьте все контакты, а потом попробуйте на другом модуле.

1) Собираем схему

ESP-07

USB-Serial

VCC

VCC

CH_PD (рекомендуется через резистор)

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 (рекомендуется через резистор)

GND

GPIO 0 — сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен провод

все остальные контакты не подключены

RTS, CTS — не подключены

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

2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)

2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND

2.2) Подключаем пин GPIO 0  к GND

ESP-07

USB-Serial

VCC

VCC

CH_PD

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 

GND

GPIO 0

GND

все остальные контакты не подключены

RTS, CTS — не подключены

2.3) Подключаем модуль к питанию

2.4) Железо готово, приступаем к программной части.

Программная часть

1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.

2) Вставляем подготовленный код.

3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.

4) Компилируем и загружаем скетч на плату.

5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.

6) Переподключаем питание ESP-07 (например, вытаскиваем и вставляем обратно адаптер).

7) Видим появление данных на платформе.

В Китае

Troubleshooting

Если после прошивки ESP-8266 не получается подключиться к модулю на скорости 115200, нужно попробовать скорость 9600. В некоторых прошивках эта скорость выставлена по-умолчанию.

В некоторых случаях из-за качества соединений могут возникать проблемы с синхронизацией. Одно из решений — уменьшить скорость с 115200 до 9600:

  • AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
  • AT+UART_DEF=9600,8,1,0,0
  • AT+UART_DEF=115200,8,1,0,3

В некоторых случаях при переходе на другую скорость отклики от модуля в терминальной программе становятся очень медленными. Пока не разобрался с чем это связано. Помогает сброс к заводским настройкам командой AT+RESTORE.

Получаем VPS сервер бесплатно и навсегда

Здесь я не буду останавливаться подробно — Вы сможете без труда найти статьи как это сделать. Мне понравились VPS, которые предоставляет Oracle — они дают две виртуальных машины и у них 1Gb RAM в каждой, а для нашего проекта 512 может не хватить.

Активация аккаунта Oracle для получения бесплатной виртуальной машины требует международную карту Visa/MasterCard типа WORLD с балансом не менее 100 рублей (списанные средства будут возвращены, это необходимо для верификации карты и владельца). Проверить тип Вашей карты можно заранее на любом сервисе по BIN коду (первые 6 цифр карты), в строке Категория карты должно быть WORLD.

Могу сказать, что эта акция на бесплатные VPS действующая, я зарегистрировал такой аккаунт неделю назад (август 2020).

На этапе выбора образа для виртуалки выберите Ubuntu 20.04 или любой другой дистрибутив linux, если обоснованно считаете это необходимым.

На окончании этого шага Вы должны получить доступ по SSH к новой виртуалке и знать ее внешний (публичный) IP адрес (не пугайтесь, с настройками по умолчанию этот адрес не пингуется из интернета). Для новичков могу сообщить, что приватные (частные) IP адреса начинаются на 10. и выглядят, например, так 10.0.0.15 (есть и другие частные подсети, погуглите) Нам нужен не этот адрес, а другой, общедоступный IP-адрес.

Статьи

  • https://www.espressif.com/en/products/hardware/esp8266ex/resources — ресурсы компании-разработчика ESP-8266
  • https://bbs.espressif.com/ — официальный форум компании-разработчика ESP-8266.
  • https://www.allaboutcircuits.com/projects/flashing-the-ESP-01-firmware-to-SDK-v2.0.0-is-easier-now/ — самая свежая статья на тему.
  • https://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/ — предыдущая версия статьи того-же автора.
  • https://radioprog.ru/post/212 — статья на русском во многом перепечатка предыдущих статей.
  • https://www.electronicshub.org/update-flash-esp8266-firmware/ — свежая статья по теме.
  • https://www.esp8266.com/viewtopic.php?t=12440 — видео со ссылками.
  • https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/documents/EN/%20Partition%20Table.md — Partition table — адреса размещения бинарей.
  • https://os.mbed.com/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware — использование неофициального прошивальщика XTCOM_UTIL.
  • Прошивальщик от NodeMCU.
  • Прошивальщик от NodeMCU и пример работы с ним.

NodeMCU 0.9

Номера контактов, напечатанные на самой плате, не соответствуют номерам GPIO-контактов ESP8266. Чтобы упростить использование этой платы, были заданы следующие константы:

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = ;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t D9   = 3;
static const uint8_t D10  = 1;

То есть, если вы хотите использовать 5-ый контакт NodeMCU, используйте номер контакта D5, и он будет преобразован в 14-ый GPIO-контакт ESP8266.

ESP8266 – микроконтроллер / микросхема с модулем Wi-Fi

Новый микроконтроллер привлек внимание профессиональных разработчиков и любителей, и он может стать потенциальным лидером в интернете вещей. Микросхема под названием «ESP8266» представляет собой 32-битный RISC процессор со всеми свистелками и перделками, которые вы могли бы ожидать от полнофункционального микроконтроллера, но это еще не всё

ESP8266 также включает в себя встроенную схему Wi-Fi 802.11 b/g/n, которая готова к непосредственному подключению к антенне.

Микроконтроллер ESP8266

ESP8266 в настоящее время доступен только в 32-выводном корпусе QFN, в данном семействе присутствует только одна микросхема. Разработчик, Espressif, Шанхай, Китай, решил в полной мере использовать эффективность масштабного производства и предложить одну микросхему, которая подходит для использования в различных сборках печатных плат. В настоящее время существует более десятка печатных плат модулей ESP, которые отличаются в основном типом антенн и количеством доступных входов/выходов. Из-за QFN корпуса ESP8266, большинство любителей довольны этим решением, тем более, что рыночные цены начинаются с менее 5 долларов США за модель младшего класса, получившей название ESP-01 и изображенной ниже.

Модуль ESP-01 (вид сверху и снизу)

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

Поддержка ESP-IDF

ESP-IDF является официальным фреймворком для разработки под ESP32. Сама среда поддерживает всю линейку ESP32. Большинство примеров можно собрать под Xtensa LX6/LX7, так и под RISC-V. Переключение сводится к одной команде «idf.py set-target esp32c3», которая выставляет riscv32-esp-elf- и прочие параметры в sdkconfig. Теперь после компиляции у нас готова прошивка для нового ESP32-C3.

Предварительно надо подготовить окружение в зависимости от ОС: Windows, Linux или macOS.

Установочный скрипт скачает компиляторы и дополнительные пакеты для ESP-IDF. После этого надо импортировать окружение для начала работы:

Рекомендую для проверки собрать «hello world»:

Не все примеры собираются под ESP32-C3, но Espressif активно работает над ESP-IDF для поддержки этого чипа.

Подписка на (бесплатные) облачные сервисы

В конце нам необходимо создать бесплатные учетные записи на двух веб-сайтах облачных сервисов: Adafruit IO и IFTTT.

Adafruit IO — это облачная служба данных, которая позволяет вам настраивать потоки данных, называемые каналами, для сбора информации, поступающей от ваших проектов в области электроники. Вы можете визуализировать и использовать эти каналы в Adafruit IO или расширить его функции, связав его с IFTTT.

IFTTT — это сайт, который объединяет и предоставляет интерфейс для множества приложений и поэтому называется шлюзом API.

Перейдите на io.adafruit.com и нажмите «Войти» (Sign In), затем «Зарегистрироваться» (Sign Up), чтобы создать учетную запись. Вы должны использовать надежные, уникальные пароли. Вас могут попросить подтвердить ваш адрес электронной почты.

На IFTTT.com нажмите кнопку «Зарегистрироваться» (Sign up), чтобы создать учетную запись.

Я настоятельно рекомендую включить двухфакторную аутентификацию в вашей учетной записи IFTTT, так как вы, скорее всего, захотите связать ее с другими вашими личными учетными записями, такими как Twitter, Instagram, Fitbit и т.д.

Защитите свои учетные записи от хакеров и спам-ботов! Вам также нужно будет связать свои аккаунты Adafruit и IFTTT, что вы можете сделать через любой сайт. Пока вы на нем, установите приложение IFTTT, если у вас есть устройство iOS или Android.

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

Прошивки для esp8266 NodeMcu

В основу платформы загружена стандартная прошивка Node MCU, в которую встроен интерпретатор языка Lua. При помощи Lua-команд можно выполнять следующие действия:

  • Подключение к Wi-Fi точке доступа;
  • Работа в роли Wi-Fi точки доступа;
  • Переход в режим глубокого сна для уменьшения потребления энергии;
  • Включение или выключения светодиода на выходе GPIO16;
  • Выполнение различные операции с файлами во флэш-памяти;
  • Поиск открытой Wi-Fi сети, подключение к ней;
  • Вывод MAC адреса;
  • Управление пользовательскими таймерами.

Для программирования NodeMCU можно использовать Arduino IDE или комплекс средств разработки SDK – ESPlorer. Этот комплекс обладает рядом отличий:

  • Он может работать на множестве различных платформ;
  • Обладает поддержкой нескольких открытых файлов;
  • Позволяет подсвечивать код языка Lua;
  • Возможность умной отправки файлов;
  • Возможность поддержки нескольких видов прошивки одновременно.

Для обеспечения корректной и стабильной работы нужно обновить прошивку до последней версии. Существует несколько способов обновления – облачный сервис, Docker Image и компилирование в Linux. Каждый из этих способов обладает своими плюсами и минусами. Наиболее простым и понятным является первый способ.

Сбор прошивки в облачном сервисе

После начала сборки придет письмо на почту, сигнализирующее о начале запуска процесса. Через некоторое время придет и второе письмо – будет предложено выбрать версию float (дробные числа) или integer (целые числа).

После перехода по полученной ссылке нужно будет скачать файл bin и поместить его в Resources – Binaries. Там будет расположен файл nodemcu_integer_0.9.5_20150318.bin, который нужно удалить. В итоге содержимое папки будет выглядеть следующим образом.

Обновление прошивки Node Mcu

Для правильной и стабильной работы платы требуется перезаписать esp_init_data_default.bin. Скачать его можно на официальном сайте. Нужный файл нужно поместить снова в систему для прошивки NodeMCU Flasher по пути Resources – Binaries, предварительно удалив из него старый файл.

Затем можно подключать  NodeMCU и приступить к обновлению. Для начала нужно поменять настройки – в NodeMCU Flasher во вкладке Config нужно выбрать файл собранной прошивки вместо INTERNAL://NODEMCU.

Остальное оставить без изменений, перейти на Operations и нажать Flash. Как только окончится прошивка, нужно снова перейти на Config и в первой строке указать путь esp_init_data_default.bin. Также дополнительно указывается адрес, куда нужно переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. После этого нужно снова вернуться на Operations и нажать Flash.

После этого нужно переформатировать всю файловую систему млаты. Для этого нужно запустить ESPlorer, обязательно поставить скорость обмена 115200 и перезагрузить NodeMCU. После всех вышеописанных действий будет новая версия прошивки. Отладочная плата полностью перепрошита и готова к работе.

Deployment/production stage

During this stage, only ESP8266 chip is required in the final product.

The issue now is to figure out how to use ESP8266-12E/F (or ESP-12E/F) chip and still be able to load the code and develop the software without NodeMCU or similar board. For that, first we need to know the physical size, working, booting and flashing process of ESP-12E/F chip in detail.

ESP-12E/F module. External size of the module is 16mm x 24mm x 3mm, as shown in Fig. 2. It has 4MB SPI flash and an onboard PCB antenna. Pin pitch is 2mm.

Fig. 2: Pin details of ESP-12E module

If a general-purpose PCB, which has a pin spacing of 2.54mm, is used for building the project, a breakout board for ESP8266 chip can be used. The breakout board used in this project is shown in Fig. 3. However, if a project-specific PCB is used, the breakout board is not required. ESP8266-12x breakout board is easily available at a low cost.

ESP-12E/F chip is soldered to the breakout board at the given pads, and header pins are also soldered to the breakout board. Header pins are spaced 2.54mm apart. ESP-12E/F module can be plugged into any general-purpose PCB.

There are also three SMD resistors on the breakout board (Fig. 3). On the obverse of the board, there is space for fixing HT7333A, a low-drop 3.3V voltage regulator. Alternately, an external 3.3V regulator may be used for powering the circuit.

Fig. 3: Front and rear sides of breakout board for ESP-12E/F chip

Error Messages and Remedies

I have listed some error messages that you may encounter as well as a few tracks to resolve them. If you have other solutions, do not hesitate to share them in the comments so that I can add them.

Message  Possible causes Solutions
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
 ESP is not in Flashing Mode Choose ArduinoISP as a programmerCheck the connection of the serial link (reverse TX / RX)

Is the GPIO0 good at the GND?

Your diet too low. It must deliver at least 300mA when flashing the firmware

Add a reset resistor to the GPIO0 or connect the GND of the 3.3V power supply to the GND of the FTDI module

Unplugging / replacing the ESP8266

Disconnect / reconnect to another USB port your FTDI module

Restart the computer (if the FTDI module can not be found)

Стандартные модули ESP8266

У таких модулей нет бутстрепных резисторов, регулятора напряжения, цепи для сброса и адаптера USB-Serial. Есть развязывающие конденсаторы, но они малопригодны. Модулями, которые оснащены всеми этими функциями, пользоваться гораздо удобней и приятней.

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

  • Обеспечьте модуль достаточным питанием. Для стабильной работы ESP8266 необходимо питание с напряжением 3,3 вольт и силой тока не меньше 250 мА. Использовать питание от адаптера USB-Serial не рекомендуется – эти адаптеры, как правило, не обеспечивают достаточно питания для постоянной стабильной работы ESP8266. Предпочтительнее вариант с внешним питанием или регулятором вместе с фильтрующими конденсаторами.
  • Подключите бутстрепные резисторы к контактам GPIO0, GPIO2 и GPIO15 согласно схеме ниже.
  • Переключите ESP8266 в режим загрузчика перед загрузкой кода.

Настройка ESP8266

Итак, ESP8266 модуль к USB порту мы подключили (через USB-TTL или Arduino) теперь нужно убедится, что драйвера к вашим USB-TTL или Arduino встали корректно и в системе появился новый виртуальный последовательный порт. Вам понадобится программа — терминал последовательного порта. Можете использовать любую на ваш вкус, но она должна удовлетворять следующему требованию: каждая команда, которую вы отправляете с компьютера в последовательный порт должна завершаться символами CR+LF.

Ваш покорный слуга является автором open-source программы ESPlorer, получившей международное признание. ESPlorer позволит вам не вводить AT команды вручную и легко работать с lua скриптами под NodeMCU (об этом в другой раз) и вы вполне можете использовать ее и как обычный терминал. Обсуждение ESPlorer на нашем форуме и на esp826.com

С подключением к последовательному порту придется немного поколдовать: в связи с разнообразием прошивок для ESP8266, подключение может осуществляться на разных скоростях. Нужную скорость можно определить путем простого перебора трех вариантов: 9600, 57600 и 115200. Как осуществить перебор? Подключаетесь в терминальной программе к вашему виртуальному последовательному порту выставив следующие параметры: 9600 8N1, затем перезагружаете модуль, отключив CH_PD (chip enable) от питания (USB-TTL при этом остается подключенным к USB) и снова включаете (т.е. просто передергиваете CH_PD, почему не передергиваем питание — читаем , также можно кратковременно замкнуть RESET на землю для перезагрузки модуля) и наблюдаете данные в терминале. Во-первых, светодиоды на ESP8266 должны гореть как описано в начале статьи в разделе . Во-вторых, в терминале вы должны увидеть «мусор» из разных символов, оканчивающийся строкой «ready». Если «ready» мы не видим, то переподключаемся терминалом на другой скорости и снова перезагружаем модуль.

На одном из вариантов скорости «ready» вы все-таки увидите — поздравляем, ваш модуль готов к работе.  Если нет, то добро пожаловать к нам на форум — мы постараемся помочь, но предварительно почитайте эту тему.

Немного подробнее о «мусоре». Дело в том, что при старте прошивки, UART модуля ESP8266 переключается на скорость передачи 74 880 (вот такие забавные эти китайцы) выдает в UART отладочную информацию, затем переключает скорость порта на 115200 (ну или на 9600 или 57600 в зависимости от версии прошивки), так вот эта отладочная информация и видится нам как мусор, т.к. мы подключаемся к модулю на другой скорости. Можете подключится к ESP8266 на скорости 74 880 (ESPlorer поддерживает эту скорость) и вы эту отладочную информацию увидите, будет что-то вроде этого:

wdt reset
load 0x40100000, len 25052, room 16
tail 12
chksum 0x0b
ho 0 tail 12 room 4
load 0x3ffe8000, len 3312, room 12
tail 4
chksum 0x53
load 0x3ffe8cf0, len 6576, room 4
tail 12
chksum 0x0d
csum 0x0d

1
2
3
4
5
6
7
8
9
10
11
12

wdt reset

load0x40100000,len25052,room16

tail12

chksum0x0b

hotail12room4

load0x3ffe8000,len3312,room12

tail4

chksum0x53

load0x3ffe8cf0,len6576,room4

tail12

chksum0x0d

csum0x0d

НО! не увидите «ready» и не сможете управлять модулем, пока не переподключитесь на ту скорость, на которой работает прошивка.