Tom's Hardware Verdict
Both boards are exceptionally well made and the Minima is a perfect replacement for the original Uno. When software support is ironed out for the Arduino Uno R4 WiFi, it will be a sublime experience.
Arduino Uno form factor
Great build quality
Clear GPIO silkscreen
Third-party software support is playing catch up
Qwiic connector introduces issue for existing libraries
Why you can trust Tom's Hardware Our expert reviewers spend hours testing and comparing products and services so you can choose the best for you. Find out more about how we test.
Update 7/14 03:39 PT:
Arduino dropped us a tweet to say that Arduino Uno R4 WiFi is now supported in the Arduino Cloud. We have re-tested and confirmed that we can make a "thing" (Arduino Cloud parlance for an IoT device) and have updated the relevant section of this review. The final score remains the same.
Despite its age, the Arduino Uno, the most famous board in the range, is still seen as the go to board for makers. In its first decade it has powered countless projects, both great and small. The Uno has seen many variations, but at its heart has been the Atmel chip, until now.
The Arduino Uno R4 series features a new Arm-powered heart and the same CPU across two boards. The most basic board is the $20 Arduino Uno R4 Minima, essentially the next generation Arduino Uno, but at the other end of the scale is the $27 Arduino Uno R4 WiFi, which features an onboard ESP32 co-processor. An ESP32 co-processor just for Wi-Fi may seem like overkill, it can run at up to 240 MHz versus the Renesas RA4M1 Arm Cortex M4’s 48 MHz, but the ESP32 has proven to be a rock solid board to build with. We just have to look across our bench to see the many boards based upon it.
Are these new Arduino boards worth the dollars in your pocket, or should you just buy a Raspberry Pi Pico W? To learn that and more we need to put both of the boards on the bench and run a few tests.
Arduino Uno R4 Specifications
|Header Cell - Column 0||Arduino Uno R4 Minima||Arduino Uno R4 WiFi|
|Microcontroller||Renesas RA4M1 (Arm Cortex-M4 running at 48 MHz)||Renesas RA4M1 (Arm Cortex-M4 running at 48 MHz)|
|Wi-Fi||N/A||ESP32-S3 running at up to 240 MHz, 384KB ROM, 512KB SRAM|
|Storage||256KB Flash||256KB Flash|
|GPIO||14 x Digital IO, 6 x PWM, 6 x Analog, DAC||14 x Digital IO, 6 x PWM, 6 x Analog, DAC|
|I2C, SPI, CAN, UART||2 x I2C, SPI, CAN, UART|
|12 x 8 LED Matrix|
|USB||USB C||USB C|
|Power||6-24V Input voltage||6-24V Input voltage|
|Row 9 - Cell 0||5V Operating voltage, 8mA per GPIO pin||5V Operating voltage, 8mA per GPIO pin|
|Dimensions||68.85 x 53.34mm||68.85 x 53.34mm|
Getting Started With the Arduino R4 Boards
Opening the box of a new Arduino is something that we will never forget. From our first R2 board until today. We don’t do unboxing videos and they don’t factor in our review, but the experience is sublime. Minimal packaging that also displays the basic specifications of the boards. The boards come pre-soldered (unlike the Raspberry Pi Pico) and are dark blue in color, in fact they are of a darker hue than our Arduino Uno R2 board. Both boards share the distinctive Uno layout, and that means we can connect Shields (Arduino parlance for add-on boards, Raspberry Pi uses HATs) to our Uno R4, but more on that later.
Arduinos come pre-flashed with a simple test script. For the Minima we have the classic “Blink” sketch (Arduino parlance for project code) which sees an LED flash on / off every second. For the R4 WiFi we see a 12 x 8 LED matrix dominate the board. The matrix shows a brief Tetris animation before running through a series of geometric animations.
Making GPIO connections is super easy. GPIO pin references are clearly printed on the female headers and the PCB. This is exceptionally useful for those new to electronics. The Raspberry Pi Pico has GPIO references printed on the underside of the board and that can get confusing. Connecting the R4 Unos to our computer relies on a USB C data cable and the Arduino IDE.
Programming the Arduino Uno R4 Boards
The Arduino IDE has been with us since the early days of the boards; heck we’ve been using it for 10 years now. In the last year Arduino has updated its offline Arduino IDE. Now at version 2.1.1, the Arduino IDE is a fantastic improvement over past iterations. Not that we have any issues with the old IDE, it served us well and it still works with these new boards.
Installing the Arduino IDE and connecting the Arduino Uno R4 boards to the computer, and we see the IDE detect and configure the boards for use. It even downloaded the latest drivers and configuration for the new boards. After that we ventured into File >> Examples and selected a series of example sketches for the boards.
Starting with the Minima, we updated the standard Blink sketch to use a for loop that would blink the LED a few times before stopping, then repeating. Flashing the code took under 30 seconds and all was good. For the R4 WiFi, we chose to use an example that uses the ESP32’s Wi-Fi connectivity along with the R4’s Arm CPU. The onboard ESP32 is an incredibly powerful microcontroller in its own right, but acting as a co-processor it offloads all of the networking that would slow down the 48 MHz Arm CPU.
The goal of the web example is to create a web server and host a simple HTML page that we can use to control the status of the onboard LED. The example can either be its own Wi-Fi access point, or we can assign it to our existing network. We chose the latter and after adding our Wi-Fi details we then flashed the board and went to Arduino Uno R4 WiFi’s IP address. Clicking the On / Off text then triggered the LED to change state.
With the tests out of the way, we can be a little more adventurous. How about a web controlled motor? Using the example code, with a slight tweak for the GPIO pins, we connected a DC motor to the Arduino via a Cytron Maker Drive motor controller. The Arduino GPIO can only supply 8mA per GPIO pin, nowhere near what a motor requires. With the connections made we flashed the code, then went back to the browser. A press of the text and the motor sprang to life, then we pressed the other text element to turn it off and then we realized that we had forgotten to change the GPIO pin. A quick tweak and flashing the code to the Arduino saw the problem resolved.
Using Shields with an Arduino, we benefit from ready-made platforms on which we can base our projects. We have Shields for Ethernet, LCD screens, Audio Synths and we even made our own Shield to flash ATTiny85 microcontrollers. These same shields are electrically compatible with the Arduino R4 boards, but the caveat is that the software may require some tweaking. It will eventually catch up, but you may have to get your hands dirty to make things work, something we’ll cover later.
We connected up a Maplin (a long since closed UK electronics store) branded touch shield and flashed some code to enable the embedded MPR121 capacitive touch sensor. Opening the Serial Monitor and we saw our keypresses being registered. We then connected our Audio Synth Shield, the same one that we hand soldered for our Make Your Own Uno Kit review. Flashing the test sketch and we soon had a “musical instrument” with which to inflict our brand of music on our poor neighbors.
The Arduino Uno R4 WiFi’s 12 x 8 LED matrix is a simple affair. Instead of individual addressable RGB LEDs we have a matrix made from a series of red LEDs. Controlling the LEDs can be done in code, by creating a series of arrays in a file called Animation.h. We can create these using a web application, saving the arrays to a text file which we then paste into the code. There is also a web app which uses web serial in the browser to connect to an Arduino Uno R4 WiFi running a specific sketch. Using this web app we can “paint” the LEDs on or off. Great fun for demonstrating the LED matrix, and surely the spark of an idea for future maker projects.
Arduino Uno R4 WiFi Qwiic I2C Issues
This issue only applies to the Arduino Uno R4 WiFi, and the sole reason for that is the inclusion of a Qwiic connector. Yes the same Qwiic connector offered by SparkFun, Adafruit (StemmaQT), Pimoroni (QW/ST) and Cytron (Maker Port) is present on the R4 WiFi and while this is a most welcome addition, it also brings a problem.
Normally, Arduinos have just a single I2C connection, but the addition of the Qwiic connection means that the R4 WiFi has two. More is a good thing, right? Well yes it is, but software has to catch up to this innovation. The Arduino Uno R4 WiFi cheatsheet, which we only later found, identified the secondary I2C bus and helpfully told us what to do in order to make it work with our range of StemmaQT add on boards. But it wasn’t quite that simple.
Arduino relies on the Wire.h library to configure the I2C interface, and we can’t just import it into our code. Instead we have to locate the library for our chosen board, in our case Adafruit’s MPR121 touch sensor code. Handily, hovering the mouse over the correct line shows the file path to the library. Copy the path, open it in Notepad++ and change Wire to Wire1. Save. Go back to the Arduino IDE, flash the code and all is good. Yes this is a little time consuming and not for newcomers, but as we said earlier, the software support will catch up once the R4 WiFi gets into more hands.
With this workflow in hand, we managed to test a VCNL4040 proximity sensor, IS31FL3741 RGB matrix and an LTR390 UV sensor. We also tested a SparkFun Qwiic Shield, providing four Qwiic connectors, all routed via the SDA / SCL pins of the Arduino. Which meant that we had to undo our changes to Wire.h in order to make it work.
Arduino IoT Cloud and the Arduino Uno R4 Boards
The offline Arduino IDE isn't the only means to write code for your new Arduino Uno R4. The Arduino IoT Cloud is an online service to create your own IoT applications (Things) using an online Arduino IoT. The free tier is a little restrictive, but enough for users to cut their teeth.
Originally we encountered a problem in that Arduino IoT did not detect our R4 boards even though we followed the instructions and installed a bunch of software. That isn’t the end of the world, as the Web Editor, an online IDE, works exceptionally well. We flashed code to both of the boards and everything went well.
Arduino Uno R4 WiFi Support Added to the Arduino Cloud
A few days after this review, Arduino announced support for the Arduino Uno R4 WIFi on its Arduino Cloud service. We went back and re-tested by creating an IoT "Thing" with a web controlled LED. Pressing a button on a dashboard would trigger an LED to turn on and off.
Setting up the Arduino Uno R4 WiFi for use with the Arduino Cloud is pretty easy. The only section which may phaze users is when we need to update the firmware, requiring us to download and run a .bat file. This triggered Windows Security and initially prevented use. Clicking "More Info" and then "Run anyway" did the trick. After that we ran through the online wizard, created a "thing", linked the Arduino Uno R4 WiFi as a device, created a dashboard, and the Arduino Cloud auto-generated some boiler-plate code. This code served as the basis for our project, a quick function handler to read the state of the dashboard button, and some LED control code and we had a web controlled LED.
With the Arduino Cloud, the Arduino Uno R4 WiFi is a great platform for your first IoT experiments. The free tier is enough for most users and educators, more advanced users will jump onto one of the subscriptions for increased services. With the Arduino Cloud we can create web apps to control devices and components connected to the Arduino Uno R4 WiFi, and we can receive data from the device and view it in a web interface.
Who are the Arduino Uno R4 Boards Aimed at, and Why?
The Arduino Uno R4 Minima is clearly aimed at new users. The $20 price tag, ease of use and form factor will benefit those looking to learn electronics. It is the Arduino that a new generation will claim as their first machine.
The Arduino Uno R4 WiFi is only $7 more and with that we get Wi-Fi and Bluetooth (not at the same time) and the Qwiic connector. This little board, once it receives some software love, will be what educators, hobbyists and professionals will use as the heart of their projects. Just look at how popular the Arduino Uno was in its first decade. Sure it was never a powerhouse, it couldn’t run an OS, or connect to networks. But the community adopted it and made it much more.
Should we Just buy a Raspberry Pi Pico W?
There is no clear-cut answer here. The Raspberry Pi Pico W is much smaller and cheaper than the Arduino Uno R4 boards. The Raspberry Pi Pico is under $5, and the Pico W under $8. They can both be coded using the Arduino IDE and have a massive support base. That said, if you have built your career using Arduino and have all of the kit and knowledge, then the R4 boards are an obvious step along the path.
Arduino boards have a proven track record in the education sector, largely down to their ease of use and excellent documentation. But Raspberry Pi has the same track record, and its Pico documentation is exceptional.
It has some flaws, for now, but the Arduino Uno R4 series of boards will soon become the de facto standard on which learners, makers, educators, and professionals base their projects. If you are new to Arduino, the Minima’s $20 price tag is quite enticing, but pay the extra and get the $27 Arduino Uno R4 WiFi as the inclusion of Wi-Fi is an incredible learning opportunity. That said, the Minima will be in our bits box, ready for service when we need to write ATtiny85 firmware or make some musical device / light show for the holiday season.
Les Pounder is an associate editor at Tom's Hardware. He is a creative technologist and for seven years has created projects to educate and inspire minds both young and old. He has worked with the Raspberry Pi Foundation to write and deliver their teacher training program "Picademy".
Hello, I have just started playing with the UNO R4 and NANO ESP32. With the UNO R4, I can only get 10-bit ADC resolution. It is advertised as having 14-bit resolution. Has anyone figured out how to get the advertised ADC resolution?Reply