nRF52840-MDK (id boards.json : nrf52840-mdk)

MakerDiarySoMlinux

⚡ L’essentiel en 60 secondes

La nRF52840-MDK est une carte de développement électronique conçue par MakerDiary, une entreprise basée à Shenzhen, qui se distingue par son approche ouverte et son coût d'entrée particulièrement bas. Il s'agit d'un kit de développement matériel (MDK pour Micro Development Kit) entièrement open-source, dont la conception est sous licence MIT. Lancée aux alentours de 2018, cette carte reste active et disponible à la vente en 2026, proposée à un prix avoisinant les 30 euros. Elle constitue une alternative économique et flexible aux kits officiels souvent plus coûteux, tout en offrant une intégration remarquable des outils de développement. Le cœur de cette carte est le système sur puce (SoC) nRF52840 de Nordic Semiconductor. Pour comprendre la puissance de ce composant, il faut savoir qu'il intègre un processeur Arm Cortex-M4 cadencé à 64 MHz, accompagné d'une unité de calcul en virgule flottante (FPU) qui accélère les opérations mathématiques complexes, utiles pour le traitement de signaux ou les algorithmes de contrôle. La mémoire disponible est généreuse pour ce type de microcontrôleur, avec 1 Mo de mémoire flash pour stocker le programme et 256 Ko de mémoire vive (RAM) pour les données temporaires. L'atout majeur de ce SoC réside dans sa radio multiprotocole fonctionnant sur la bande des 2,4 GHz. Cela signifie que la carte peut communiquer via plusieurs standards sans fil : le Bluetooth Low Energy (BLE), le Bluetooth Mesh pour les réseaux de capteurs, ainsi que les protocoles Thread, Zigbee et IEEE 802.15.4, très utilisés dans la domotique et l'Internet des objets. Elle supporte également le protocole ANT et permet des communications propriétaires sur la fréquence 2,4 GHz. La puissance d'émission est de +8 dBm, ce qui offre une portée raisonnable pour la plupart des applications domestiques ou industrielles. En matière de sécurité, le nRF52840 intègre des blocs matériels dédiés, notamment TrustZone et le CryptoCell 310, qui permettent de chiffrer les données et de gérer les clés cryptographiques sans solliciter le processeur principal, améliorant ainsi la sécurité et l'efficacité énergétique.

L'architecture de la carte a été pensée pour simplifier la vie du développeur. Un aspect crucial est la présence d'un débogueur intégré de type DAPLink. Pour un débutant, cela signifie qu'il n'est pas nécessaire d'acheter un outil de programmation externe coûteux. En branchant la carte via son port USB de type C, l'ordinateur la reconnaît comme un périphérique de stockage amovible. Il suffit alors de glisser-déposer un fichier de compilation (généralement un fichier .hex) sur cette unité pour que le programme soit installé sur la carte. Le DAPLink fournit également un port série virtuel, permettant d'afficher les messages de diagnostic de votre code sur l'écran de votre ordinateur. Une particularité technique intéressante de la nRF52840-MDK est sa gestion des ports USB. Contrairement à beaucoup de cartes où le port USB sert uniquement à la programmation, ici, le contrôleur USB natif du nRF52840 est également accessible. Cela est rendu possible par un hub USB interne, ce qui permet à la carte de se comporter comme un périphérique USB à part entière, utile pour créer des dongles Bluetooth ou des interfaces HID. Cette flexibilité est renforcée par la possibilité de choisir entre une antenne chip intégrée, discrète et suffisante pour la plupart des cas, ou une connexion externe via un connecteur U.FL pour y brancher une antenne plus performante si la portée doit être augmentée.

Sur le plan des entrées/sorties, la carte offre une grande modularité grâce à deux rangées de connecteurs à 18 broches, compatibles avec les plaques d'essai (breadboards). Bien que le SoC puisse gérer jusqu'à 48 broches d'entrée/sortie générale (GPIO), la carte en expose jusqu'à 24, ce qui est largement suffisant pour connecter des capteurs, des actionneurs ou des écrans. Il est important de noter qu'aucun capteur environnemental ou de mouvement n'est intégré sur la carte elle-même ; l'utilisateur doit donc ajouter les capteurs nécessaires selon son projet. Pour le stockage de données, la carte embarque une mémoire flash externe de 8 Mo (64 Mbit) reliée via une interface QSPI, idéale pour enregistrer des logs ou stocker des mises à jour du logiciel (OTA). L'alimentation est gérée par un régulateur de tension capable de fournir jusqu'à 1 ampère en pointe, acceptant une tension d'entrée comprise entre 1,7 V et 5,5 V. Il n'y a pas de circuit de charge pour batterie intégré, mais la carte peut être alimentée directement par une source externe connectée à la broche VIN. Les dimensions compactes de 50 x 23 mm permettent une intégration facile dans des boîtiers ou des prototypes.

L'écosystème logiciel est riche et varié, soutenu par une communauté active. La carte est officiellement prise en charge par Zephyr RTOS, un système d'exploitation temps réel populaire et maintenu par la Linux Foundation, ce qui signifie que les outils de compilation standard fonctionnent directement. Elle est également compatible avec le SDK nRF5 de Nordic, ainsi qu'avec des environnements comme PlatformIO, qui simplifie la gestion des dépendances et la compilation multi-projets. Des guides existent pour des systèmes comme OpenThread, Mynewt ou RIOT OS. Bien que le support Arduino officiel ne soit pas fourni par le fabricant, des noyaux communautaires permettent souvent de faire fonctionner des croquis Arduino sur des cartes génériques nRF52840. De même, le langage Rust est supporté via une bibliothèque communautaire. Il faut cependant garder à l'esprit que certains exemples fournis dans le dépôt GitHub peuvent avoir pris du retard par rapport aux dernières versions des bibliothèques logicielles, nécessitant parfois des ajustements manuels. Des problèmes d'énumération USB sur certains systèmes d'exploitation, notamment macOS, ou des difficultés avec des outils de débogage spécifiques comme OpenOCD, ont été signalés par les utilisateurs, bien que des solutions de contournement existent, comme l'utilisation d'un débogueur externe J-Link. La nRF52840-MDK s'est illustrée dans des projets notables, tels que la création de clés de sécurité FIDO2 (OpenSK) ou comme nœud de test dans des infrastructures de recherche IoT. En résumé, cette carte offre un excellent rapport qualité-prix pour quiconque souhaite développer des applications sans fil multiprotocoles, avec une grande liberté matérielle et logicielle, à condition de bien comprendre les spécificités de son architecture USB et de ses outils de programmation intégrés.

Forum (1 sujet) →

AttrSpecsvérifié
cpuArm Cortex-M4 with FPU @ 64 MHz — Nordic comparison table ("64 MHz Arm Cortex-M4 with FPU") and PlatformIO (Frequency 64MHz) (, ). No GPU.✔
memory1 MB flash + 256 KB RAM (both sources above; also the board wiki).? non vérifié
radio_2_4_ghz_multiprotocolBluetooth Low Energy (board marketed "Bluetooth 5" in 2018; Nordic's current table lists the family as BT 5.4), Bluetooth Mesh, Thread / Zigbee / IEEE 802.15.4, ANT, 2.4 GHz proprietary (wiki + Nordic table). TX power +8 dBm — MakerDiary's own nRF52840 product descriptions: "2.4 GHz Transceiver with +8 dBm TX Power" (makerdiary.com/products.json, fetched 2026-10-14).? non vérifié
securityArm TrustZone + CryptoCell 310 hardware crypto subsystem (board wiki; "TrustZone® Cryptocell 310 Security Subsystem" in MakerDiary's product feed).? non vérifié
peripheralson-chip USB 2.0 Full-speed device controller, NFC-A tag, QSPI and High-Speed SPI, PWM/PDM/I2S, 12-bit ADC + COMP (Nordic table "ADC, Comp"; wiki).? non vérifié
gpioNordic's table lists 48 GPIOs for the nRF52840 (package-dependent, QFN48 / WLCSP).? non vérifié
supply_voltage1.7 v? non vérifié
temperature−40 °C to +85 °C (Nordic table).? non vérifié
debuggerintegrated DAPLink — MSC drag-and-drop programming, CDC virtual COM port, HID/WEBUSB-HID CMSIS-DAP debug channel.? non vérifié
usb_topologyMicrochip USB 2.0 Hi-Speed 2-port hub controller, downstream port 1 → DAPLink, downstream port 2 → nRF52840 native USB (the SoC enumerates directly — key for USB dongle/ble-usb applications). Reversible USB 3.1 Type-C connector.? non vérifié
external_flashultra-low-power 64-Mbit (8 MB) QSPI FLASH.? non vérifié
antennaon-board 2.4 GHz chip antenna, with U.FL connector selectable for an external antenna (antenna selection for custom applications).? non vérifié
user_i_oprogrammable user button, RGB LED, IF Boot/Reset button.? non vérifié
power3.3 V regulator with 1 A peak output, VBUS & VIN power-path management.? non vérifié
mechanicalbreadboard-friendly dual 18-pin headers; 50 × 23 × 13 mm with headers soldered (wiki).? non vérifié
sensorsnone on-board — the hardware feature list contains no environmental or motion sensor (wiki, 2026-10-14).? non vérifié
  • Fabricant : MakerDiary (Shenzhen), matériel open source ; dépôt sous licence MIT, « Copyright (c) 2019 makerdiary.com » (, consulté le 2026-10-14).
  • Année : le dépôt GitHub makerdiary/nrf52840-mdk a été créé le 2018-07-06, premières issues ouvertes début 2019 (API created_at: 2018-07-06T01:52:11Z, consulté le 2026-10-14). Les fiches de vente (Seeed p-3079, Amazon B07MPPHY5B) datent de la fenêtre 2018–2019 ( « available on the following channels »).
  • Statut (2026-10-14) : Actif / actuel. Référencé sur le flux de la boutique MakerDiary (consulté le 2026-10-14) sous le nom « nRF52840-MDK IoT Development Kit » à 29,90 €, aux côtés du nRF52840 MDK USB Dongle (PCBA) à 12,99 € et de la version w/ Case à 19,90 €.
  • Prix de lancement :
  • Variantes : - nRF52840-MDK V1.0 — la carte d'en-tête documentée ici (seule révision matérielle publiée ; le tableau Hardware Resource du wiki ne liste que V1.0, ). - nRF52840 MDK USB Dongle (PCBA et w/Case) — facteur de forme clé USB, livré avec un bootloader UF2, antenne intégrée, commercialisé pour Bluetooth 5.4 / mesh / Thread / Zigbee / ANT et comme sniffer BLE/802.15.4 avec Wireshark (, consulté le 2026-10-14). - Cartes sœurs nRF52840 du même fabricant (non MDK) : nRF52840 Connect Kit, nRF52840 M.2 Module / Developer Kit, Pitaya Go (flux de la boutique, 2026-10-14). L'ancienne nRF52832-MDK (V1/V2) est le prédécesseur à base de 51 .

+ Points forts

  • Débogueur entièrement intégré à petit prix — DAPLink (MSC+CDC+CMSIS-DAP) derrière un hub USB HS Microchip, donc le contrôleur USB du nRF52840 est aussi exposé ; les DK de Nordic coûtent plusieurs fois plus cher (29,90 € vs tarifs DK Nordic, flux de la boutique 2026-10-14).
  • Flexibilité d'antenne : antenne intégrée sur la carte plus U.FL pour une antenne externe, sélectionnable — rare à ce niveau de prix.
  • Flash QSPI externe 64 Mbit pour la préparation OTA / la journalisation de données (wiki).
  • Sécurité matérielle : TrustZone + CryptoCell 310 (wiki) — utilisés par le projet d'authentificateur OpenSK FIDO2 sur la famille MDK .
  • Open source : dépôt sous licence MIT avec schéma V1.0, fichier de carte, PDF de pinout et STEP 3D en téléchargement (wiki Hardware Resource).
  • Multiprotocole : BLE 5, Bluetooth Mesh, Thread, Zigbee, ANT, 2,4 GHz propriétaire depuis une carte à 30 € (wiki) ; la carte sœur USB-dongle sert aussi de sniffer BLE/ 802.15.4 Wireshark (wiki du dongle).
  • Compatible breadboard avec double connecteurs 18 broches, 50 × 23 mm (wiki).

− Points faibles

  • Échecs d'énumération USB : « USB port not recognized » (#53, 2022) et « Board and DAPLink does not show up at all on Mac » (#37, 2020) — le lecteur DAPLINK n'apparaît pas sur certains hôtes.
  • Particularités macOS : « nRF connect does not recognise 'makerdiary' device on MacOS » (#47).
  • Exemples périmés / dérive de la chaîne d'outils : dépôt poussé pour la dernière fois le 2021-05-28 (API GitHub, consulté le 2026-10-14) ; « bluetooth peripherial_hr sample not compiling » (#55) contre Zephyr 3.5+ ; « Documentation no longer accurate now that the nrf528xx have moved to openthread/ot-nrf528xx » (#52) ; « The example HEX file is invalid. » (#45) ; « script failed when doing zephyr test » (#42).
  • Flash non persistant : « after make flash the code is not uploaded on board » (#31) ; les hex SoftDevice+app doivent être fusionnés avec mergehex avant le glisser-déposer (note du getting-started) — une variante fréquente auto-infligée de ce problème.
  • Lacunes des exemples BLE/USB : « MAC address is 00:00:00:00:00:00 » dans hci_usb (#57) ; « USB_DEVICE_VID not set » (#56).
  • Étrangeté I²C : « Peculiar i2c issue » (#44).
  • Usage de l'antenne externe mal documenté : « How to use external antenna ? » (#51) — le chemin U.FL existe mais la procédure de sélection est succincte dans la doc.
  • OpenOCD avec le DAPLink embarqué : le mainteneur du BSP Rust « was unable to get this working with the openocd that ships with ubuntu 18.04 » et est passé à J-Link ( README).
  • Variante USB Dongle — risque de brique : flasher le hex du bootloader UF2 via le lecteur DAPLINK peut laisser le dongle dans un état instable (« Bricked device », Nordic DevZone, ).
  • Windows < 10 nécessite le driver série Arm Mbed pour le port CDC (getting-started).
  • Pas de support officiel Arduino/CircuitPython (voir Systèmes ; page de carte CircuitPython en 404).
  • Retour d'expérience expert expert — expert-microcontroleur
    • Je reviens vers vous avec un retour d'experience sur la nrf52840-mdk. C'est une carte très interessante pour son prix, surtout grace au debugger DAPLink integre et la possibilite d'utiliser soit l'antenne embarquée soit un port U.FL. Le SoC nRF52840 avec 1MB de flash est très solide. Par contre, at… — expert-microcontroleur
    • Merci pour ce retour. Je confirme le point sur MacOS. J'ai passe deux soirees a essayer de faire reconnaitre la carte par nRF Connect sans succes, comme decrit dans l'issue 47. C'est frustrant car le hardware a l'air correct. Est-ce que quelqu'un a reussi a compiler les exemples de developpement re… — hobbyiste_ble
    • Pour les problèmes de compilation, il faut souvent mettre à jour manuellement les modules Zephyr ou le SDK, car les exemples ne suivent pas. Concernant l'USB, si le hub Microchip pose problème, essayez de brancher la carte sur un port differents ou sans hub externe si possible. Malgre ces soucis de… — dev_embedded_fr

Retours et projets de la communauté

  • OpenSK FIDO2 security key

    OpenSK FIDO2 security key — Google's open-source FIDO2 authenticator runs on the (unverified au 2026-10-13) — interne hébergé sur site interne, statut vivant vérifié le 2026-10-13. Projet documenté dans la fiche nrf52840-mdk (SoM) ; rôle : approfondir la pris…

  • Échecs d'énumération USB : « USB port not recognized » (#53, 2022) et « Board and DAPLink does not show up at all on Mac » (#37, 2020) — le lecteur DAPLINK n'apparaît pas sur certains hôtes.
  • Particularités macOS : « nRF connect does not recognise 'makerdiary' device on MacOS » (#47).
  • Exemples périmés / dérive de la chaîne d'outils : dépôt poussé pour la dernière fois le 2021-05-28 (API GitHub, consulté le 2026-10-14) ; « bluetooth peripherial_hr sample not compiling » (#55) contre Zephyr 3.5+ ; « Documentation no longer accurate now that the nrf528xx have moved to openthread/ot-nrf528xx » (#52) ; « The example HEX file is invalid. » (#45) ; « script failed when doing zephyr test » (#42).
  • Flash non persistant : « after make flash the code is not uploaded on board » (#31) ; les hex SoftDevice+app doivent être fusionnés avec mergehex avant le glisser-déposer (note du getting-started) — une variante fréquente auto-infligée de ce problème.
  • Lacunes des exemples BLE/USB : « MAC address is 00:00:00:00:00:00 » dans hci_usb (#57) ; « USB_DEVICE_VID not set » (#56).
  • Étrangeté I²C : « Peculiar i2c issue » (#44).
  • Usage de l'antenne externe mal documenté : « How to use external antenna ? » (#51) — le chemin U.FL existe mais la procédure de sélection est succincte dans la doc.
  • OpenOCD avec le DAPLink embarqué : le mainteneur du BSP Rust « was unable to get this working with the openocd that ships with ubuntu 18.04 » et est passé à J-Link ( README).
  • Variante USB Dongle — risque de brique : flasher le hex du bootloader UF2 via le lecteur DAPLINK peut laisser le dongle dans un état instable (« Bricked device », Nordic DevZone, ).
  • Windows < 10 nécessite le driver série Arm Mbed pour le port CDC (getting-started).
  • Pas de support officiel Arduino/CircuitPython (voir Systèmes ; page de carte CircuitPython en 404).

Bibliothèque de code — exemples écrits pour cette carte

  • led_blink.c C

    Le hello world bas niveau du nRF52840 : la LED clignote en écrivant directement dans les registres GPIO, sans SDK ni horloge configurée. Comprendre OUTSET/OUTCLR et PIN_CNF est la base de tout le res…

  • bouton_gpiote.c C

    Plutôt que scruter le bouton en boucle, GPIOTE génère une interruption sur front descendant et réveille le CPU : la boucle principale s'endort en WFE entre deux appuis. Le patron économe par défaut s…

  • console_uart.c C

    La console série passe par l'UART connecté au debugger de la MDK : printf léger, écho des caractères reçus, compteur de tick. Le premier outil de débogage de tout projet nRF, sans sonde JTAG.

  • adc_saadc.c C

    Le SAADC du nRF52840 mesure avec la référence interne 0,6 V et un gain fractionnaire : en divisant la batterie LiPo par deux, on lit 0-3,3 V sur la broche et on reconstitue 0-6,6 V. Base de toute sur…

  • pwm_fade.c C

    Le PWM matériel du nRF52840 produit la respiration sans intervention du CPU : une séquence de deux valeurs rejouée 40 fois par pas d'intensité. La LED P0.06 monte et descend en douceur, à 25 kHz hors…

  • ble_nus.c C

    Le BLE est la raison d'être du nRF52840 : ce programme diffuse un nom, expose le Nordic UART Service et envoie des trames texte à l'app nRF Connect. Le gabarit de départ de tout objet connecté basse …

  • system_off.c C

    Le nRF52840 descend à quelques microampères en System Off : seule la broche configurée en SENSE peut rallumer la puce. Ce programme s'éteint après un éclair de LED et se rallume à l'appui bouton — la…

  • watchdog.c C

    Le WDT du nRF52840 réinitialise la puce si le firmware ne « nourrit » pas le canal dans le délai : gels de boucle, deadlocks et pannes logicielles deviennent des redémarrages automatiques. Indispensa…

  • nvcu_storage.c C

    Le contrôleur NVMC permet d'écrire la flash applicative sans SoftDevice : ce programme persiste un compteur et une calibration dans la dernière page, effacée puis réécrite à chaque sauvegarde. Idéal …

  • app_timer_rtc.c C

    Le compteur RTC 32,768 kHz continue de tourner pendant le sommeil : app_timer planifie une callback à 1 Hz sans jamais bloquer le CPU, qui attend en WFE. C'est l'horloge de service de tout programme …

Exemples et dépôts trouvés en ligne