Wemos D1 - WiFi ISP. Дистанционное программирование ардуино и не только …

Случилось как-то приобрести «ардуино-френдли» девайсину под названием Wemos D1. Вобщем то с ардуинами роднит ее совсем немногое: внешний форм-фактор и возможность компиляции кода в Arduino IDE. Разве этого мало? – спросит кто-нибудь, ведь например таже Arduino DUE, имеет вовсе не AVR-ядро (хоть и атмеловский камень) … Да, но Wemos D1 – это вообще сторонняя поделка, не имеющая никакого отношения к официальным ардуинам, и вообще в ее основе не «камень» (однокристальная микросхема) – а «модуль», т.е. плата под кожухом-экраном которой находится контроллер семейства ESP8266 и микросхема флэш-памяти (программ) для него. Модули такие достаточно дешевы и с разной «начинкой», широко распространены – но вот кому-то в голову пришла идея распаять такой модуль в форм-фактор Arduino UNO. Глупость?

Возможно … Долгое время эта «ардуина» лежала у меня без дела. Казалось бы весьма привлекательная штука, если просто де-факто пользоваться ее возможностями: это и весьма быстрое ядро (80MHz), и немалая память программ (больше мегабайта), и около 80килобайт свободного ОЗУ, и самое главное – встроенный WiFi интерфейс! Да, но при этом у данного модуля (как и у контроллера ESP8266) до безобразия мало портов GPIO (ног, по-русски говоря), а аналоговый вход вообще один. В сравнении с таким аскетизмом Arduino UNO кажется чуть ли не Мегой! И какую периферию подключишь к такой ардуине? Вобщем, мягко говоря, действительно странная идея оформить ESP8266 в форм-фактор ардуино – ведь если его рассматривать как WiFi-адаптер с UART-интерфейсом, то все встает на свои места и сточки зрения размера, и функционала, и цены … Но раз уж есть у меня в коллекции такая диковинная «ардуина» - то колдовал с ней.

А между тем (и этим) нашлось весьма неожиданное, интересное и возможно даже полезное применения «ардуине» Wemos D1 (хотя в данной роли может выступить и отдельный модуль ESP8266) – об этом ниже.

ESP8266 в качестве WiFi-программатора.

Вкратце опишу последовательность действий для получения результата (кто будет делать – то знает зачем).

  1. В Arduino IDE добавляем репозиторий: https://github.com/esp8266/Arduino/releases/download/2.4.2/package_esp8266com_index.json;
  2. В разделе «менеджера плат» ищем и устанавливаем пакет поддержки ESP8266;
  3. Из примеров к пакету открываем счетч Arduino_Wifi_AVRISP (или качаем отдельно) – тут нужно указать имя и пароль своей точки доступа, а также пин который будет генерировать RESET для целевого контроллера (в моем случае D10 – указывать букву D как показывает практика нужно!), остальные сигналы – без вариантов (используется аппаратный SPI привязанный к определенным ногам);
  4. Компилируем, прошиваем (используя настройки, см. скриншот):
  5. Через отладочную консоль Arduino IDE можно убедиться в успешном подключении к точке доступа (если процесс не идет, заресетить Wemos D1);
  6. Подключаем целевой контроллер. Напомню распиновку (пин в коннекторе ISP -> контакт ардуино-интерфейса):
    1 -> 12
    2 -> VCC
    3 -> 13
    4 -> 11
    5 -> RESET (10)
    6 -> GND
  7. Не любая версия avrdude подойдет, т.к. требуется поддержка соединения с программатором через TCP-сокет. Можно попробовать использовать avrdude из комплекта Arduino IDE. Или скачать заведомо проверенную и подходящую. Формат команды представлен в отладочной консоли, напомню на всякий случай пример для полного дампа контроллера другой Arduino UNO: avrdude -c avrisp -p m328p -P net:{ip-address} -Uflash:r:dump.hex:i

Скорость (время) чтения/заливки полного дампа контроллера Arduino UNO таким программатором порядка 10сек., что вполне достойно.

MiGeRA (июнь 2020)

Заглавная » Радиоэлектроника » Arduino - Высокоуровневая платформа устройств на микроконтроллерах » Wemos D1 - WiFi ISP беспроводной программатор