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

MakerDiarySoMlinux

⚡ The essentials in 60 seconds

In the crowded landscape of wireless development boards, the nRF52840-MDK from MakerDiary stands out as a compelling entry point for engineers and hobbyists interested in the Internet of Things. This open-source hardware platform is built around the Nordic Semiconductor nRF52840, a highly integrated system-on-chip that serves as the brain of the operation. To understand what this board offers, one must first appreciate the silicon at its core. The nRF52840 features an Arm Cortex-M4 processor running at 64 MHz. For those less familiar with embedded systems, a Cortex-M4 is a 32-bit microcontroller architecture designed for efficiency and real-time control, and the "FPU" designation means it includes a Floating Point Unit, allowing it to handle complex mathematical calculations involving decimals much faster than older chips that could only process whole numbers. This processing power is paired with 1 MB of flash memory for storing your program and 256 KB of RAM for temporary data, providing ample space for sophisticated applications that would overwhelm smaller microcontrollers.

The true strength of the nRF52840-MDK lies in its radio capabilities, which are managed by a multiprotocol 2.4 GHz transceiver. This means the board can communicate using several different wireless standards without needing additional hardware. It supports Bluetooth Low Energy, which is widely used for connecting wearables and sensors to smartphones, as well as Bluetooth Mesh for large-scale lighting or sensor networks. It also handles IEEE 802.15.4, the underlying standard for protocols like Thread and Zigbee, which are popular in smart home automation. Additionally, it supports ANT, a protocol common in fitness equipment, and allows for proprietary 2.4 GHz communication. With a transmit power of +8 dBm, the board can maintain robust wireless links over reasonable distances. Security is also a priority, with hardware-accelerated encryption provided by the Arm TrustZone and CryptoCell 310 subsystem, ensuring that sensitive data, such as passwords or authentication keys, is protected at the hardware level.

What makes the MDK particularly user-friendly is its integrated debugging and programming interface. Unlike many development boards that require you to purchase a separate external programmer to flash code or debug errors, the nRF52840-MDK includes a built-in DAPLink debugger. This technology allows for drag-and-drop programming, where the board appears as a removable drive on your computer, and you simply copy a compiled file onto it to update the firmware. It also provides a virtual COM port for serial communication, letting you see debug messages from your code in real-time. A clever aspect of the board’s USB architecture is the use of a Microchip USB hub controller. This setup allows the nRF52840’s own native USB controller to be exposed directly to the host computer, in addition to the debugger. This is crucial for applications where the device itself needs to act as a USB peripheral, such as a custom keyboard, a mouse, or a USB sniffer for network analysis.

The physical design of the board is pragmatic and developer-focused. It measures just 50 by 23 millimeters, making it compact enough for tight enclosures, yet it features dual 18-pin headers that are spaced to be compatible with standard breadboards. This allows for easy prototyping without soldering. Up to 24 of the chip’s general-purpose input/output pins are broken out to these headers, giving you plenty of flexibility to connect sensors, actuators, and other peripherals. For wireless performance, the board includes an on-board chip antenna, which is ideal for most indoor applications. However, for projects requiring longer range or specific antenna placements, there is a U.FL connector that allows you to attach an external antenna. This flexibility is rare at such a low price point. Power management is handled by a 3.3-volt regulator capable of delivering up to 1 amp of peak current, and the board can be powered via USB or an external voltage source between 1.7 and 5.5 volts. It is important to note that while the board is power-efficient, it does not include a battery charging circuit or a holder for coin-cell batteries, so users planning for battery-powered deployments must design their own power supply and management circuitry.

Software support for the nRF52840-MDK is extensive, reflecting the popularity of the Nordic nRF52 series. The board is fully supported by the Zephyr RTOS, a modern, scalable real-time operating system that is becoming the industry standard for embedded development. It is also compatible with the legacy nRF5 SDK from Nordic, as well as the newer nRF Connect SDK. For developers who prefer higher-level abstractions, there are community-supported options for Rust and TinyGo, and the board can be used with Apache Mynewt and RIOT OS. While there is no official Arduino core provided by MakerDiary, the generic nRF52 Arduino support can often be configured to work with this board, though it requires some manual setup. Similarly, while CircuitPython is a popular choice for rapid prototyping, there is currently no official build for this specific board, so users should be aware of this limitation if they rely on that ecosystem.

Despite its strengths, potential users should be aware of some documented challenges. The project’s GitHub repository has not been actively updated since 2021, which means some example code and documentation may be outdated relative to the latest versions of Zephyr or the nRF Connect SDK. Users have reported issues with USB enumeration on certain operating systems, particularly macOS, where the board might not be immediately recognized. Additionally, flashing code using the drag-and-drop method requires careful attention to merging the SoftDevice (the Bluetooth stack) with the application code before copying it to the drive; failing to do so is a common source of confusion for beginners. There is also a known risk when flashing the UF2 bootloader on the USB Dongle variant, which can potentially brick the device if not done correctly. Nevertheless, the nRF52840-MDK remains a powerful, cost-effective, and versatile tool for anyone looking to dive into low-power wireless development, offering a professional-grade feature set in a small, open-source package.

Forum (1 topic) →

AttrSpecsverified
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).? unverified
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).? unverified
securityArm TrustZone + CryptoCell 310 hardware crypto subsystem (board wiki; "TrustZone® Cryptocell 310 Security Subsystem" in MakerDiary's product feed).? unverified
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).? unverified
gpioNordic's table lists 48 GPIOs for the nRF52840 (package-dependent, QFN48 / WLCSP).? unverified
supply_voltage1.7 v? unverified
temperature−40 °C to +85 °C (Nordic table).? unverified
debuggerintegrated DAPLink — MSC drag-and-drop programming, CDC virtual COM port, HID/WEBUSB-HID CMSIS-DAP debug channel.? unverified
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.? unverified
external_flashultra-low-power 64-Mbit (8 MB) QSPI FLASH.? unverified
antennaon-board 2.4 GHz chip antenna, with U.FL connector selectable for an external antenna (antenna selection for custom applications).? unverified
user_i_oprogrammable user button, RGB LED, IF Boot/Reset button.? unverified
power3.3 V regulator with 1 A peak output, VBUS & VIN power-path management.? unverified
mechanicalbreadboard-friendly dual 18-pin headers; 50 × 23 × 13 mm with headers soldered (wiki).? unverified
sensorsnone on-board — the hardware feature list contains no environmental or motion sensor (wiki, 2026-10-14).? unverified
  • Manufacturer: MakerDiary (Shenzhen), open-source hardware; repo MIT-licensed, "Copyright (c) 2019 makerdiary.com" (, fetched 2026-10-14).
  • Year: GitHub repository makerdiary/nrf52840-mdk created 2018-07-06, first issues opened early 2019 (API created_at: 2018-07-06T01:52:11Z, fetched 2026-10-14). Retail listings (Seeed p-3079, Amazon B07MPPHY5B) date from the 2018–2019 window ( "available on the following channels").
  • Status (2026-10-14): Active / current. Listed on MakerDiary's own shop feed (fetched 2026-10-14) as "nRF52840-MDK IoT Development Kit" at €29.90, alongside the nRF52840 MDK USB Dongle (PCBA) at €12.99 and w/ Case at €19.90.
  • Launch price:
  • Variants: - nRF52840-MDK V1.0 — the header board documented here (only hardware revision released; the wiki's Hardware Resource table lists V1.0 only, ). - nRF52840 MDK USB Dongle (PCBA and w/Case) — USB-key form factor, ships with a UF2 bootloader, chip antenna, marketed for Bluetooth 5.4 / mesh / Thread / Zigbee / ANT and as a BLE/802.15.4 sniffer with Wireshark (, fetched 2026-10-14). - Sibling nRF52840 boards from the same vendor (not MDK): nRF52840 Connect Kit, nRF52840 M.2 Module / Developer Kit, Pitaya Go (shop feed, 2026-10-14). The older nRF52832-MDK (V1/V2) is the 51-series predecessor .

+ Strengths

  • Fully integrated debugger at a low price — DAPLink (MSC+CDC+CMSIS-DAP) behind a Microchip USB HS hub, so the nRF52840's own USB controller is also exposed; Nordic's own DKs cost several times more (€29.90 vs. Nordic DK pricing, shop feed 2026-10-14).
  • Antenna flexibility: on-board chip antenna plus U.FL for an external antenna, selectable — rare at this price point.
  • 64-Mbit external QSPI flash for OTA staging / data logging (wiki).
  • Hardware security: TrustZone + CryptoCell 310 (wiki) — used by the OpenSK FIDO2 authenticator project on the MDK family .
  • Open source: MIT-licensed repo with V1.0 schematic, board file, pinout PDF and 3D STEP downloads (wiki Hardware Resource).
  • Multiprotocol: BLE 5, Bluetooth Mesh, Thread, Zigbee, ANT, 2.4 GHz proprietary from one €30 board (wiki); the USB-dongle sibling doubles as a Wireshark BLE/802.15.4 sniffer (dongle wiki).
  • Breadboard-friendly dual 18-pin headers, 50 × 23 mm (wiki).

− Weaknesses

  • USB enumeration failures: "USB port not recognized" (#53, 2022) and "Board and DAPLink does not show up at all on Mac" (#37, 2020) — the DAPLINK drive never appears on some hosts.
  • macOS quirks: "nRF connect does not recognise 'makerdiary' device on MacOS" (#47).
  • Stale examples/toolchain drift: repo last pushed 2021-05-28 (GitHub API, fetched 2026-10-14); "bluetooth peripherial_hr sample not compiling" (#55) against 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 not sticking: "after make flash the code is not uploaded on board" (#31); SoftDevice+app hexes must be merged with mergehex before drag-and-drop (getting-started note) — a frequent self-inflicted variant of this.
  • BLE/USB samples gaps: "MAC address is 00:00:00:00:00:00" in hci_usb (#57); "USB_DEVICE_VID not set" (#56).
  • I²C oddity: "Peculiar i2c issue" (#44).
  • External antenna usage under-documented: "How to use external antenna?" (#51) — the U.FL path exists but the selection procedure is thin in the docs.
  • OpenOCD with on-board DAPLink: maintainer of the Rust BSP "was unable to get this working with the openocd that ships with ubuntu 18.04" and moved to J-Link ( README).
  • USB Dongle variant — bricking risk: flashing the UF2 bootloader hex via the DAPLINK drive can leave the dongle in a bad state ("Bricked device", Nordic DevZone, ).
  • Windows < 10 needs the Arm Mbed serial driver for the CDC port (getting-started).
  • No official Arduino/CircuitPython support (see Systems; CircuitPython board page 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

Community feedback and projects

  • OpenSK FIDO2 security key

    OpenSK FIDO2 security key — Google's open-source FIDO2 authenticator runs on the (unverified au 2026-10-13) — internal hosted on internal site, live status verified on 2026-10-13. Project documented in the nrf52840-mdk (SoM) datasheet; role: deepen hands-on e…

  • USB enumeration failures: "USB port not recognized" (#53, 2022) and "Board and DAPLink does not show up at all on Mac" (#37, 2020) — the DAPLINK drive never appears on some hosts.
  • macOS quirks: "nRF connect does not recognise 'makerdiary' device on MacOS" (#47).
  • Stale examples/toolchain drift: repo last pushed 2021-05-28 (GitHub API, fetched 2026-10-14); "bluetooth peripherial_hr sample not compiling" (#55) against 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 not sticking: "after make flash the code is not uploaded on board" (#31); SoftDevice+app hexes must be merged with mergehex before drag-and-drop (getting-started note) — a frequent self-inflicted variant of this.
  • BLE/USB samples gaps: "MAC address is 00:00:00:00:00:00" in hci_usb (#57); "USB_DEVICE_VID not set" (#56).
  • I²C oddity: "Peculiar i2c issue" (#44).
  • External antenna usage under-documented: "How to use external antenna?" (#51) — the U.FL path exists but the selection procedure is thin in the docs.
  • OpenOCD with on-board DAPLink: maintainer of the Rust BSP "was unable to get this working with the openocd that ships with ubuntu 18.04" and moved to J-Link ( README).
  • USB Dongle variant — bricking risk: flashing the UF2 bootloader hex via the DAPLINK drive can leave the dongle in a bad state ("Bricked device", Nordic DevZone, ).
  • Windows < 10 needs the Arm Mbed serial driver for the CDC port (getting-started).
  • No official Arduino/CircuitPython support (see Systems; CircuitPython board page 404).

Code library — examples written for this board

  • led_blink.c C

    The low-level hello world of the nRF52840: the LED blinks by writing GPIO registers directly, with no SDK and no clock setup. Understanding OUTSET/OUTCLR and PIN_CNF is the foundation of everything N…

  • bouton_gpiote.c C

    Instead of polling the button, GPIOTE raises an interrupt on the falling edge and wakes the CPU: the main loop sleeps in WFE between presses. The power-frugal default pattern on the nRF52840.

  • console_uart.c C

    The serial console rides the UART wired to the MDK debugger: lightweight printf, echo of received characters, tick counter. The first debugging tool of any nRF project, no JTAG probe needed.

  • adc_saadc.c C

    The nRF52840 SAADC measures with the 0.6 V internal reference and fractional gain: halving the LiPo battery lets 0-3.3 V on the pin reconstruct 0-6.6 V. The base of any battery-powered monitoring des…

  • pwm_fade.c C

    The nRF52840 hardware PWM produces the breathing effect with no CPU involvement: a two-value sequence replayed 40 times per brightness step. LED P0.06 fades smoothly at an inaudible 25 kHz.

  • ble_nus.c C

    BLE is the nRF52840's reason to exist: this sketch advertises a name, exposes the Nordic UART Service and pushes text frames to the nRF Connect app. The starting template of any low-power connected o…

  • system_off.c C

    The nRF52840 drops to a few microamps in System Off: only a pin armed with SENSE can power the chip back up. This sketch dies after an LED flash and wakes on a button press — the base of a coin-cell …

  • watchdog.c C

    The nRF52840 WDT resets the chip unless the firmware feeds its channel in time: frozen loops, deadlocks and software stalls become automatic reboots. Essential inside a sealed enclosure.

  • nvcu_storage.c C

    The NVMC controller lets application flash be written without the SoftDevice: this sketch persists a counter and a calibration in the last page, erased and rewritten on each save. Ideal for rememberi…

  • app_timer_rtc.c C

    The 32.768 kHz RTC keeps counting during sleep: app_timer schedules a 1 Hz callback without ever blocking the CPU, which waits in WFE. It is the service clock of any battery-powered nRF52840 program.

Examples and repos found online