🛠 CircuitPython sur le kit Nordic : le prototypage sans C
Why CircuitPython on this kit?
CircuitPython publishes an official build for the board ID pca10100, which is the Nordic nRF52833-DK. The SoC is well-suited for it: Cortex-M4 @ 64 MHz, 512 KB of flash, 128 KB of RAM, and the kit includes everything needed to get started without soldering: 4 user LEDs (P0.13-P0.16, active low), 4 buttons (P0.11, P0.12, P0.24, P0.25, active low, no external pull-up), and the J-Link OB interface, which serves as both a programmer and a serial console. This is the shortest path to getting familiar with the board before moving on to the nRF Connect SDK.
Step 1 — Download the firmware
On the CircuitPython board page (circuitpython.org/board/pca10100/), download the latest .hex (or .uf2 if available) for pca10100. Pin the version: CircuitPython APIs evolve between releases.
Step 2 — Flash the firmware onto the kit
The kit does not have a UF2 bootloader; you program it like any other Nordic hex file:
- Drag and drop: The J-Link OB exposes an MSD drive — drop the CircuitPython hex file onto it, then press Reset.
- Command line:
nrfjprog --program circuitpython.hex --chiperase -f && nrfjprog --reboot. - west/J-Link:
nrfjprogor the J-Link flasher in your IDE does the same thing.
Always connect the micro-USB cable to J2 (the interface MCU connector).
Step 3 — First script
Once CircuitPython has started, a CIRCUITPY drive appears. Create/edit code.py:
# code.py — CircuitPython build pca10100
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED1) # le DK a 4 LED utilisateur
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = not led.value
time.sleep(0.3)
Save the file: the code restarts automatically. The REPL is available on the J-Link OB serial port (remember to enable DTR in your terminal, otherwise UART lines remain inactive).
Limitations to know
- CircuitPython occupies a large portion of the flash: radio usage (BLE, Thread) is not the specialty of this build on this board — for BLE, switch to the nRF Connect SDK.
- The 4 buttons do not have pull-ups on the PCB: in
digitalio, explicitly configurePull.UP, otherwise the input floats. - P0.09/P0.10 are reserved for NFC by default on the Nordic side; on a custom CircuitPython build, you must disable NFC (equivalent to
CONFIG_NFCT_PINS_AS_GPIOS) to use them as GPIO. - For battery power: the kit accepts a CR2032 (included in the box) via its dedicated slot — convenient, but CircuitPython remains power-hungry compared to bare firmware.
Moving to the next step
Once you are comfortable with GPIO and buttons, the same kit awaits you for BLE with the nRF Connect SDK or upstream Zephyr: the Zephyr blinky and BLE advertising tutorials for this board take over from here.
Other tutorials for this board
- Premier blinky Zephyr sur le nRF52833-DK
- Flasher un .hex sans rien installer : MSD et nRF Connect Programmer
- 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