🛠 Thread/OpenThread sous Zephyr et mises à jour DFU/UF2
Objetivos
Salir del BLE: el nRF52840 también es una radio IEEE 802.15.4 y un objetivo de primer nivel para Zephyr (ieee802154-supported, soporte de OpenThread/Thread documentado por Zephyr). Compilarás el ejemplo OpenThread CLI para la plataforma nRF52840, lo flashearás mediante el bootloader UF2 de Adafruit y luego revisarás las actualizaciones: UF2 mediante arrastrar y soltar, DFU serie con nrfutil y OTA BLE.
Hardware
- 1× Adafruit Feather nRF52840 Express + cable micro-USB con transferencia de datos
- PC con Zephyr SDK +
west(workspace de nRF Connect SDK o Zephyr main) - Para Thread: un border router (Raspberry Pi + OpenThread) para formar la red
Código completo
# 1) Compiler l'echantillon OpenThread CLI pour nRF52840 (cible DK = meme 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 serie (115200) : commands OpenThread
# dataset init new / dataset commit active / ifconfig up / thread start
# thread state -> "leader" ou "child"
Verificación esperada
thread state responde «child» después de thread start cuando hay un border router activo; ping hacia una dirección IPv6 de la red Thread atraviesa la radio 802.15.4. En cuanto a las actualizaciones: arrastrar un archivo UF2 a FTHR840BOOT reprograma la placa sin ninguna herramienta JTAG; la cadena de arranque es el bootloader UF2 de Adafruit nRF52 de código abierto preinstalado.
Errores frecuentes
- Bootloader < 0.6.1: los archivos UF2 grandes (CircuitPython 8.2.0+, imágenes Zephyr pesadas) se gestionan mal; verifica
INFO_UF2.TXTen la unidad BOOT y actualiza el bootloader primero (≤ 0.3.x: no hay actualización automática de UF2, usa el IDE). - Familia de UF2 incorrecta:
uf2conv.py -fdebe coincidir con la familia nRF52840; de lo contrario, el bootloader ignora el archivo. - Plataforma Zephyr invertida:
nrf52840dk/nrf52840describe el SoC; los pines del DK ≠ Feather, adapta el overlay del árbol de dispositivos. - Olvidar que IEEE 802.15.4 ≠ BLE: una compilación de Thread no es detectable por BLE; prevé dos compilaciones o una compilación multiprotocolo (alto costo de RAM en 256 KB).
Otros tutoriales para esta placa
Ejemplos de código para esta placa
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython