When you think of an Arduino, the first board in your head should be the classic Arduino Uno, with its Atmel microcontroller. You wouldn’t think of an Arduino powered by ‘Pi Silicon’ but the latest of the first wave of RP2040 partner boards is the Arduino Nano RP2040 Connect and this is the board we’ve been waiting for. You can see that the Arduino Nano RP2040 Connect is the only partner board with built-in Wi-Fi and Bluetooth. Neatly integrated into the familiar Nano layout is a Nina W102 uBlox Wi-Fi module that provides 2.4GHz Wi-Fi, Bluetooth Low Energy, an IMU that can detect motion and gestures, and a microphone that can be used to adjust audio levels. measure and, more importantly, used in machine learning projects.
Should the Arduino Nano RP2040 Connect be the heart of your next project? Well, that depends on your needs and budget. If you like blinking LEDs and getting things moving, a $4 Raspberry Pi Pico is more for you. But if you want to build Internet of Things (IoT) devices with a web interface, Arduino’s latest board might be just what you’re looking for. But we don’t really understand how a board works, and more importantly how it is supported until we use it, and we will use it!
Arduino Nano RP2040 Connect Hardware Specifications
|System on chip||RP2040 microcontroller chip designed by Raspberry Pi|
|Dual-core Arm Cortex M0+ processor, flexible clock speed up to 133MHz.|
|264 KB SRAM and 4/16 MB internal Flash memory|
|GPIO||22× multi-function 3.3V GPIO pins|
|1 × SPI, 1 × I2C, 1 × UART, 8 × 12-bit ADC, 20 × controllable PWM channels|
|8× Programmable I/O (PIO) state machines for custom peripherals.|
|1x User LED (GPIO 13)|
|RGB LED, only accessible via the Nina W102 module.|
|Die-cast module allows direct soldering to carrier plates.|
|Additional Features||Nina W102 uBlox WiFi module|
|ST LSM6DSOXTR 6-axis IMU|
|ST MP34DT06JTR MEMS Microphone|
|ATECC608A-MAHDA-T cryptographic coprocessor|
|Dimensions||1.77 x 0.7 in (45 x 18 mm)|
Design and Use of the Arduino Nano RP2040 Connect
The design of the Arduino Nano RP2040 Connect is clearly based on Arduino’s Nano range of boards such as the Nano 33 IoT and Nano Every. The Nano range of boards share the same pinout, allowing the Arduino Nano RP2040 Connect to be a drop-in replacement for other Nano boards. The bare board has the jagged edges that have become the norm for an RP2040 board, and the bottom of the board is unpopulated, allowing it to be soldered to the surface in a project. Out of the 22 GPIO pins we have 20 pins that can be used for PWM and of those we have 8 analog inputs, the most from any RP2040 board as the Pico comes with three and most third party RP2040 boards have four . If you are looking for the I2C pins, they are hidden on pins A4 and A5 and the onboard IMU can be accessed on the I2C bus.
The eagle-eyed among you will have noticed a micro USB connector, which is common on many newer Arduino boards. We would have liked to see a USB-C connector as it provides a watertight connection and the mechanical connector is stronger than micro USB. Since this is the most expensive RP2040 board, we think Arduino could have included it without impacting the overall cost.
The great feature of the Arduino Nano RP2040 Connect is Wi-Fi, and the Nina W102 chip provides us with 802.11 b/g/n 2.4GHz Wi-Fi and Bluetooth 4.2. The antenna is located opposite the micro USB port. The Nina W102 chip is itself a powerful microcontroller with 520 KB SRAM and a 240 MHz 32-bit Dual Core Xtensa LX6 CPU, but in this board it has been relegated to handling communications.
Since this is an Arduino, our natural inclination is to use the Arduino IDE, and with a recent update with official support for the RP2040 to the IDE, we can easily create projects. We tested the Arduino Nano RP2040 Connect with the Arduino 1.8.15 and 2.0 beta 7 IDE and after installing the board via the board manager we were able to flash the sample cutter sketch to prove we had connectivity. To access WiFi we had to install the WiFiNINA library and then create a secret file with our WiFi credentials. We ran the Simple Web Server WiFi example and it flashed with no problems, but we later found out that we had to change the default GPIO pin used in the example from 9 to “LED_BUILTIN” to access it via a web interface.
The connection details should show up in the serial monitor, but whatever we did, we couldn’t connect to the serial monitor and all we saw was an error informing us that the port was busy. This is not unique to the Arduino Nano RP2040 Connect; we have seen this behavior with other RP2040 boards and the Arduino IDE. Our only solution was to close the Arduino IDE and use another application to open a serial terminal. The same issue affected our test of the IMU, so we opened the serial terminal, reset the board, and saw raw accelerometer data scrolling across the screen. Later we found out that the problem was with our operating system, Ubuntu 18.04, we had to uninstall modem manager to see the serial data on the port. This issue does not affect our other official and clone boards.
We also tested the built-in microphone, the same model used in the Nano 33 IoT. We followed the official documentation to flash the test sketch to the Arduino Nano RP2040 Connect and then opened the serial plotter hoping to see a visualization of sound. Unfortunately, we only saw a constant flatline value of -128. We were unable to find any guidelines to resolve this issue.
We had other issues using Arduino’s IoT Cloud, a service we’ve used before with MKR WIFI 1010 and Nano 33 IoT cards. our Arduino Nano RP2040 Connect was detected but could not be configured. We followed the official documentation, which at the time of writing appears incomplete and is still empty. This is a real shame, as the IoT Cloud is Arduino’s new service that allows IoT “Things” (projects) to be created and managed through a web interface. They are probably teething problems for now, and something that will be fixed in the future. For now, the savvy maker sticks to the desktop IDEs.
You probably think this is an RP2040 so I can use other programming languages? Correct! We can use CircuitPython and MicroPython with the Arduino Nano RP2040, the caveat is that you need to find your own libraries for the built-in microphone, IMU and WiFi. There is a quirk between the pin numbering and the actual GPIO number. The Arduino pin number used for a pin in the Arduino IDE is say D2, but the RP2040 pin is GPIO25. Another example is the built-in LED is D13, but in our MicroPython tests it was GPIO 6.
We tested the Arduino Nano RP2040 Connect with CircuitPython and it was a much more pleasant experience and thanks to the abundance of libraries, especially the ESP32SPI library, we quickly had the Arduino Nano RP2040 Connect online and receiving data from an external API. We also tested with MicroPython and it behaved much the same as a Raspberry Pi Pico, but we didn’t have any drivers to use the built-in Wi-Fi.
This is where we noticed a quirk that prevented us from getting the board ready to accept new firmware. Normally we would reset the board and press BOOTSEL. For the Arduino Nano RP2040 Connect, we would double press the reset button, but this didn’t work. After asking for help on Twitter, we were told we could connect the REC and GND pins together to force the board into mode.
Use Cases for the Arduino Nano RP2040 Connect
The most obvious use case is an IoT device and this is made quite easy via the Arduino IoT Cloud. With the IoT Cloud, we can quickly create GUI applications to read data from an external device. For example, we can create a weather station using the Arduino Nano RP2040 Connect and have live data streamed to the cloud that can be accessed from any device with an internet connection.
The same Arduino IoT Cloud UI can be used to remotely control the Arduino Nano RP2040 Connect. For example, a web-enabled robot wouldn’t be much more difficult to build than a non-web-enabled robot.
If you are not an Arduino IoT Cloud user, you can still get the most out of this board using the traditional IDE. There are libraries available for HTTP, MQTT and Bluetooth that have been around for a while and can be ported to run on the RP2040. With these libraries we can build web-based robots, wireless weather stations, etc.
It comes down to the price. If you need Wi-Fi and the RP2040, the Arduino Nano RP2040 Connect is a solid piece of hardware, but it’s more expensive than every other RP2040 solution we’ve tested, including buying a Raspberry Pi Pico and a Pimoroni Pico Wireless. The extra cost gives us access to GPIO pins, which unfortunately are blocked with the Pico Wireless. If you need the smallest package possible for an embedded IoT project then this could be the board, but at the moment the documentation is not up to the usual Arduino standards despite being the last board in the first wave of RP2040 -powered devices.
With the additional analog inputs, the Arduino Nano RP2040 Connect has the most of any RP2040 device, useful for connecting many different components. The smart money for those looking to connect their RP2040 project to the world is with this board, but for how long? Seeed’s proprietary RP2040 board comes with Wi-Fi and is expected to sell for half the price of the Arduino.