SparkFun Pro nRF52840 Mini - Bluetooth Development Board

The SparkFun Pro nRF52840 Mini is a breakout and development board for Nordic Semiconductor’s nRF52840 – a powerful combination of ARM Cortex-M4 CPU and 2.4GHz Bluetooth radio. With the nRF52840 at the heart of your project, you’ll be presented with a seemingly endless list of project-possibilities in an incredibly small package.

Our mini development board for the nRF52840 breaks out most of the critical I/O pins including GPIO and those needed for power while maintaining a small footprint that nearly matches that of the Arduino Pro Mini (except those covered by the Qwiic Connector). It features a USB interface (using the nRF52840’s native USB support), which can be used to program, power, and communicate with the chip making it able to be used for any purpose (UART, I2C, SPI) that those of the Arduino Pro Mini could. The Pro nRF52840 Mini features a Raytac MDBT50Q-P1M module. This module connects the nRF52840 to a trace antenna, fits the IC into an FCC-approved footprint, and also includes a lot of the decoupling and timing mechanisms that would otherwise be required for a bare nRF52840 design. Also included onboard is a LiPo battery charger, a Qwiic connector, an on/off switch, a reset switch, and a user LED/button.

The board comes pre-programmed with a USB bootloader. You can develop programs for the nRF52840’s Cortex-M4 using either Arduino, Circuit Python, or C (using Nordic’s nRF5 SDK), and load that compiled code using a USB serial or mass-storage interface.

  • ARM Cortex-M4 CPU with floating point unit (FPU)
    • 1MB internal Flash -- For all of your program, SoftDevice, and file-storage needs!
    • 256kB internal RAM -- For your stack and heap storage.
  • Integrated 2.4GHz radio with support for:
    • Bluetooth Low Energy (BLE) -- With peripheral and/or central BLE device support
    • Bluetooth 5 -- Mesh Bluetooth!
    • ANT -- If you want to turn the device into a heart-rate or exercise monitor.
    • Nordic's proprietary RF protocol -- If you want to communicate, securely, with other Nordic devices.
  • Every I/O peripheral you could need
    • USB -- Turn your nRF52840 into a USB mass-storage device, use a CDC (USB serial) interface, and more. This is a big add compared to the nRF52832!
    • UART -- Serial interfaces with support for hardware flow-control if desired.
    • I2C -- Everyone's favorite 2-wire bi-directional bus interface
    • SPI -- If you prefer the 3+-wire serial interface
    • Analog-to-digital converters (ADC) -- Eight pins on the nRF52840 Mini Breakout support analog inputs
    • PWM -- Timer support on any pin means PWM support for driving LEDs or servo motors.
    • Real-time clock (RTC) -- Keep close track of seconds and milliseconds, also supports timed deep-sleep features.
  • Peripheral-multiplexing -- (Nearly) any pin can support any of the above features.

SparkFun Pro nRF52840 Mini - Bluetooth Development Board Product Help and Resources

nRF52840 Advanced Development With the nRF5 SDK

November 29, 2018

Take your nRF52840 development to the next level -- build your applications with the nRF5 C SDK. This tutorial explains how to set up a development environment based around the GNU Arm Embedded Toolchain.

SparkFun Pro nRF52840 Mini Hookup Guide

November 29, 2018

A hardware overview and hookup guide for the SparkFun Pro nRF52840 Mini -- a breakout for Nordic's impossibly cool Bluetooth/ARM Cortex M4 SoC.

nRF52840 Development with Arduino and CircuitPython

November 29, 2018

How to use Arduino or CircuitPython to develop applications for the nRF52840 Cortex-M4 Bluetooth SoC.

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • The nRF52840 supports the Thread protocol. Are there any libraries available for Arduino or Circuit Python for Thread communication?

    • In the hookup guide linked under the Documents tab (it is under the product pricing and on the same line as the Description tab... it is kind of hidden with the white-on-white), there is a link to a followup guide for using Arduino and CircuitPython. It is also listed in the Tutorials tab listed above.

  • Not sure why I cannot run any of my Arduino scripts on the custom board we built using the schematics of the Sparkfun nrf52840 mini breakout board using the Arduino IDE!

    Note I am testing both, our custom board and the breakout board form Sparkfun. For both of the boards I am facing the same problem. The bootloader ( uploads on both the boards without any errors. I am following the exact steps I see on several tutorials online to upload the bootloader (for example: Arduino IDE detects the board too but then the code does not work! Not even a simple blink LED code. Also, the boards keep getting detected as USB drives all the time. Whenever I press the RESET button the board gets detected as USB drive a new window pops up. Most of the time I do not press anything and a new window pops up showing the board detected as a USB drive. This seems strange to me. Am I in a wrong mode of the board? Have I not uploaded the correct bootloader version or the bootloader itself?

    Other than the Arduino code not working I also have one more problem. I cannot get the Sparkfun board to get into the bootloader mode, how it normally should work when you press the RESET button or do the trick with the RESET button and the PIN13 button after which the blue LED7 starts blinking.

    Please assist if you know what's going on or have faced similar issues in the past. A prompt response is much appreciated!

    Thank you for reading.

    • I down graded to "0.2.9" version of the bootloader. Both the boards, Sparkfun Pro nrf52840 Mini and our custom board work now! Yayy! I can successfully run the bluetooth example which is on the tutorial page.

      Currently, I am trying to read the I2C buses, because that's where additional sensors are attached which we wish to read through the I2C port on the boards. If my understanding is correct the Wire library from Arduino can be used out of the box to do this, right? I do not need a special library to communicate with the I2C buses on the nrf boards? I am uploading this example on the nrf board to scan for I2C devices but no luck! Any suggestions??

  • I'm having trouble getting this board to work.

    Context: my app needs the latest version (at least SDK 15.3) from Nordic, which so far the current Adafruit bootloader doesn't support, so far as I know. (I can update later to show the message when trying to program softdevice using the current bootloader on the Sparkfun nRF52840 Mini.)

    More Context: I am old school, being used to programming an nRF52840 with a JLink debugger and the SWD header.

    So I already attached a header to the back of this SparkFun Pro nRF52840 Mini, and JLink was happy to flash both Softdevice and the app (made sure to use the new customized CFLAGS += -DBOARD_SPARKFUN_NRF52840_MINI in the Makefile).

    But, nothing happens and the DFU loader is wiped.

    There are two courses of action I suppose.

    • (1) One would be to flash a new DFU loader, namely an updated version of Adafruit's DFU loader for SDK 3.0 -- do you know if the procedure on Adafruit Github is valid for this? Right now, the Sparkfun board is bricked - but in principle, burning on the right code will restore things.
    • (2) The alternative is just to bypass the bootloader. That doesn't seem to be working. Although the flash appears to work (according to nrfjprog messages), no /dev/ttyACM0 appears and the code doesn't seem to be running.

    What would be recommended?

    Update: Compiling and flashing the usual Blinky, flashed using normal nrfjprog (with no Softdevice) does work - the LED blinks. Also an example using USB serial works. So the toolchain seems sound.

    Second Update. I got the Adafruit bootloader source to compile, but when I specified sparkfun_nrf52840_mini for the board, there were errors such as "at least two buttons required in the BSP" - possibly the unmodified github code is not aware of the two-button trick for this Sparkfun mini? I guess there would be a different branch or some other way to deal with this? Any pointers on what/where that might be?

  • Can I compile the examples with 8.2.1 gcc? I am seeing some linker library issues like libintl3.dll missing.

  • The bootloader doesn't seem to work for the latest softdevice version (which I need for my application). The adafruit conversion of nrfutil may be outdated and the notes on nrfutil suggest that a newer bootloader might be needed for new versions of softdevice (due to size). Is there a procedure to update the bootloader?

  • In the schematic it shows two unpopulated caps for the NFC interface. does this mean that if I place these, the NFC interface would work?

    • From the datasheet, I think that is the case, but I am not sure. Unfortunately, the engineer on this board has moved on to another company. For additional help, please head over to our new forums to post a topic for assistance. That being said, we don't really support that functionality, so you might be on your own to get that working.

  • Will this unit allow you to charge the lith battery while the on/off button is set to on and plugged into a pc or recharger? Thank you.

  • So are we out of luck if we would like to control this from a microcontroller's UART (to create BLE HID device)? I've tried other HID solutions, both classic and BLE, and they are, um, lacking.

    • Hey curious why you are saying that. I've bought this to build a HID BLE keyboard by connecting it to an I2C I/O expander. Have you tried the nRF5 SDK HID over GATT example ?

  • Worked really well; had it running the SF sketch in a matter of a half an hour. I only wish the Raytak module was available on it's own. They don't have any stock on any of the major distributor sites.

  • "Real-time clock" is a bit of a stretch -- it's actually a "Real-time counter" that counts pulses from the 32.768 kHz crystal, rather than a full-blown Real Time Clock Calendar which has hardware that translates the 32.768 kHz crystal oscillations into seconds-minutes-hours-days-months (and usually years), and usually a CPU chip that has a RTCC has provision for keeping power to the RTCC (and the 32.768 kHz oscillator) from something like a "watch battery" even when all other power is off.

    The Nordic Semiconductor data sheet (available here) (551 pages!) is really pretty clear about it being a "real-time counter".

    Although it has modes that draw less than 20 uA, if you're relying on a 500 mAh LiPo, how long the counter will "keep time" depends on the state of charge of the LiPo when it goes into "deep sleep" and can also be limited by the self-discharge of the LiPo.

  • I was hoping this board would be supported by the Zephyr Project. Is there any effort being put in to adding this board to the 300+ boards that are supported by Zephyr?

Customer Reviews

No reviews yet.