MySensors + adafruit + nRF52840
Добавлено: 22 июн 2021, 08:38
Использовалась модель:
E104-BT5040U
https://www.ebyte.com/en/product-view-news.html?id=1185
https://aliexpress.ru/item/1005001529756677.html
Аналог Nordic nRF52840 PCA10059.
Есть отличия.
Нет зеленого светодиода в RGB-матрице. Вообще нет. В документации красный и синий перепутаны.
Загрузчик прошивался через китайский J-Link. Для этого прямо в плату E104-BT5040U воткнул 4 острых коннектора.
К сожалению, ebyte не позаботился об этом и не распаял хотя бы штыри. Но отверстия есть.
Прошить загрузчик другим способом не удалось, так как загрузчик должен быть подписан.
Загрузчик брался от adafruit: feather_nrf52840_express_bootloader-0.6.0_s140_6.1.1.zip
Загрузчик позволяет прошивать всё что угодно методом закидывания на flash-диск образа программы. Для этого нужно пару раз нажать сброс, E104-BT5040U прикинется flash-диском.
Как сделать образ программы:
adafruit\hardware\nrf52\0.22.1\tools\uf2conv\uf2conv.py -f 0xADA52840 -c -o "test.uf2" "test.hex"
test.hex – это ваша программа. После выполнения этого питон-скрипта появится test.uf2 который нужно закинуть на flash-диск.
У меня (и не только) были с этим проблемы. Как только мы начинаем копировать файл, E104-BT5040U переходит в режим обновления прошивки, диск отключается и часто файл просто не успевает скопироваться.
Метод, конечно, интересный, так как позволяет установить прошивку, скомпилированную для любого ядра, а не только adafruit.
Сам adafruit загружает из Arduino через USB-COM-порт. Т.е. ничего, кроме usb-кабеля для прошивки через adafruit не нужно, никаких программаторов.
У Nordic есть свои средства обновления как загрузчика, так и прошивки. Но они работают только с подписанными образами программ.
В документации ebyte есть немного про цифровую подпись. Возможно даже что изначально устройство поставляется с отключенным контролем. Но эксперименты с этим не проводились. Документация очень скромная.
Вообще, у Nordic очень обширный арсенал прошивки, включая OTA даже через мобильный телефон и BLE5.
У adafruit нет поддержки BLE5. Поэтому, если это важно – лучше попытаться разобраться с тем, как ebyte предлагает решить проблему цифровой подписи.
Для того, чтобы скрестить MySensors, adafruit и E104-BT5040U необходимо проделать ряд изменений в библиотеках как MySensors, так и в adafruit.
Для adafruit нужно просто добавить новую плату.
Я назвал её “Nordic nRF52840DK (PCA10059)”.
Для этого описание платы из boards.add.txt нужно добавить в boards.txt и закинуть файлы для pca10059. Т.е. ничего править в коде adafruit не нужно. Всё оригинальное.
Для MySensors не всё так просто.
Нужно заменить несколько файлов оригинальной библиотеки.
Эти изменения не должны нарушить работу с ни с чем, кроме nrf52840.
Все изменения взяты с различных тем форума на MySensors.org относительно совместимости MySensors и nrf52840.
Все изменения для MySensors 2.3.2.
В общем, они все довольно очевидны.
Если попытаться скомпилировать проект без изменений – будут вылазить ошибки, исправляя которые вы и получите все эти изменения.
E104-BT5040U
https://www.ebyte.com/en/product-view-news.html?id=1185
https://aliexpress.ru/item/1005001529756677.html
Аналог Nordic nRF52840 PCA10059.
Есть отличия.
Нет зеленого светодиода в RGB-матрице. Вообще нет. В документации красный и синий перепутаны.
Загрузчик прошивался через китайский J-Link. Для этого прямо в плату E104-BT5040U воткнул 4 острых коннектора.
К сожалению, ebyte не позаботился об этом и не распаял хотя бы штыри. Но отверстия есть.
Прошить загрузчик другим способом не удалось, так как загрузчик должен быть подписан.
Загрузчик брался от adafruit: feather_nrf52840_express_bootloader-0.6.0_s140_6.1.1.zip
Загрузчик позволяет прошивать всё что угодно методом закидывания на flash-диск образа программы. Для этого нужно пару раз нажать сброс, E104-BT5040U прикинется flash-диском.
Как сделать образ программы:
adafruit\hardware\nrf52\0.22.1\tools\uf2conv\uf2conv.py -f 0xADA52840 -c -o "test.uf2" "test.hex"
test.hex – это ваша программа. После выполнения этого питон-скрипта появится test.uf2 который нужно закинуть на flash-диск.
У меня (и не только) были с этим проблемы. Как только мы начинаем копировать файл, E104-BT5040U переходит в режим обновления прошивки, диск отключается и часто файл просто не успевает скопироваться.
Метод, конечно, интересный, так как позволяет установить прошивку, скомпилированную для любого ядра, а не только adafruit.
Сам adafruit загружает из Arduino через USB-COM-порт. Т.е. ничего, кроме usb-кабеля для прошивки через adafruit не нужно, никаких программаторов.
У Nordic есть свои средства обновления как загрузчика, так и прошивки. Но они работают только с подписанными образами программ.
В документации ebyte есть немного про цифровую подпись. Возможно даже что изначально устройство поставляется с отключенным контролем. Но эксперименты с этим не проводились. Документация очень скромная.
Вообще, у Nordic очень обширный арсенал прошивки, включая OTA даже через мобильный телефон и BLE5.
У adafruit нет поддержки BLE5. Поэтому, если это важно – лучше попытаться разобраться с тем, как ebyte предлагает решить проблему цифровой подписи.
Для того, чтобы скрестить MySensors, adafruit и E104-BT5040U необходимо проделать ряд изменений в библиотеках как MySensors, так и в adafruit.
Для adafruit нужно просто добавить новую плату.
Я назвал её “Nordic nRF52840DK (PCA10059)”.
Для этого описание платы из boards.add.txt нужно добавить в boards.txt и закинуть файлы для pca10059. Т.е. ничего править в коде adafruit не нужно. Всё оригинальное.
Для MySensors не всё так просто.
Нужно заменить несколько файлов оригинальной библиотеки.
Эти изменения не должны нарушить работу с ни с чем, кроме nrf52840.
Все изменения взяты с различных тем форума на MySensors.org относительно совместимости MySensors и nrf52840.
Все изменения для MySensors 2.3.2.
В общем, они все довольно очевидны.
Если попытаться скомпилировать проект без изменений – будут вылазить ошибки, исправляя которые вы и получите все эти изменения.