Arduino Nano RP2040 Connect review – Development board for IoT


The Arduino Nano RP2040 Connect is a powerful microcontroller board with WiFi and Bluetooth low energy, based on the RP2040 microcontroller from the Raspberry Pi Foundation. You can program the board in the Arduino ecosystem or with CircuitPython or MicroPython. For this Arduino Nano RP2040 Connect review we got to work with it.

Arduino Nano RP2040 Connect

9 Score 90 Score: 90

  • Pros
  • Arduino ecosystem
  • Extensive tutorials
  • CircuitPython with PIO
  • Negatives
  • Incomplete documentation
  • Not an official MicroPython
  • price

The RP2040 costs 29 euros and is the first microchip developed by the Raspberry Pi itself, and it forms the heart of the Raspberry Pi Pico introduced earlier this year. But the chip does not contain WiFi or Bluetooth, and the Raspberry Pi Pico is therefore a development board that you can compare with a classic Arduino from before the IoT breakthrough.

The makers of the Arduino have now built their own board around the RP2040 and added a u-blox NINA-W102 WiFi and Bluetooth radio module: the Arduino Nano RP2040 Connect. It also contains a motion sensor, a microphone and an RGB LED.

And of course you still have access to many gpio pins, allowing you to connect all kinds of external components to them. The board has the Arduino Nano format and is therefore relatively narrow, so that on a standard breadboard there is still two rows on one side and even three rows on the other side.

Compatible with Arduino IDE

Of course, the Arduino IDE the new sign. We tried this in version 2.0 beta 7. You need to install the Arduino Mbed OS Nano Boards core first. You can see that the sign is still new, because not all documentation is complete. Initially we were unable to upload a sketch to the Arduino Nano RP2040 Connect because the IDE did not detect the board.

After some searching, we discovered on the Arduino forum that you have to run a script once.

below Windows is that:

%APPDATA%Arduino15packagesarduinohardwarembed_nano2.1.0post_install.bat

Under Linux:

~/.arduino15/packages/arduino/hardware/mbed_nano/2.1.0/post_install.sh

And under macOS:

~/Library/Arduino15/packages/arduino/hardware/mbed_nano/2.1.0/post_install.sh

After we did that, the upload was successful.

Uf2 bootloader

Like the Raspberry Pi Pico, the Arduino Nano RP2040 Connect has a bootloader in the RP2040’s ROM that supports uf2 images (USB Flashing Format) for firmware. That is also the reason why while uploading your code in the Arduino IDE you will see the device mount as a storage device for a few seconds. After uploading, the storage device will unmount again.

Uf2 is a convenient and secure way to write firmware to the Arduino Nano RP2040 Connect without the need for development tools such as the Arduino IDE. To do this, disconnect the USB connection from the board, connect the GND and REC pins (under the Arduino logo on the bottom of the board) with a jumper wire and reconnect your board to your computer via USB.

The internal storage is now mounted. That works under Windows as well as Linux and macOS. Remove the jumper wire. You can now simply drag a uf2 file to the mounted storage and the firmware will be installed. In this way you can upload the uf2 version of an Arduino sketch, but also images of MicroPython or CircuitPython, for example.

Arduino IoT Cloud

Arduino focuses on IoT with this new board, and of course the integration with the Arduino IoT Cloud therefore important. We therefore created a Thing in this cloud service from the Arduino makers, and the board was immediately detected there. After selecting it as a device, Arduino IoT Cloud wrote the appropriate firmware to the board to securely communicate with the cloud service.

Then we defined variables in the Arduino IoT Cloud and added code to the created sketch to read out the motion sensor and control the LED. After we successfully uploaded this sketch, we were also able to view messages on the serial monitor. This all worked very easily in the web browser.

Arduino Nano RP2040 Connect Specifications

  • Processor: dual core ARM Cortex-M0+ 133MHz
  • RAM: 264 KB SRAM
  • Flash memory: 16 MB
  • Wi-Fi: 802.11b/g/n
  • Bluetooth: BLE 4.2
  • GPIOs: 22 (20 with PWM and 8 analog)
  • USB: micro usb
  • Secure element: ATECC608A-MAHDA-T Crypto IC
  • Motion sensor: LSM6DSOXTR (6-axis IMU)
  • Microphone: MP34DT05
  • Dimensions: 18 x 45 mm
  • Weight: 6g

Arduino Libraries

The board’s hardware is well supported by various Arduino Libraries. With the library SM6DSOX you can read the motion sensor, both the accelerometer for the position or movement of the sign and the gyroscope with which you detect rotations. You can read the mems microphone with the library PDM, which is automatically installed with the Arduino Mbed OS Nano Boards core.

For WiFi you use the library WiFiNINA and for Bluetooth low energy from ArduinoBLE. These are all libraries that also support other Arduino boards with the right hardware, so much of your programming knowledge from other Arduino boards can be reused for the Arduino Nano RP2040 Connect. Of course, standard libraries such as SPI, Wire (for I²C) and Serial (for UART) are also supported, so you can connect all kinds of external components to your board.

MicroPython and CircuitPython

You can also think of the Arduino Nano RP2040 Connect as a Raspberry Pi Pico with additional hardware, and MicroPython is a popular option. At the time of writing there is unfortunately no official MicroPython image for the board yet, but there is one of its derivative CircuitPython.

We installed CircuitPython 6.3.0 on the board, then mounted a storage device called met CIRCUITPY in which the file code.py can be found with a program that displays “Hello world”. We then started the Python editor Mu in CircuitPython mode. We could just save a simple CircuitPython script that makes the built-in LED blink in code.py on the storage device and the Arduino Nano RP2040 Connect LED started blinking.

CircuitPython also supports the RP2040’s Programmable IOs (PIO), a subsystem that allows you to write small programs for fast data transfer. After copying the library adafruit_pioasm.mpy from the Adafruit CircuitPython bundle of libraries to the directory lib in the storage device, we could Adafruit’s tutorial on RP2040 PIO with CircuitPython on the board to control the built-in LED. You can also do something similar for NeoPixels.

All in all, the Arduino Nano RP2040 Connect is a versatile development board for IoT applications. Thanks to Electronicsforyou.nl for making a review copy available!

.

Recent Articles

Related Stories