Заливка прошивки на NodeMCU в macOS

17 апр. 2019 г.

В прошлой статье я рассказал каким образом подготовить все необходимое, для того что бы компилировать свои прошивки. Сегодня мы поговорим о том, как залить прошивку на NodeMCU. Существует целых 3 способа :)

В первую очередь у вас должен быть установлен Python. Проще всего его установить с помощью HomeBrew

brew install python3

После обратите внимание на чип, который использует NodeMCU, они могут быть как CH340 так и СP2102. В зависимости от этого вы должны найти и скачать драйвер. Вот ссылка на инсталяшку для CH34X. Без этого драйвера ваш Mac попросту не увидит подключенный через USB-порт модуль.

Команды ниже распечатают список COM-портов с заданным шаблоном.

ls /dev/tty.*
ls /dev/cu.*

Если все установлено правильно и девайс подключен, то вы увидите COM-порт /dev/cu.SLAB_USBtoUART


1. Первый способ воспользоваться NodeMCU PyFlasher. По сути это просто GUI над основным esptool.py. Удобен тем, что можно быстро натыкать нужные параметры, указать COM-порт и путь к прошивке. Основные фичи на скриншоте :)
Нет возможности залить несколько .bin файлов по разным адресам.

2. Следующий вариант это использовать встроенные инструкции Makefile'ов из скаченных примеров Homekit. По сути, все что вам нужно это перейти в консоли в папку с прошивкой и выполнить следующие команды:

cd /Documents/Projects/ESP/MyESPProject
make test

То есть, команда make выполнит компиляцию исходников (прошивки), сбилдит ее в .bin файлы, и после зальет на подключенную к Mac'у NodeMCU. Обратите внимание, что потенциально здесь могут возникнуть проблемы. Так как в Makefile нужно указать ваш COM-порт, к которому подключена NodeMCU. Ниже пример одного из моих Makefile'ов. В 12 строчке как раз и объявляется переменная ESPPORT, которая указывает на нужный COM-порт.

PROGRAM = HomeBulb

EXTRA_COMPONENTS = \
extras/http-parser \
$(abspath ../components/wolfssl) \
$(abspath ../components/cJSON) \
$(abspath ../components/homekit)

FLASH_SIZE ?= 32

EXTRA_CFLAGS += -I../.. -DHOMEKIT_SHORT_APPLE_UUIDS
ESPPORT=/dev/cu.SLAB_USBtoUART

include $(SDK_PATH)/common.mk

monitor:
$(FILTEROUTPUT) --port /dev/cu.SLAB_USBtoUART --baud 115200 --elf $(PROGRAM_OUT)

3. Последний вариант это использовать инструменты esptool.py напрямую. Для начала вы можете ознакомиться со всеми доступными функциями и параметрами с помощью команды help. Там вы можете узнать какие параметры являются опциональными (необязательными).

esptool.py --help
esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 {путь к .bin файлу прошивки} —erase-all

#Команда с полной путем к файлу
esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 /Users/andrewmedvedev/Documents/Projects/ESP/MotionSensor/firmware/MotionSensor.bin —erase-all
Что здесь происходит вообще? 
-chip esp8266 указывает тип девайса, который шьется
-port /dev/cu.SLAB_USBtoUART COM-порт, к которому подключен ESP8266
-baud 115200 - скорость записи в битах в секунду
-flash_mode qio - указывает на способ записи на девайс
0x00000 {путь к прошивке} - указывает адрес, с которого будет развернута наша прошивка на модуле и путь к ней на диске
-erase-all - выполняет изначальное форматирование данных, которые до этого находили в памяти.
*Если я где-то ошибся, отпишите, пожалуйста, в комментарии*

Еще один вариант прошивки, если у вас несколько файлов. Вы просто указываете адреса в памяти, на которых должны развернуться нужные прошивки.
Кстати, в примере выше путь к прошивке является абсолютным. По сути вы можете перейти в нужный каталог и не указывать полный путь.
cd /Users/andrewmedvedev/Documents/Projects/ESP/MotionSensor/firmware
esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 MotionSensor.bin 0x10000 AnotherBin.bin —erase-all

4. БОНУС – сборка с помощью Xcode

Для того что бы мы могли билдить прошивки с помощью Xcode нам нужно создать новый проект, с типом External Build System. Указать название проекта и Build Tool. По умолчанию он будет /usr/bin/make. Так и оставляем.

Следующий шаг это сконфигурировать Build Tool. Опционально вы можете указать необходимые аргументы вместо $(ACTION). И директорию с вашими исходниками, где лежит Makefile!

Следующий шаг – добавить дополнительные настройки сборки. Нам нужно добавить PATH и SDK_PATH. Про них я рассказывал в этой статье.

После этого просто прожимаем CMD+B и переходим во вкладку Report Navigator (CMD+9). Там вы увидите все выполненные сборки и их лог. Их минусов, если вы пытаетесь проводить отладку, то логгер работает каким-то непонятным образом и вы не увидите актуальную информацию :(

Если у вас есть идеи как решить это проблему, то пишите в комментарии!

Всем спасибо за внимание!


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Дмитрий Батюшин (ReD)
    Дмитрий Батюшин (ReD) месяц назад

    Ты сегодня в ударе, отличное продолжение 

  2. (skv6)
    (skv6) месяц назад

    Программа из AppStore для прошивки ESP8266Flash чем плоха?

  3. Artem Tomshin (tweaker3)
    Artem Tomshin (tweaker3) месяц назад

    С Sierra и выше CH340, у меня было как только подключаю к USB, сразу же был "синий экран смерти", мак перезагружался. Решение проблемы нашел на форуме амперки, там есть определенный топик про это.

    • Павел Ник (error_404)
      Павел Ник (error_404) месяц назад

      у меня наоборот 340ой без лишних телодвижений с моей стороны завелся, хотя я не помню, чтобы когда-то прошивал с мака какие-то устройства.
      а вот си-лабс только после установки дров заработал.

      • Artem Tomshin (tweaker3)
        Artem Tomshin (tweaker3) отредактировано месяц назад

        Ну вот кстати, когда мак обновляю, почему то эти драйвера слетают, и опять мак перезагружается с китайскими иероглифами. Поэтому не очень нравиться CH340. стараюсь силабс использовать.

        Вот описание и решение проблемы: http://forum.amperka.ru/thread...

        • Павел Ник (error_404)
          Павел Ник (error_404) месяц назад

          весьма забавно...

          у меня после крайнего обновления осх по ощущениям еще и есптулс обновилась, тк при очередной прошивке пришлось прописывать размер 1МБ вместо 8м

  4. Павел Ник (error_404)
    Павел Ник (error_404) месяц назад

    работу устройства после прошивки можно командой screen "порт" проконтролировать ;)))
    при условии, что при компиляции в самой прошивке поднят флаг логирования

  5. Антон Киселёв (Whilser)
    Антон Киселёв (Whilser) месяц назад
    Atom прекрасно заливает прошивки на маке. 

К списку статей

Похожие статьи

4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
2 нояб. 2018 г.
Кнопка звонка с уведомлениями в HomeKit
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
15 нояб. 2018 г.
Способы автоматизации механических ворот
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit
22 окт. 2018 г.
Сборка DIY Лабораторного блока питания из китайских модулей
25 нояб. 2018 г.
Умное зеркало добавляем модули Airplay и Google Calendar