🛠 Faire clignoter la LED RGB avec Zephyr
Pourquoi commencer par là ?
Le nRF52840-MDK de MakerDiary (~30 €) repose sur le SoC Nordic nRF52840 : Arm Cortex-M4F @ 64 MHz, 1 Mo de flash, 256 Ko de RAM, radio multiprotocole 2,4 GHz (BLE, Bluetooth Mesh, Thread, Zigbee, ANT). Son gros atout : un débogueur DAPLink intégré (lecteur USB + port COM virtuel + CMSIS-DAP) — aucun programmateur externe n'est nécessaire. La carte est référencée dans Zephyr amont sous le nom nrf52840_mdk.
Étape 1 — Installer la chaîne Zephyr
Suivez le Getting Started Guide officiel de Zephyr pour votre OS (CMake, Ninja, Python 3, toolchain Cortex-M, puis west) :
python3 -m venv .venv && source .venv/bin/activate # .venv\Scripts\activate sous Windows
pip install west
west init zephyrproject
cd zephyrproject && west update
Étape 2 — Brancher la carte
Branchez la carte en USB. Elle s'énumère comme un hub USB 2.0 à deux ports : l'un vers le DAPLink (le lecteur amovible DAPLINK apparaît, plus un port série CDC), l'autre vers l'USB natif du nRF52840. Si le lecteur DAPLINK n'apparaît pas (problèmes connus #53 et #37, surtout sur Mac), changez de câble, de port ou d'hôte.
Étape 3 — Compiler et flasher
west build -b nrf52840_mdk samples/basic/blinky
west flash
west flash parle au sonde CMSIS-DAP embarquée. Alternative sans aucun outil : déposer build/zephyr.hex sur le lecteur DAPLINK, puis appuyer sur le bouton Boot/Reset.
Étape 4 — Comprendre le code
Le devicetree de la carte définit l'alias led0, d'où l'exemple standard sans modification :
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
int main(void)
{
if (!gpio_is_ready_dt(&led)) {
return -1;
}
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
while (1) {
gpio_pin_toggle_dt(&led);
k_msleep(1000);
}
}
La LED RGB est branchée sur des broches P0 classiques : pour l'affectation exacte, référez-vous au pinout diagram PDF officiel plutôt que de coder des numéros de broche en dur.
Pièges connus
- Les vieux exemples du dépôt MakerDiary ne compilent plus avec Zephyr 3.5+ (issue #55) : utilisez les samples amont à jour.
- Sous Windows antérieur à 10, le pilote série Arm Mbed est requis pour le port CDC.