Arduino Nano RP2040 Connect (Review)
on
In January 2021 the maker scene was taken by surprise when Raspberry Pi launched their Pico Board and their brand-new RP2040 microcontroller. A few months later Arduino too announced an RP2040-based board: the Arduino Nano RP2040 Connect.
The Arduino Nano RP2040 Connect continues where Raspberry Pi left off when they decided not to put wireless connectivity on the Pico Board. Understandable, as it would have bumped the price up, but felt as a missed opportunity by many. Therefore, the “Connect” comes equipped with a u-blox NINA-W102 Wi-Fi and Bluetooth radio module. This is a module from the same manufacturer as found on the Arduino Nano 33 BLE.
Besides wireless connectivity, the Connect has a microphone and a six-axis smart motion sensor with AI capabilities. An RGB LED is available too. 22 GPIO ports, 20 with PWM support and six analogue inputs (eight if you count the I2C bus), let the user control for instance relays, motors and LEDs and read switches and other sensors.
Program memory is plentiful, with 16 MB of flash memory, more than enough for storing many webpages or other data.
The Arduino Nano RP2040 Connect is “Raspberry Pi Compatible”, meaning that it has not only support for the entire RP2040 software ecosystem but also full support for MicroPython. At the same time, the board supports the Arduino programming language, the IDEs v1 and v2 and all the libraries that come with that. Finally, the Connect is fully compatible with Arduino Cloud and the Arduino IoT Remote smartphone app.
Wi-Fi and Bluetooth
Wireless connectivity is provided by a NINA-W102 module from u-blox (Figure 1). According to its datasheet this module is a stand-alone multi-radio MCU module that integrates a powerful microcontroller and a radio for wireless communication. It has what they call at u-blox an open CPU architecture. This means that it is up to the user to write all the software for it. Out of the box it does nothing. Basically, the NINA-W102 is yet another ESP32 module in a tin can with an antenna.
Now that we know this, we suddenly realize that the Arduino Nano RP2040 Connect is way more powerful than we initially thought as it not only has an RP2040 with two Cortex-M0+ cores but also a dual-core ESP32 and Wi-Fi and Bluetooth. All the Wi-Fi or Bluetooth stuff that you would normally do on an ESP32 module will also run on the NINA module and so the RP2040 can be used for other tasks.
Board Overview
Looking at the block diagram of the Connect (Figure 2) we see that the two MCUs share an I2C bus to which the inertial measurement unit (the IMU) and the authenticator device (a.k.a. secure element) are connected, so both MCUs can use these. The two MCUs are also interconnected by means of a shared SPI/UART bus.
The board’s RGB LED is connected to the ESP32, I mean NINA module, while the microphone is connected to the RP2040. The extension connectors (Figure 3) too are connected to the RP2040, except for pins A6 and A7 which are connected to the ESP32. Note that the analogue pins A4 and A5 are reserved for the I2C bus, they have 4k7 pull-up resistors, and they are wired to both MCUs. This is also the case for the QSPI_CSn pin which is labelled REC on the board but Reset on the pin-out diagram.
The Arduino Nano Family
Actually, the Connect seems to be a kind of upgraded or improved version of the Arduino Nano 33 IoT board. This board too combines an ARM Cortex-M0+ processor with a u-blox NINA W102 wireless module. However, its processor, a SAMD21, is a single-core device instead of a dual-core and the board doesn’t have the RGB LED and the microphone. It also has less memory, and it is slower.
On the software side of things, however, the Connect is lumped together with the Arduino Nano 33 BLE. This board also has a u-blox NINA module, but one based on an nRF52840 MCU from Nordic Semiconductor and there is no second MCU. Also, it does not have Wi-Fi, only Bluetooth.
Together with the Nano 33 BLE Sense, the Connect and the “BLE” make up the Mbed OS Nano family (Figure 4). It is not clear to me why the Nano 33 IoT isn’t part of this family. (Not enough memory?) Actually, I feel that the Arduino Nano RP2040 Connect should have been called the Nano 33 Connect, but replacing the ‘33’ by ‘RP2040’ may help boost sales.
Software Support
Being an Arduino board, the Connect integrates seamlessly into the Arduino IDE. However, at the time of writing this article there doesn’t seem to be any support for using the RP2040’s two cores and there is nothing else RP2040-specific either like support for its PIO blocks or the interpolator. The examples are all generic Arduino examples that run on many boards. There are a few tutorials that explain how to use the microphone or the IMU, but nothing that will only run on an RP2040, which I find a bit disappointing.
I mean, why put an RP2040 on the board if you don’t provide any support for it? Without it, the board would simply be a Nano Connect with similar specifications and capabilities. The RP2040 seems to be mainly an I/O extender for the ESP32 to meet the Nano form factor. Also, it allows the board to be Mbed OS compatible because the ESP32 is not, as it is not an ARM processor (only ARM-based boards can be Mbed OS compatible). But those goals could also have been achieved by using a, say, Cortex-M7 MCU instead of an RP2040. And then call it something like Arduino Portenta.
The Big Maker Four
The Arduino Nano RP2040 Connect combines four big names from the embedded maker scene – Arduino, Raspberry Pi, ESP32 and Mbed OS – into a single module, which is quite interesting. It shows a will to combine the best of open source instead of trying to keep everything proprietary as large semiconductor manufacturers are inclined to do.
Summarizing
So, summarizing, the Connect is a small yet very powerful microcontroller module with lots of possibilities for the price of an (official) Arduino Uno. If you are looking for a not too expensive board with Wi-Fi and/or Bluetooth and capable of running Mbed OS for some IoT application, then the Connect is a valid option. If, on the other hand, you are looking for a way to play with the RP2040 inside the Arduino IDE, then you are probably better off with the much cheaper but slightly bigger Raspberry Pi Pico board, which, BTW, can also run Mbed OS. For dual-core and all other RP2040-specific things, install Earle Philhower III’s Arduino IDE Boards package, it supports the Connect too.
Discussion (0 comments)