Arduino UNO R4 WiFi. Is this new board for you?

The Arduino UNO R4 WiFi and Arduino UNO R4 Minima are the two newest additions to the Arduino family.  

Each of these boards expand on the capabilities of the flag ship Arduino UNO R3 that has dominated the Arduino line up for over a decade.

In this lesson we’ll want to take a closer look at the Arduino UNO R4 WiFi.

It packs 2 new processors, several hidden features, and 96 individually addressable LEDs to name just a few of the interesting new aspects of the R4 WiFi.   We’ll talk about this stuff, plus, I’ll give you my take on some of the design decisions behind this board.

Arduino UNO R4 WiFi next to Arduino UNO R3

Arduino UNO R4 WiFi Specifications

Here’s a comparison of the ​​UNO R4 WiFi and the UNO R3:

SpecificationUNO R4 – WiFiVSUNO R3
MicrocontrollerRA4M1 (Arm Cortex®-M4),32-bit Processor

ESP32-S3
⬅︎3XATmega328P,
8-bit Processor
Clock Speed(RA4M1) 48 MHz
(ESP32-S3) up to 240 MHz
⬅︎3X16 MHz
USB-ConnectorUSB-C⬅︎USB-B
Pins
  • 14 digital I/O pins
  • 6 PWM pins
  • 6 analog input pins
  • ~14 External Interrupts
🟰
🟰
🟰
⬅︎
  • 14 digital I/O pins
  • 6 PWM pins
  • 6 analog input pins
  • 2 External Interrupts
ConnectorsQwiic connector, ICSP⬅︎ICSP
Built-in peripheralsOP AMP, Digital to Analog Convertor (DAC), Real Time Clock (RTC)⬅︎NA
On-board LEDs96 individually addressable⬅︎1
CommunicationUART 1 Native & 1 on TX/RX Pins, I2C, SPI, CAN⬅︎UART, I2C, SPI
Human Interface Device capability?Yes⬅︎No
Power
  • Operating Voltage 5V (ESP32-S3 is 3.3 V)Input voltage (nominal) 6-24VPower Supply Connector Barrel JackDC Current per I/O Pin 8 mA
🟰

⬅︎

🟰

➡︎
  • Operating Voltage 5VInput Voltage (recommended) 7-12V, (limit) 6-20VPower Supply Connector Barrel JackDC Current per I/O Pin 20 mA
Flash Memory(RA4M1) 256 kB(ESP32-S3) 384 kB
⬅︎8X32 kB
SRAM(RA4M1) 32 kB(ESP32-S3) 512 kB⬅︎16X2 kB
EEPROM8 kB⬅︎8X1KB
DimensionsWidth 53.4 mm, Length 68.6 mm🟰Width 53.4 mm, Length 68.6 mm

In just about every facet you can see the R4 WiFi is more capable than the R3.  

Why two processors on the Arduino R4 WiFi?

Now you might be thinking…wait a second here!  Why do they have two processors?  The ESP32 looks like it’s faster, has more memory, and has built in WiFi and BLE.

So why did they even bother with the Renesas chip?

This is a very reasonable question, and I think it has a very solid answer.

UNO R4 WiFi with both processors marked (RA4M1 and ESP32)

First off – we need to understand what the Arduino team was after when they designed this new revision.

They wanted a drop-in, backwards compatible replacement for the UNO R3.

Now why is this?  The Arduino UNO R3 has been the de facto development board used by millions of people for over a decade.  There are more tutorials, code examples, libraries, and shields available for the R3 than any other Arduino board out there. More than any other development board in the world I would guess!

Making the new version backwards compatible with its hardware and software means the UNO R4 can leverage that existing corpus.  

So what does hardware backwards compatibility look like then?  Ideally, it means that R4 WiFi would have the same pinout, and the same functionality on those pins as the R3.  

And most importantly it would need an operating voltage of 5V. Which is why just having an ESP32-S3 would fall short of the goal for backwards compatibility, which is why they chose the Renesas RA4M1.

But why did they go with this Renesas microcontroller?

Renesas RA4M1 on the UNO R4

Renesas isn’t a company that is well known in the maker community (I thought the renaissance was back in the 1500s).

From my understanding, Renesas is more well known in the automotive industry, and industrial controls.

According to Arduino, there were several selling points for the RA4M1:

  • The RA4M1 operates on 5 Volts
  • RA4M1 has built-in overcurrent protection on its pins (this makes it robust for beginners)
  • Built-in in Digital to Analog Convertor (DAC)
  • Built-in in Operational Amplifier (OPAMP)
  • Built-in in Comparator
  • Onboard USB interface (vs external ATmega16U2 that the UNO R3 uses)

I really like these two pin out diagrams.  This is the Arduino UNO R3:

UNO R3 Pinout diagram

Now look at the R4 WiFi – it has all the same pinout functions as the R3, plus expanded functionality:

UNO R4 WiFi Pinout diagram

Not all of this functionality is currently supported out of the box, but my understanding is that nothing is stopping a developer from accessing this.

Cortex-M4

I’m also pretty excited that the RA4M1 uses a Cortex-M series core.  I have never developed with a Cortex M series, but my understanding is that it’s pretty standardized and used by tons of companies.

Now the RA4M1 does clock at only 48 MHz, compared to the possible 240 MHz of the ESP32-S3 – but my understanding is the reason for this is a power tradeoff.  Since the RA4M1 runs at 5V, one way to keep a lower power consumption is to reduce the clock speed.

Now I am not what you’d call a cutting edge kind of embedded developer by any stretch. So take my opinion with a grain of salt.

But for the kind of control applications I was working on, like reading sensors and turning on actuators (kind of the Arduino UNO bread and butter), I never really ran into clock speed issues.

So when I see 48 MHz, I think it is very on par for the use cases I would tackle with an UNO.

Co-Processor

And a final note. I don’t think of the ESP32 as some kind of red headed step child on the board that is only good for offloading WiFi and BLE stuff.  Instead, I think of the ESP32-S3 on this board as a Co-Processor!

From what I can gather, the roadmap Arduino has set out for this R4 WiFi is to make the ESP32-S3 as accessible as the RA4M1.  If you wanted to program the ESP32 directly, there are pads for accessing the ESP32 using pogo pins.

When you get this Arduino UNO R4 WiFi, not only do you get an amped up Arduino UNO, you also get the action packed ESP32-S3!  

So if you LOVE the ESP32 like I do, then I think this is a huge win for Arduino users.

Now I know I just told you that I’m not Mr. Cutting Edge, but there is a feature in the UNO R4 that will help you high speed folks.

Floating Point Unit (FPU) and Digital Signal Processing (DSP)

The ARM Cortex M4 has a floating point unit for performing calculations on floating point numbers.  

So if you’re trying to do some beefy calculations with decimal points, then you’re in luck.  

Apparently taking advantage of the FPU is seamless in your code. In fact the compiler will see if you are doing calculations in your program that can take advantage of the FPU and hand it off to be accelerated. That’s pretty neat.

One application that could take advantage of this would be audio processing.

Hidden features in UNO R4 WiFi

Some features on the UNO R4 WiFi are not so obvious, but they add to the fact that Arduino designed this to be a beginner friendly board.

First off, the R4 makes added powering things like motors and LED strips easier, because it can handle voltages up to 24V – which allows you to use a single power supply.  It also has an enhanced thermal design that reduces the temperature when the board is powered with these higher voltages.

Arduino UNO R4 WiFi schematic highlighting ESD and Reverse polarity protection

There are several protections in place to help guard new users from frying their board. For example reverse polarity protection and electrostatic discharge protection.

So if you try to wire in your power backwards this will reduce the chance that the magic white smoke gets out – not that I’d ever do something like that 🤣…

Even though you can’t switch out the microcontroller if it were to get fried (like with the R3 DIP package), Arduino has made it less likely that a beginner will fry the circuit in the first place.

UNO R4 as Human Interface Device

The Arduino UNO R4 WiFi (and Minima), can also easily be used as human interface devices (HID), so basically your computer can recognize UNO R4 as a keyboard or mouse.

What this allows you to do is simulate keypresses and mouse movements. So you can build stuff like gaming controllers, or interesting computer interfaces.  

This was a feature that the Arduino Leonardo boasted, but now can be done with the Arduino UNO R4.

WiFi and BLE

Now I know we already touched on the fact that an ESP32-S3 is the co-processor in this board, but how does using the WiFi and BLE actually work?

Well, it looks pretty familiar.

If you have ever used the WiFi.h library, then all those same functions appear to have been implemented in the WiFiS3.h library.

Just to give you an idea of what I am talking about, a project that connects to a wireless access point using an ESP32 with the WiFi.h library would work seamlessly with an Arduino UNO R4 WiFi by switching from WiFi.h to WiFiS3.h, that’s it!

For using the Bluetooth Low Energy (BLE) features, you use the ArduinoBLE library.

That’s pretty seamless and opens up a ton of opportunities for people wanting to build IoT devices.

Perhaps that might not be the most beginner application, but there is a neat new feature that Arduino built-in to the R4 WiFi board that will help newcomers to programming.

Error catching made easier with the R4 WiFi

If you have programmed for a day, then you probably know all about cryptic error messages.

What’s worse than a cryptic error message though?  How about no message at all?

That is generally what can happen when your Arduino board performs some fatal operation (like dividing by zero!) and goes into lala land – no error at all, and you’re left wondering what the heck is up.

A new feature of the UNO R4 WiFi board sports is an error-catching mechanism that detects operations that caused a runtime crash, such as dividing by zero or out-of-memory errors.

If these happen, an error will appear on the Arduino IDE serial monitor giving a hint as to what line may have been the culprit. This should be a big help for debugging.

Speaking of Debugging

You may have noticed that in the Arduino UNO IDE 2.0 there is debugging capability.

With a debugger, you can step through your code line by line and see the values of different variables, and even change them to see what happens!  It’s an amazingly useful tool.

Often external hardware like a J-Link is required for debugging microcontrollers. The Arduino R4 Minima even has a Serial Wire Debug (SWD) pins on the board so you can connect up something like a J-Link and use the Arduino IDE 2.x debugger.

UNO R4 Minima Serial Debug Port identified

The R4 WiFi is missing these SWD pins. I heard (and don’t hold me to this because maybe I was dreaming) at some point you’ll be able to debug the RA4M1 with no external hardware required. Apparently the ESP32 would act as the debug unit – that would be pretty awesome, but again, I could be making this up…

Arduino UNO R4 WiFi 96 LED matrix

Now I want you to take a trip down memory lane…do you remember how fun it was blinking your first LED?

For a lot of new developers blinking an LED is the first foray into programming actual physical stuff. As tame as blinking an LED might feel to you now – when you write the code to blink it – there is something magical there!  You feel like a wizard!  It’s a great feeling 🙂

Now users of the UNO R4 WiFi board will have an entire matrix of LEDs to play with!

Arduino UNO R4 WiFi Led matrix showing welcome screen animation of tetris block, diamond shrinking and beating heart
Note that you can’t see the LED blinking with your eyes, the camera just picks it up.

Remember – what the Arduino UNO is – it is a board for learning, for prototyping, for building your own fun projects – having all these LEDs on board is perfect for all of these use cases!

Arduino has created a library for controlling the LED matrix that uses charlieplexing.  They also have an online graphics tool where you can easily design images and it spits out code.

In addition, they’ll have a bunch of premade graphics and animations you can use.

The library is pretty straight-forward, and I can foresee it getting way cooler as more people work with it.

Is the Arduino UNO R4 WiFi right for you?

Yes.

What can I say – after playing with this board for just a couple of minutes I was already having fun!

This board definitely has advanced features – no question. But nothing is stopping you from using it like an Arduino UNO R3.

And for only a little bit more cash you get a ton of more options to play with should you decide it’s time to go all in and learn to prototype cool stuff!

I have always loved the UNO form factor. For fat finger people like me, I can actually access the pins with relative ease and the markings are super clear to see.

Now I can prototype with my UNO and get to do WiFi stuff.

Is the Arduino UNO R3 Dead?

Arduino has made it clear they will continue to support the Arduino UNO R3.  There are millions of the revision 3 boards in the wild, tons of clones and knockoffs – an entire thriving ecosystem built around this iconic development board.

The R3 is like a hammer – it’s far too useful not to keep around.  Arduino will continue to develop these boards, and undoubtedly folks will continue to write code directly for them.

Now the R3 has some friends to hang with 😉  

What about the Arduino UNO R4 Minima

Great question!  We have an entire separate lesson on the Arduino R4 Minima that you can check out here >> 

In fact it might cover some important facts that I forgot to mention in this lesson!

AppLab Bricks open in background with actual brick

Arduino AppLab Bricks → Marketing Garbage or New Powerful Interface?

Arduino Ventuno single board computer - top side

New Ventuno Q Dual Brain Single Board Computer

AppLab Pip Install

How to Add Python Packages in Arduino AppLab (No pip install needed)

Arduino Power Section Schematic

Kit-on-a-Shield Schematic Review

Just how random is the ESP32 random number generator?

Just how random is the ESP32 random number generator?

Leave a Comment