MySensors + adafruit + nRF52840

О программировании Arduino, использование библиотек, примеры и общие вопросы программирования.
Ответить
kakto
Сообщения: 3
Зарегистрирован: 21 апр 2021, 16:05

MySensors + adafruit + nRF52840

Сообщение kakto »

Использовалась модель:
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.

В общем, они все довольно очевидны.
Если попытаться скомпилировать проект без изменений – будут вылазить ошибки, исправляя которые вы и получите все эти изменения.
Вложения
MotionSensor.zip
Рабочий пример ноды
(1.08 КБ) 774 скачивания
mysensors.adafruit.txt.zip
пути к файлам
(423 байт) 779 скачиваний
E104-BT5040U.zip
описание E104-BT5040U от ebyte
(747.41 КБ) 933 скачивания
MySensors.zip
Файлы для MySensors
(9.53 КБ) 846 скачиваний
adafruit.zip
Файлы для adafruit
(4.53 КБ) 793 скачивания
Ответить