🛠 CircuitPython sur le kit Nordic : le prototypage sans C
Pourquoi CircuitPython sur ce kit ?
CircuitPython publie un build officiel pour la board id pca10100, c'est-à-dire le nRF52833-DK de Nordic. Le SoC s'y prête : Cortex-M4 @ 64 MHz, 512 Ko de flash, 128 Ko de RAM, et le kit embarque tout ce qu'il faut pour débuter sans solder : 4 LED utilisateur (P0.13-P0.16, actives au niveau bas), 4 boutons (P0.11, P0.12, P0.24, P0.25, actifs au niveau bas, sans pull-up externe), et l'interface J-Link OB qui sert à la fois de programmateur et de console série. C'est le chemin le plus court pour apprivoiser la carte avant de passer au nRF Connect SDK.
Étape 1 — Télécharger le firmware
Sur la page CircuitPython de la board (circuitpython.org/board/pca10100/), téléchargez le dernier .hex (ou .uf2 le cas échéant) pour pca10100. Épinglez la version : les API CircuitPython évoluent entre les releases.
Étape 2 — Flasher le firmware sur le kit
Le kit n'a pas de bootloader UF2 ; on programme comme n'importe quel hex Nordic :
- Glisser-déposer : le J-Link OB expose un lecteur MSD — déposez l'hex CircuitPython dessus, puis appuyez sur Reset.
- Ligne de commande :
nrfjprog --program circuitpython.hex --chiperase -f && nrfjprog --reboot. - west/J-Link :
nrfjprogou le flasher J-Link de votre IDE font la même chose.
Branchez toujours le câble micro-USB sur J2 (le connecteur du MCU d'interface).
Étape 3 — Premier script
Une fois CircuitPython démarré, un lecteur CIRCUITPY apparaît. Créez/éditez 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)
Sauvegardez : le code se relance automatiquement. La REPL est disponible sur le port série du J-Link OB (pensez à activer DTR dans votre terminal, sinon les lignes UART restent inactives).
Limites à connaître
- CircuitPython occupe une grosse partie de la flash : les usages radio (BLE, Thread) ne sont pas la spécialité de ce build sur cette carte — pour le BLE, retournez au nRF Connect SDK.
- Les 4 boutons n'ont pas de pull-up sur le PCB : en
digitalio, configurezPull.UPexplicitement, sinon l'entrée flotte. - P0.09/P0.10 sont réservés au NFC par défaut côté Nordic ; sur un build CircuitPython custom, il faut désactiver le NFC (équivalent de
CONFIG_NFCT_PINS_AS_GPIOS) pour les utiliser en GPIO. - Pour l'alimentation sur pile : le kit accepte une CR2032 (fournie dans la boîte) via son emplacement dédié — pratique, mais CircuitPython reste gourmand comparé au firmware nu.
Passer à l'étape suivante
Une fois à l'aise avec GPIO et boutons, le même kit vous attend pour le BLE avec le nRF Connect SDK ou Zephyr amont : les tutos blinky Zephyr et publicitaire BLE de cette carte prennent le relais.
Autres tutoriels pour cette carte
- 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