🛠 Premier blinky Zephyr sur le nRF52833-DK
La tarjeta en un minuto
La nRF52833-DK de Nordic Semiconductor (código de tarjeta PCA10100, ~49 USD en DigiKey) es el kit oficial basado en el SoC nRF52833: Arm Cortex-M4 con FPU @ 64 MHz, 512 KB de flash, 128 KB de RAM, radio multiprotocolo de 2,4 GHz (BLE 5, Bluetooth mesh, Thread, Zigbee), USB, NFC y ADC de 12 bits. Formato Arduino Uno Rev3 (solo 3,3 V), 42 E/S accesibles en conectores y, sobre todo, un MCU de interfaz SEGGER J-Link OB integrado: depuración, programador y puerto COM virtual, sin necesidad de hardware externo. La tarjeta se mantiene en Zephyr upstream bajo el nombre nrf52833dk.
Paso 1 — Instalar la cadena de herramientas Zephyr
Siga la Guía de inicio oficial de Zephyr para su sistema operativo (CMake, Ninja, Python 3, toolchain para Cortex-M y luego west):
python3 -m venv .venv && source .venv/bin/activate # Windows : .venv\Scripts\activate
pip install west
west init zephyrproject
cd zephyrproject && west update
En cuanto al hardware, la Guía del usuario requiere simplemente un cable micro-USB y un J-Link software v6.52 o más reciente instalado en el host.
Paso 2 — Conectar el kit
El kit dispone de dos conectores micro-USB: J2 para el MCU de interfaz J-Link OB y J3 para el USB nativo del nRF52833. Para flashear, conecte el cable a J2. El programador integrado reconoce la tarjeta sin configuración.
Paso 3 — Compilar y flashear
west build -b nrf52833dk/nrf52833 samples/basic/blinky
west flash
El LED1 debe parpadear. Los 4 LED de usuario están en P0.13 a P0.16, activos a nivel bajo (se encienden cuando el pin pasa a 0); unos puentes de soldadura SB5-SB8 permiten desconectarlos. El mismo PCB existe en versión para el nRF52820 (256 KB de flash / 32 KB de RAM): west build -b nrf52833dk/nrf52820 ....
Paso 4 — Entender el código
El devicetree de la tarjeta define el alias led0 (LED1 = P0.13), de ahí el ejemplo estándar:
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);
int main(void)
{
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
while (1) {
gpio_pin_toggle_dt(&led); /* LED active-low sur le DK */
k_msleep(500);
}
}
Trampas conocidas
- Objetivo incorrecto: un sample compilado para
pca10056(nRF52840-DK) no mapea ni los LED ni los botones en la PCA10100 — el hilo de DevZone « nRF52833-DK blinky problem » proviene de esto. Utilice siemprenrf52833dk/nrf52833. - Botones sin pull-up externo: los 4 botones están en P0.11, P0.12, P0.24, P0.25, activos a nivel bajo, sin resistencia de pull-up en el PCB — active los pull-up internos (GPIO_PULL_UP) en su código.
- No confunda J2 (interfaz) y J3 (USB del SoC): conectar en J3 no hace nada hasta que su firmware haya inicializado el USB.
Otros tutoriales para esta placa
- Flasher un .hex sans rien installer : MSD et nRF Connect Programmer
- CircuitPython sur le kit Nordic : le prototypage sans C
- Premier périphérique BLE avec le nRF Connect SDK
- Projet firmware complet avec PlatformIO et la sonde J-Link embarquée
- Utiliser le DK comme sonde J-Link pour une cible externe
- Réseau Thread / 802.15.4 avec OpenThread sur le nRF52833