Meet the Arduino Uno R4 Minima and WiFi, Part 1
32-bit data bus, 48-MHz clock, more memory, and WiFi connectivity—what’s not to love?
July 12, 2023
The guys and gals at Arduino have just released the latest and greatest version of the Arduino Uno. The previous generation was called the R3, so it’s no great surprise that the new generation flaunts R4 as part of its moniker. In fact, there are two flavors of this bodacious beauty: the Uno R4 Minima and the Uno R4 WiFi.
If you aren’t already drooling with desire and cheering with delight, you will be shortly when I explain all the cool things these boards have to offer. And, just to add a big dollop of allegorical whipped cream on top of the metaphorical cake, for those who love the existing R3 just the way it is, I’m delighted to report that the chaps and chapesses at Arduino have no plans to discontinue the little ragamuffin for which they foresee strong continued demand.
Now, before we proceed to discuss the new R4 models in more depth, let’s first remind ourselves what the Uno R3 brought (and continues to bring) to the party. Let’s start with the fact that it comes equipped with a USB-B connector with which it can communicate with a host computer. The R3 can be powered by its USB connector or via an external supply, in which case a 7 to 12 V supply is recommended (a 6 to 20 V supply is the limit). Also of interest is the fact that the signaling voltage levels on the R3’s digital input/output (I/O) pins are 0 to 5 V.
The R3 is powered by an ATmega328P microcontroller unit (MCU). This little scamp has an 8-bit data bus, a 16 MHz clock, 2 KB of SRAM, 32 KB of Flash memory, and 1 KB of EEPROM (which can be used to store data under program control).
The R3’s MCU doesn’t have a hardware floating-point unit. This isn’t a problem for most users who happily work using fixed-point values in the form of integers. However, any users working with values like 3.14159 (yes, of course this is Pi) are going to see the R3 slow to a crawl. This is because each floating-point value is stored as 32 bits (4 bytes) of information, and each floating-point operation must be implemented using a bunch of 8-bit integer operations. (How big is a “bunch”? I don’t have a clue, but I’m quietly confident it’s more integer operations than you might expect.)
Now, I have to admit that I have a soft spot for the Uno R3 because I grew up in a world where 8-bit microprocessors and microcontrollers were considered to be as cool as cucumbers. I’ve got R3s scattered throughout my home and office, and I’ve used them on countless projects, such as my 12x12 ping pong ball array, for example (see Noise is My New Best Friend). I’m also using the Uno R3 as the basis for my soon-to-be-legendary therebone project—see Theremin? Bleh! Therebone? Yeah!
I come from the days when an 8-bit single-board computer (SBC) came equipped with only 2 KB of ROM and 1 KB of RAM, which meant you had to be miserly with every byte of memory and parsimonious with every cycle of the clock. I remember when computer magazines held competitions to see who could perform a specified task in assembly code using the smallest number of clock cycles or the fewest number of bytes. As a result, I quite enjoy working within the constraints imposed by the R3.