Наш магазин на eBay Наш магазин на AliExpress Наш канал в telegram

Как и чем прошить устройство на контроллере ESP8266

Огромное число устройств домашней автоматизации сделано на различных модификациях плат с контроллерами ESP8266. Это легко объяснимо, учитывая, что всего за 2-3 доллара вы получаете достаточно маленькое (всего 24 х 16 мм) устройство, имеющее на борту WiFi, некоторое количество GPIO, интерфейсы UART и SPI, а также 10-битный АЦП.

SDK для контроллера выложен в открытый доступ и таким образом вы можете писать под этот контроллер свои собственные прошивки. Не хотите писать свои — ставьте чужие, их тоже в интернете чуть больше, чем очень много по различным сайтам и форумам. Из того, что я видел, самые приличные прошивки (как и самое живое обсуждение) в русскоязычном сегменте сети можно найти на сайте esp8266.ru.

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

Общая технология загрузки прошивки в ESP8266 такая: esp-шка запускается в режиме загрузки программы с порта UART0, далее специальная компьютерная программа заливает в неё через порт UART0 новую прошивку и записывает её в память. Всё, после этого контроллер можно перезапускать в нормальном режиме (загрузка с внутренней флешки).

Для того, чтобы esp-шка запустилась в режиме загрузки с UART0, у неё при старте пины GPIO15 и GPIO0 должны быть притянуты к «земле», а пин GPIO2 — к «питанию». Чтобы запустить esp-шку в нормальном режиме (загрузка с внутренней флешки), нужно чтобы при старте пин GPIO15 был притянут к «земле», а пины GPIO0 и GPIO2 — к «питанию». Как видите, разница только в состоянии пина GPIO0, пин GPIO15 в обоих случаях должен быть притянут к «земле», а пин GPIO2 — к питанию.

Итак, для того, чтобы залить прошивку, нам понадобятся следующие пины: RXD, TXD — передача данных, RST — рестарт модуля, GPIO15, GPIO0, GPIO2 — выбор режима загрузки после рестарта. Причём состоянием пинов GPIO15 и GPIO2 управлять не нужно, оно должно быть всегда одинаковым, то есть GPIO15 можно просто притянуть к «земле» через резистор, а GPIO2 оставить неподключенным (он при старте через внутренний резистор и так притянут к «питанию»).

В сети есть программа FLASH_DOWNLOAD_TOOLS_V3.4.2_Win (не знаю кто её автор, он не указан), которая использует для перепрошивки модулей на основе ESP8266 COM-порт компьютера, при этом для управления сигналом RST используется линия RTS, а для управления пином GPIO0 — линия DTR.

Интерфейс программы интуитивно понятен, — просто выбираем нужный COM-порт, а также области памяти, которые нужно перепрошить, и нажимаем кнопку START. По окончании процесса загрузки, если всё пройдёт успешно, вы увидите над кнопкой START надпись FINISH. Скорость — 115200. Ссылка на скачивание программы будет в конце статьи.

В соответствии со всем вышеизложенным, у меня получилась вот такая схема:

схема для перепрошивки модулей на основе esp8266

Как видите, вместо аппаратного COM-порта я использовал преобразователь USB-to-UART (RH-0003) на базе чипа cp2102. Это во-первых, решило проблему с преобразованием уровней (у COM-порта уровни -12/+12 вольт, а esp-шке нужны уровни 0/3.3В), и во-вторых, позволило использовать для подключения USB-порт.

Далее я соорудил себе небольшую макетку, на которую припаял модуль с ESP8266 и вывел в два ряда штырьков нужные мне сигналы, а также небольшой кабелёк для соединения преобразователя RH-0003 с этой макеткой. Вот и всё. Ниже вы можете видеть фотки получившейся конструкции. На первом фото макетка с ESP8266 показана со стороны разъёма для программирования, а на втором фото — с обратной стороны (видно припаянный модуль ESP-12F).

фото инструментов для прошивания контроллера ESP8266: плата с модулем на esp8266, кабель и USB-to-UART преобразователь
фото инструментов для перепрошивки контроллера ESP8266: плата с модулем на esp8266, кабель и USB-to-UART преобразователь

Скачать программу FLASH_DOWNLOAD_TOOLS_V3.4.2_Win

Добавить комментарий