Запускаем WeMos D1 Mini Lite под Arduino

С продукцией компании WeMos в нашей стране знакомы очень хорошо. Компания сделала себе настоящее имя на своих esp8266-совместимых контроллерах. Богатый набор функций, наличие встроенного Wi-Fi, совместимость с экосистемой Arduino и категорически низкая стоимость сделали свое дело. На волне успеха WeMos выпустила свой убойный Lolin32, а попутно и самый дешевый контроллер в своей линейке — D1 Mini Lite. Как подключать к системе и программировать контроллеры WeMos под Arduino я писал тут (для D1, D1 mini) и тут (для Lolin32). А вот контроллер Mini Lite как-то обошел стороной.

wemos, eps8266, arduino, плата, вемос, контроллер, ножки, микросхема, микроUSB, MicroUSB

WeMos D1 Mini Lite

С потребительской точки зрения — D1 Mini Lite есть все тот же D1 Mini только всего с 1 мегабайтом ОЗУ на борту. Данный контроллер можно использовать точно так же, как и другие версии D1 Mini, мощности там хватит на большинство проектов энтузиастов IoT. Тем не менее, я столкнулся с тем, что несмотря на то, что контроллер распознается системой, запрограммировать нормально я его не могу. Максимум, что удавалось — залить стандартный Blink для мигания светодиодом. И ничего сложнее. Пришлось немного покопаться и выяснить почему так.

Оказывается, WeMos создал отдельную ветку фреймворка Arduino для своих контроллеров. И скачивать нужно его уже не командой git clone https://github.com/esp8266/Arduino.git esp8266, а командой git clone https://github.com/wemos/Arduino_D1.git esp8266 (подробно как устанавливать WeMos D1 в системе я писал тут). И по сути, подключение другого репозитория — единственное различие между установками.

Что делать, если в системе уже установлен репозиторий https://github.com/esp8266/Arduino.git? Я не нашел лучшего способа, как удалить руками каталог esp8266 в папке esp8266com и скачать уже ветку для D1. Возможно, что можно было бы сделать объединение репозиториев, но с ходу провернуть данную операцию не удалось. А умельцы добавляют описание контроллера Lite руками в файл boards.txt:

 d1_mini_lite.name=WEMOS D1 mini Lite

 d1_mini_lite.upload.tool=esptool
 d1_mini_lite.upload.speed=921600
 d1_mini_lite.upload.resetmethod=nodemcu
 d1_mini_lite.upload.maximum_size=434160
 d1_mini_lite.upload.maximum_data_size=81920
 d1_mini_lite.upload.wait_for_upload_port=true
 d1_mini_lite.serial.disableDTR=true
 d1_mini_lite.serial.disableRTS=true

 d1_mini_lite.build.mcu=esp8266
 d1_mini_lite.build.f_cpu=80000000L
 d1_mini_lite.build.board=ESP8266_WEMOS_D1MINI
 d1_mini_lite.build.core=esp8266
 d1_mini_lite.build.variant=d1_mini
 d1_mini_lite.build.flash_mode=dout
 d1_mini_lite.build.flash_freq=40
 d1_mini_lite.build.spiffs_pagesize=256
 d1_mini_lite.build.debug_port=
 d1_mini_lite.build.debug_level=

 d1_mini_lite.menu.CpuFrequency.80=80 MHz
 d1_mini_lite.menu.CpuFrequency.80.build.f_cpu=80000000L
 d1_mini_lite.menu.CpuFrequency.160=160 MHz
 d1_mini_lite.menu.CpuFrequency.160.build.f_cpu=160000000L

 d1_mini_lite.menu.UploadSpeed.921600=921600
 d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600
 d1_mini_lite.menu.UploadSpeed.115200=115200
 d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200
 d1_mini_lite.menu.UploadSpeed.9600=9600
 d1_mini_lite.menu.UploadSpeed.9600.upload.speed=9600
 d1_mini_lite.menu.UploadSpeed.57600=57600
 d1_mini_lite.menu.UploadSpeed.57600.upload.speed=57600
 d1_mini_lite.menu.UploadSpeed.256000.windows=256000
 d1_mini_lite.menu.UploadSpeed.256000.upload.speed=256000
 d1_mini_lite.menu.UploadSpeed.230400.linux=230400
 d1_mini_lite.menu.UploadSpeed.230400.macosx=230400
 d1_mini_lite.menu.UploadSpeed.230400.upload.speed=230400
 d1_mini_lite.menu.UploadSpeed.460800.linux=460800
 d1_mini_lite.menu.UploadSpeed.460800.macosx=460800
 d1_mini_lite.menu.UploadSpeed.460800.upload.speed=460800
 d1_mini_lite.menu.UploadSpeed.512000.windows=512000
 d1_mini_lite.menu.UploadSpeed.512000.upload.speed=512000

 d1_mini_lite.menu.FlashSize.1M512=1M (512K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M512.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld
 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_start=0x7B000
 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_blocksize=8192
 d1_mini_lite.menu.FlashSize.1M512.upload.maximum_size=499696

 d1_mini_lite.menu.FlashSize.1M256=1M (256K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M256.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld
 d1_mini_lite.menu.FlashSize.1M256.build.spiffs_start=0xBB000
 d1_mini_lite.menu.FlashSize.1M256.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M256.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M256.upload.maximum_size=761840

 d1_mini_lite.menu.FlashSize.1M192=1M (192K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M192.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld
 d1_mini_lite.menu.FlashSize.1M192.build.spiffs_start=0xCB000
 d1_mini_lite.menu.FlashSize.1M192.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M192.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M192.upload.maximum_size=827376

 d1_mini_lite.menu.FlashSize.1M160=1M (160K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M160.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld
 d1_mini_lite.menu.FlashSize.1M160.build.spiffs_start=0xD3000
 d1_mini_lite.menu.FlashSize.1M160.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M160.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M160.upload.maximum_size=860144

 d1_mini_lite.menu.FlashSize.1M144=1M (144K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M144.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld
 d1_mini_lite.menu.FlashSize.1M144.build.spiffs_start=0xD7000
 d1_mini_lite.menu.FlashSize.1M144.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M144.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M144.upload.maximum_size=876528

 d1_mini_lite.menu.FlashSize.1M128=1M (128K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M128.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld
 d1_mini_lite.menu.FlashSize.1M128.build.spiffs_start=0xDB000
 d1_mini_lite.menu.FlashSize.1M128.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M128.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M128.upload.maximum_size=892912

 d1_mini_lite.menu.FlashSize.1M64=1M (64K SPIFFS)
 d1_mini_lite.menu.FlashSize.1M64.build.flash_size=1M
 d1_mini_lite.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld
 d1_mini_lite.menu.FlashSize.1M64.build.spiffs_start=0xEB000
 d1_mini_lite.menu.FlashSize.1M64.build.spiffs_end=0xFB000
 d1_mini_lite.menu.FlashSize.1M64.build.spiffs_blocksize=4096
 d1_mini_lite.menu.FlashSize.1M64.upload.maximum_size=958448

При ручном процессе компилирования необходимо учитывать, что для D1 Mini Lite нужно указывать для esptool.py параметр --flash_mode dout.

PS. Кстати, наконец-то выяснилось, зачем нужен драйвер, при установке плат WeMos D1 в систему. Драйвер CH340G применяется для контроллеров D1, Mini, Mini Lite, а драйвер CP2104 для плат Mini Pro. Оба драйвера используются для эмуляции UART на USB-порту. При помощи этого драйвера программное обеспечение компьютера может обращаться с платами WeMos как с устройствами на последовательном (COM) порту. Хотя, похоже на то, что драйвер нужен только для старых систем, новые же подтягивают его самостоятельно.



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