console_uart.c
La console série est le premier outil de vie d’un firmware nRF : ce sketch imprime compteur, uptime et valeur de capteur à 1 Hz sur l’UART console. Sur le DK, c’est l’USB « USB UART » ; sur le MDK, le CDC de l’USB natif.
Matériel requis
Une carte nRF52833-DK (Nordic, SoC nRF52833 Cortex-M4F, BLE 5) alimentée par USB : 4 LEDs sur P0.13-P0.16 (actives au niveau bas) et 4 boutons sur P0.11, P0.12, P0.24, P0.25 (actifs bas, pull-up interne à activer). La carte et un câble micro-USB/USB-C ; un terminal série (minicom, PuTTY, west uart_console) à 115200 bauds.
Câblage
Aucun câblage : la console passe par l’USB de programmation. Les broches UART du connecteur restent libres pour un second port.
Fonctionnement
printk est routé vers le périphérique choisi par zephyr,console dans le devicetree ; k_uptime_get donne le temps en millisecondes depuis le démarrage, pratique pour dater les événements.
Exécution
Projet Zephyr : west build -b nrf52833dk/nrf52833 puis west flash (J-Link embarqué) ; console série 115200 sur le connecteur USB UART.
Variantes
Basculer sur le logging subsystem (LOG_INF) pour des niveaux filtrables, créer un second UART via overlay pour un module externe, ou formater en CSV pour journalisation.
console_uart.c
/* Console série Zephyr : trame périodique sur l'UART console.
* DK : l'USB « USB UART » du connecteur micro-B (115200 8N1).
* MDK : l'USB natif du nRF52840 (CDC) selon le BSP. */
#include <zephyr/kernel.h>
int main(void)
{
int n = 0;
printk("Console prête — mesure 1 Hz\n");
while (1) {
/* Exemple de trame : compteur + uptime + une fausse
valeur capteur dérivée du compteur. */
int valeur = 100 + (n % 25);
printk("[%05d] uptime=%lld ms valeur=%d\n",
n, k_uptime_get(), valeur);
n++;
k_msleep(1000);
}
return 0;
}