🛠 Thread/OpenThread sous Zephyr et mises à jour DFU/UF2
Objectifs
Sortir du BLE : le nRF52840 est aussi radio IEEE 802.15.4 et cible Zephyr de premier ordre (ieee802154-supported, prise en charge OpenThread/Thread documentée par Zephyr). Vous compilerez l'échantillon OpenThread CLI pour la cible nRF52840, le flasherez via le bootloader UF2 Adafruit, puis ferez le point sur les mises à jour : UF2 en glisser-déposer, DFU série nrfutil, et OTA BLE.
Matériel
- 1× Adafruit Feather nRF52840 Express + câble micro-USB à données
- PC avec Zephyr SDK +
west(workspace nRF Connect SDK ou Zephyr main) - Pour Thread : un border router (Raspberry Pi + OpenThread) pour former le réseau
Code complet
# 1) Compiler l'echantillon OpenThread CLI pour nRF52840 (cible DK = même SoC)
west init -m https://github.com/zephyrproject-rtos/zephyr --mr main ot-ws
cd ot-ws && west update
cd zephyr
west build -b nrf52840dk/nrf52840 samples/net/openthread/cli
# 2) Flash : soit par SWD (2x5 0.05" de la Feather, J-Link/DAPLink) :
west flash --runner jlink
# soit en UF2 : double-clic RST -> NeoPixel vert -> lecteur FTHR840BOOT,
# convertir build/zephyr.bin en .uf2 (uf2conv.py -f 0xADF7) puis glisser.
# 3) Console série (115200) : commands OpenThread
# dataset init new / dataset commit active / ifconfig up / thread start
# thread state -> "leader" ou "child"
Vérification attendue
thread state répond « child » après thread start quand un border router est actif ; ping vers une adresse IPv6 du réseau Thread traverse la radio 802.15.4. Côté mise à jour : glisser un UF2 sur FTHR840BOOT reprogramme la carte sans aucun outil JTAG — la chaîne de boot est l'Adafruit nRF52 UF2 bootloader open source préinstallé.
Erreurs fréquentes
- Bootloader < 0.6.1 : les gros UF2 (CircuitPython 8.2.0+, images Zephyr costaudes) sont mal gérés — vérifier
INFO_UF2.TXTdu lecteur BOOT et mettre à jour le bootloader d'abord (≤ 0.3.x : pas d'auto-maj UF2, passer par l'IDE). - Mauvaise famille d'UF2 :
uf2conv.py -fdoit correspondre à la famille nRF52840, sinon le bootloader ignore le fichier. - Cible Zephyr inversée :
nrf52840dk/nrf52840décrit le SoC ; les broches DK ≠ Feather, adaptez le overlay device tree. - Oublier qu'IEEE 802.15.4 ≠ BLE : un build Thread n'est pas détectable en BLE ; prévoir deux builds ou un build multiprotocol (coût RAM important sur 256 KB).
Autres tutoriels pour cette carte
Exemples de code pour cette carte
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython