- PVSM.RU - https://www.pvsm.ru -
Небольшая заметка о самодельном адаптере на базе ESP8266, позволяющем загрузить прошивку в микроконтроллер с установленным UART загрузчиком или Arduino.
Последнее время при проектировании устройств на микроконтроллерах AVR, для программирования вывожу только один 6-пиновый разъем (не ISP) для FTDI адаптера. Он позволяет и загрузить прошивку, и отладиться по UART после прошивки. Именно так сделано в Arduino, идея позаимствована оттуда. Это удобно.
Тем временем, не раз приходилось сталкиваться с ситуацией, когда нужно загрузить прошивку в микроконтроллер, но он уже в корпусе который не помещается на рабочем месте/лежит на антресоли/в другом городе/замурован в стену. В таких случаях адаптер FTDI не применим из-за короткого USB шнурка и приходилось изворачиваться с ноутбуком. Задумался о беспроводном программаторе. Тут как нельзя лучше подойдет ESP8266, ведь он обладает UART и в любом исполнении имеет хотя бы один GPIO, пригодный для перезагрузки контроллера и входа в режим программирования.
В сети был найден следующий материал по теме:
Характеристики адаптера следующие:
Работоспособность проверялась на китайской Arduino pro mini со стоковым загрузчиком и на ATmega8 c установленным optiboot [4] и скоростях 9600, 19200 и 57600. На скорости по умолчанию (115200) прошиваться контроллер отказался.
В случае применения в схемах с питанием 3.3В достаточно просто присоединить модуль в исполнение esp-01 к Arduino проводками (VCC-->VCC, GND--->GND, RX--->TX, TX--->RX, GPIO2--->DTR). Плата сделана для удобства подключения и возможности работы в схемах с напряжением питания микроконтроллера 5В.
Применяется модули типа esp-02, но подойдет и распространенный esp-01, только плату перетрассировать нужно будет слегка. Джамперами выбирается режим работы 3.3/5В. U1 — стабилизатор преобразующий 5В в 3.3В в случае необходимости. R2 и R3 — делитель, тоже для 5В режима. После сборки нужно установить джампер RPOG и при помощи того же FTDI или любого другого UART адаптера загрузить ESP8266-transparent-bridge [3].
Шаблон односторонней печатной платы (SVG вектор):
Если нужен негатив достаточно открыть текстовым редактором и заменить #000000 на #FFFFFF и наоборот.
В формате KiCad на github [5]
Обычно, чтобы загрузить прошивку следует перезагрузить микроконтроллер. FTDI адаптер делает это импульсом на ноге DTR (первая в разъеме), она через емкость соединена с ногой RESET микроконтроллера. В нашем случае на место DTR выведена GPIO2. Для перезагрузки микроконтроллера используются AT команды "+++AT GPIO2 1" и затем "+++AT GPIO2 0", которые меняют уровень на GPIO2 ESP8266. Одного перепада достаточно, чтобы перезагрузить контроллер. Сразу после перезагрузки некоторое время работает загрузчик и ждет образ прошивки по UART, его можно передать с помощью утилиты avrdude. Ниже приведен скрипт выполнение которого прошивает контроллер:
#!/bin/bash
HEXILE="firmware.hex"
ADDRESS=x.x.x.x
BAUD=57600
echo "+++AT BAUD $BAUD" | nc $(ADDRESS) 23
echo "+++AT GPIO2 1" | nc $(ADDRESS) 23
echo "+++AT GPIO2 0" | nc $(ADDRESS) 23
avrdude -P net:$(ADDRESS):23 -F -U flash:w:$(HEXILE):i
Данные команды можно включить в Makefile.
Беспроводную прошивку можно провернуть и в Windows, установив утилиты nc и avrdude.
Автор: sixhundredsixtyfive
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/117684
Ссылки в тексте:
[1] Programming an Arduino via WiFi with the ESP8266: https://garyservin.wordpress.com/2014/12/16/programming-an-arduino-via-wifi-with-the-esp8266/
[2] Programando un Arduino remotamente con el módulo ESP8266: https://www.sistemasorp.es/2014/11/11/programando-un-arduino-remotamente-con-el-modulo-esp8266/
[3] ESP8266-transparent-bridge: https://github.com/beckdac/ESP8266-transparent-bridge
[4] optiboot: https://github.com/Optiboot/optiboot
[5] В формате KiCad на github: https://github.com/dima-ch/esp-ftdi
[6] Источник: https://geektimes.ru/post/274092/
Нажмите здесь для печати.