В этой статье мы рассмотрим как программировать "сырой" (Raw) чип ESP8266 (ESP8266-12E/F) с помощью Arduino IDE, а также сопутствующую схему, которая позволяет данному чипу функционировать в приложениях реального времени. В конце статьи мы увидим схему и печатную плату программатора для модуля ESP8266, которая очень маленькая и компактная для проектов реального времени. Ранее на нашем сайте мы уже рассматривали аналогичный проект программирования модуля ESP8266 с помощью Arduino IDE, однако в ней рассматривался чип ESP8266-01 и данная статья более свежая и, возможно, описанный в ней подход вам больше понравится чем описанный в указанной статье.
NodeMCU ESP8266 хорошо известна как среди любителей электроники, так и среди специалистов по Интернету вещей (IoT). NodeMCU — это первая плата разработки, которая приходит на ум, когда нужно создать прототип чего-то, что включает в себя WiFi. Использование платы NodeMCU в процессе создания прототипа — лучшее решение. Однако, когда этапы создания прототипа и тестирования завершены, использование всей платы NodeMCU в печатной плате проекта — не самая разумная идея. Здесь требуется исходный чип ESP8266-12E/F, а не вся плата разработки, которая предназначена для новичков, чтобы легко работать с ней.
Использование исходного чипа ESP8266-12E/F снижает стоимость проекта и увеличивает надежность. Мы можем легко запрограммировать этот "сырой" чип с помощью внешнего программатора, подключив несколько проводов к пользовательской печатной плате. Но в данной статье давайте научимся программировать чип ESP8266 с помощью Arduino IDE.
Необходимые компоненты
- Модуль ESP8266 (купить на AliExpress).
- Плата FTDI (3.3V) (купить на AliExpress).
- Резисторы 10K / 12K Ом - 5 шт.
- Резистор 22 кОм - 2 шт.
- Резистор 330 Ом.
- Конденсатор 470 пФ.
- Конденсатор 0,1 мкФ.
- NPN-транзистор BC547 - 2 шт.
- Кнопки - 2 шт. (купить на AliExpress).
- Одножильный соединительный провод.
- Провода-перемычки.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Традиционный способ использования NodeMCU
На этапе прототипирования проекта мы разрабатываем прошивку либо в Arduino IDE, либо в Platform IO и загружаем прошивку, подключив разъем USB к NodeMCU и выбрав соответствующий порт и плату в Arduino IDE или Platform IO (в Platform IO порт определяется автоматически, вы также можете выбрать порт, настроив параметры загрузки в platfomio.ini для получения дополнительных параметров загрузки).
Прошивка загружается на чип с помощью моста USB-UART, встроенного в NodeMCU. Перед прошивкой чип должен быть сброшен в режим прошивки, а встроенный мост USB-UART преобразует данные USB в формат UART и взаимодействует с устройством через контакты RXD0 и TXD0. Все это автоматически обрабатывается поддерживающей схемой, встроенной в NodeMCU.
В случае сбоя автоматической загрузки предоставляются дополнительные контакты Flash и Reset для перезапуска NodeMCU в режиме Flash.
Программирование чипа ESP8266
Давайте рассмотрим физические характеристики и спецификации исходного чипа ESP8266. Это необходимый шаг перед изучением того, как программировать чип ESP8266.
Модуль ESP-12E имеет 22 контакта, их назначение представлено в следующей таблице.
Номер контакта | Наименование контакта | Назначение |
1 | RST | Контакт сброса модуля |
2 | ADC | Аналоговый входной контакт для 10-битного АЦП (0 В - 1 В) |
3 | EN | Контакт включения модуля (активный ВЫСОКИЙ) |
4,5,6,7,11,12, 16, 17, 18, 19, 20 | GPIO16, GPIO14, GPIO12, GPIO13, GPIO9, GPIO10, GPIO15, GPIO2, GPIO0, GPIO4, GPIO5 | Входные и выходные контакты общего назначения |
8 | VDD | Вход питания +3,3 В |
9 | CS0 | Выбор чипа (Chip select) в интерфейсе SPI |
10 | MISO | MISO-контакт интерфейса SPI |
13 | MOSI | MOSI-контакт интерфейса SPI |
14 | SCLK | Тактовый вывод интерфейса SPI |
15 | GND | Земля (общий провод) |
21 | RXD0 | Приемный контакт UART0 |
22 | TXD0 | Передающий контакт UART0 |
Чтобы запрограммировать "сырой" чип, нам необходимо иметь доступ к его контактам и хорошо понимать работу чипа, процессы загрузки и прошивки.
Физические размеры модуля составляют 16 мм × 24 мм × 3 мм, а шаг выводов — 2 мм. Но шаг выводов макетной платы составляет 2,54 мм. Чтобы сделать этот чип удобным для макетной платы, я припаял одножильные соединительные провода к чипу.
Различные режимы загрузки модуля
Параметры загрузки | Enable pin (EN) | GPIO0 | GPIO2 | GPIO15 |
---|---|---|---|---|
Режим программирования | High | Low | High | Low |
Flash start-up (нормальный режим) | High | High | High | Low |
Загрузка с SD-карты | High | Low | Low | High |
Мы можем перезагрузить ESP8266-12E/F в нескольких режимах загрузки, потянув вверх или вниз определенные GPIO. Чтобы загрузить прошивку, мы должны сначала загрузить чип в режиме программирования. Чип должен загружаться в режиме запуска флэш-памяти во время обычных режимов. В результате нас интересуют только первые два режима загрузки.
В обоих рабочих режимах выводы enable(EN) и GPIO2 имеют высокий уровень, а вывод GPIO15 — низкий, как показано в таблице выше. Поэтому подтяните вверх выводы enable (EN), GPIO2 и подтяните вниз вывод GPIO15 с помощью резисторов 10K/12K Ом. Вывод сброса и вывод GPIO0 обычно имеют высокий уровень и подключаются к земле с помощью кнопок.
Процесс перепрошивки
Давайте посмотрим как можно запрограммировать чип ESP8266. Сначала включите схему, нажав кнопку GPIO0 и отпустите эту кнопку после загрузки чипа. Теперь чип загружен в режиме программирования.
Теперь возьмите любой мост USB-UART/FTDI плату (рекомендуется FT232RL) и подключите контакты RX и TX FT232RL к контактам TXD0 и RXD0 микросхемы, также убедитесь, что перемычка на модуле FT232RL установлена в положение 3,3 В.
Подключите FT232RL к компьютеру и загрузите прошивку. Ниже приведены параметры загрузки, которые необходимо соблюдать при загрузке прошивки с помощью Arduino IDE. Выберите тип платы как generic esp8266 module, скорость загрузки как 115200 и выберите правильный порт. С platform IO выбор опции платы как Espressif ESP8266 ESPf-12E будет работать.
После завершения прошивки перезагрузите чип, нажав кнопку сброса, чтобы загрузить его в обычном режиме.
Этот процесс требует ручного вмешательства, например нажатия кнопки сброса. Для этого ручного вмешательства и плавной прошивки микросхемы, как мы делаем с NodeMCU, нам нужно использовать сигналы DTR (Data Terminal Ready) и RTS (Ready to Send) моста USB-UART FT232RL.
Вывод RTS модуля FT232RL расположен в другом месте, и для доступа к нему необходимо припаять штекерный разъем.
Схема для автоматической прошивки ESP8266-12E/F
Схема автоматической прошивки (схема программатора) ESP8266 почти аналогична схеме ручной прошивки с некоторой дополнительной транзисторной схемой, которая работает с контактами DTR и RTS FT232RL.
Сигнал RTS используется для сброса чипа, а сигнал DTR используется для удержания чипа в режиме флэш-памяти. Транзисторы (BC547) Q1 и Q2 используются для удержания чипа в режиме флэш-памяти при обнаружении команды загрузки, и новый скетч может быть загружен в него без проблем.
Эти транзисторы также гарантируют, что чип не сбросится при низком уровне сигналов DTR и RTS, а также запускают чип в нормальном режиме (запуск Flash) при отсутствии команды загрузки.
На момент написания этой статьи у меня был транзистор BC547 NPN и конденсатор 470 пФ в корпусе SMD. В результате я прикрепил эти компоненты к штыревым разъемам, чтобы сделать их совместимыми с макетной платой.
Выполните подключение, как показано на схеме, и подключите выводы RTS, DTR, RX, TX, VCC и GND FT232RL к соответствующим выводам чипа. Также убедитесь, что перемычка на модуле FT232RL установлена на 3,3 В.
После выполнения подключений подключите модуль FT232RL к компьютеру и следуйте параметрам загрузки, как обсуждалось ранее. Теперь вы можете обнаружить, что прошивка прошивается плавно, без ручного вмешательства. Мы также можем использовать две кнопки (сброс и прошивка) для загрузки прошивки, когда автозагрузка/автопрошивка прошивки не удалась.
Печатная плата для схемы автоматической прошивки ESP8266-12E/F
Если вам нужен компактный программатор ESP8266-12E/F с питанием и доступом к нескольким GPIO чипа, то вот печатная плата для вас. Эта схема программатора ESP8266 разработана в EasyEDA. На следующем рисунке представлена принципиальная схема схемы.
Файл Gerber для изготовления данной печатной платы вы можете скачать по следующей ссылке.
Собранные на данной печатной плате компоненты проекта показаны на следующем рисунке.
Вы также можете добавить микросхему для зарядки аккумулятора и некоторые активно-пассивные компоненты, чтобы создать плату ESP8266 с питанием от аккумулятора для приложений Интернета вещей.
17 просмотров