So, it looks like you program the RA4M1, and the ESP32 is just there for wifi (and USB interface). That seems like an incredibly odd and wasteful choice. I didn't see any explanation as to why they did it that way.
I was kinda worried the interface to the ESP32 would have been like the origional ESP8266 where you used AT commands. But it looks like the Wifi library abstracts out whatever interface they're using for the ESP32, so I was at least happy to see that.
Since the ESP32 handles the USB interface, it's probably possible to program both microcontrollers. I can't imagine a practical use for that, but bet it gets done pretty quick.
Pretty standard to use ATWINC1500, CYW43439, ESP8266, or ESP32 to add Wifi over UART/SPI/i2c to another microcontrol chip.
This is done with the RP Pico W, Adafruit Feather M0 Wifi / or Airlift, 3d Printer boards (Duet Wifi) and allows you to add Wifi to code bases already written for these boards without worrying about rewriting and/or hitting memory performance issues with running Wifi and logic on a single chip.
5V GPIO is something the Uno line has historically had since the very beginning (and an assumption of having it is baked into thousands of getting started with Arduino books and guides) and I suspect using the RA4M1 is to help keep this capability.
Logic level converters are HARD. You basically need to rebuild internal structure of GPIO external to the MCU. It needs to support high speed, high current, input or output, open-drain/open-collector, customizable resistor pull-up/down.... All external to the MCU.
I have had great luck running ESP32 apps with the Arduino framework. Everything I have tried works. Admittedly I am only using GPIO, SPI bus displays, I2C sensors and displays, WIFI web servers serving REACT apps, WIFI posting to other web services, and ESP-NOW layer 2 direct WIFI connectivity. But this stuff has been flawless.
p.s. the ESP32 dev modules suck and brownout randomly with WIFI usage. I use my own PCB and put fat tantalum caps feeding the modules.
I think you missed the intent of the message you’re replying to. They are saying that when you use the Arduino ecosystem on the ESP32 you are missing features (whether that’s Arduino features that don’t work on the ESP32 or more likely ESP32 features that are not available through the Arduino toolchain).
Personally for the latter reason I think if you’re targeting the ESP32 you should skip the Arduino ecosystem and just write native code.
Espressif publishes their own C SDK for their ESP32 products. They also support Rust development (using the mainline compiler) on some of the RISC-V modules like the ESP32-C3.
Arduino libraries don't all work on the ESP32, and some respond oddly vs an ATMEGA chip. Arduino framework on the ESP32 is an afterthought, it wasn't designed for it.
I use the ESP IDF framework because it has so much better support.
The biggest downside of the ESP32 is that it doesn't support 5V GPIO, and I believe having to run the wifi stack makes running cycle-accurate code quite tricky.
Back in 2010 when I was into Arduino I made a GPS/GSM Car Tracker with my Arduino Mega (ATMega 1280, an 8-Bit 16MHz MCU).
I did that by speaking AT serial to a Telit GM862-GPS module. I can’t find the actual CPU spec now but it contained a much more powerful CPU, I recall it being ARM but can’t find evidence of that now :) it also had a python interpreter.
The USB interface can be routed to either the RA4M1 or the ESP32, actually. I expect most people will essentially just use the ESP32 as a wifi modem.
A big reason to do this is that RF is hard. You really don't want to design a custom wifi board if you can at all avoid it, and using a pre-certified module for it greatly reduces complexity. Not to mention that very few wifi-capable chips support 5V gpio.
>So, it looks like you program the RA4M1, and the ESP32 is just there for wifi (and USB interface). That seems like an incredibly odd and wasteful choice.
The RA4M1 is an ARM Cortex core, but it could be that Renesas offered to subsidize some of the cost of the board by providing the chips with some kind of sweetheart deal. Not a bad idea if so, Renesas can generate a whole lot of interest in their platform for what is probably a rounding error in their bottom line. And they've previously invested in Arduino (https://www.eenewseurope.com/en/renesas-backs-arduino-with-1...).
Personally I'm really stoked about the Uno finally getting a 32 bit ARM core. And an M4 at that! I would've thought maybe a M0+ (like the RP Pico) on the Uno and perhaps an M4 on a hypothetical future Mega update.
Good stuff from Arduino. The AVR on the previous Uno revs was getting quite outdated. Simple to use yes, but the Arduino environment mostly abstracts over that and only "power users" ever need to dive into peripheral registers and whatnot (eg to use interrupts).
Well, this M4 is most likely much slower than Rp2040 (2.5x difference in clock speed plus dual core). At the same clock the difference between M0+ and M4 isn't too dramatic (unless you use FPU).
I see no reason for them not to go with the RA4M2 version (with 100mhz clock and more memory). The RA4M1 Only has 32KB of memory, and slow clock. Arm M4 is a superset of M0, so clock for clock M4 should be faster. Given the price point for this board compared to the RP2040, I see no reason to give it such a limited processor.
What's the difference between an Arduino arm cortex and just getting an adafruit feather board? They have m4's on them and can be programmed with an Arduino IDE and the same tools.
They're a big deal in industrial/automotive/defense but they don't have a ton of visibility. Perhaps why they'd be interested in more outreach, Atmel and others like STMicro definitely reaped benefits from engaging with hobby/educational users at probably negligible cost. Arduino has also been trying to position themselves as a legitimate friendly platform for industrial automation, so it could be a good match.
How open is the toolchain/SDK for Renesas parts?
I.e. can they be used with gcc/gdb/(c)make with reasonably low effort (like esp32, stm32, rp2040) or is the only realistic option using their IDE?
What defense area? I've done a ton of random aerospace stuff and usually end up using STM or NXP. All the critical systems have been some horrifying PPC or Sparc derivative.
It's been so frustrating that espressif offerings are basically the only wifi mcu options. Yes, there are a handful of other options, but they all fall short in one or more of cost|sdk|availability.
If you're wondering why I need an espressif alternative so badly - many companies won't rely on Chinese companies for components, especially if they're not easily interchangeable. There's always the concern of a Chinese backdoor (I prefer my backdoors to be NSA backdoors), and the US is always just on the cusp of a trade war with China.
Espressif being a Chinese company, sure, but how many components from an arbitrary NATO-friendly country corp but are exclusively manufactured in China anyway and get the same treatment?
MxChip has something interesting, but yeah, they're Chinese. http://mxchip.cc/
There are no non Chinese alternatives, sadly, and even using only a Chinese network chip, this wouldn't protect from backdoors contained in the network chip firmware itself.
I wouldn't like my hardware to be filled by backdoors by anyone, but if I had to choose, I would always choose backdoors from China, if not because I assume they'd be a lot less interested in spying me than my own government (that is, I would be to them a hop to reach a target, not the target) and also backdoors that connect to government addresses in my own country would be harder to spot and block compared to those connecting to another continent.
In doubt, I would put that stuff behind a dedicated firewall anyway, no matter who makes the chips.
I recently discovered an even cheaper wifi + ble chip that's widely used in the Tuya Devices called Beken (they migrated away from Espressif it seems). I can't find much info on it so guessing Chinese IoT companies have to buy them in bulk. They also have an sdk I'm guessing for HomeAssistant users called OpenBeken.
Nordic products are generally excellent. But for wifi they acquired a company and my understanding is they basically slapped their name on and wrapped their sdk around a non-nordic solution.
nRF5x family had been the gold standard for Bluetooth Low Energy gadgets like coin cell powered smartwatches, to the point that both Apple AirTag and its predecessor Tile tracker uses nRF52. But they never had Wi-Fi. Just way too much power consumption for nRF5x.
This thing has a big LED matrix display and flexible power input options, it's not exactly the same market as the pico or barebones ESP32 boards. This is much more similar to the microbit, circuit playground or similar getting started in physical computing boards. Out of the box you can do stuff with this board and no other real components.
I think your second comment is the explanation for your first. There are certainly cheaper boards available, but the form factor of the Uno allows for use with a whole host of hats and shields, and releasing an updated board with more powerful hardware allows for more complex projects using those hats and shields.
What an odd board. The ESP32-S3 is an absolute powerhouse by itself. I really don't see why would you add another (probably pricey) MCU to serve as the master.
Somewhat shameless but relevant plug - we use the ESP32-S3 for Willow[0]. The dual core S3 and "high speed" external PSRAM are game changers.
What it is capable of (especially considering the price point) is nothing short of incredible. Wake word activation, audio processing (AGC, AEC, etc), audio streaming, even on device speech recognition for up to 400 commands with Multinet. All remarkably performant, easily besting Alexa/Echo in terms of interactivity and response time (even when using an inference server across the internet for speech recognition).
Sure we're down in ESP-IDF land and managing everything we have going on in FreeRTOS is a pain but that's not anything you wouldn't have on any microcontroller. We're also doing a lot considering and generally speaking we "just" throw/pin audio tasks (with varying priority) on core 1 while more-or-less dumping everything else on core 0. Seems to be working well so far!
Interesting, this is yet another open source project that relies on a proprietary wake word model. Why are there no open source wake word engines like there are for speech recognition?
Short answer: it’s a tiny niche that is still very difficult, expensive, and time consuming. This isn’t Whisper or an LLM that has applications in practically anything. You’re not going to see OpenAI, Meta, etc release a microcontroller optimized wake implementation because literally no one cares (by comparison). Yet it requires a not-completely dissimilar level of effort. Someone else linked to the Espressif training dataset requirements.
That said, wake word comes up more than I could have ever imagined. Everyone has an opinion and exactly zero of them have any idea what they are talking about (that I’ve encountered). It’s getting very, very old and I’ve all but given up engaging on it because it always ends with the classic “Well couldn’t you just…”.
Yes, in the 15 seconds it took you to write that comment you came up with something no one in the field has ever thought of before.
If you can create a completely open source wake implementation that gets even remotely close to the performance and reliability of those from Espressif, etc (while running on a microcontroller) we would be thrilled to use it. You will have created the first of its kind, and you’ll be famous!
The more likely outcome (as you dismissively said) will be “yet another open source project” that goes in the graveyard of completely unusable open source wake word implementations. There are plenty. As you note - all of them.
In case anyone with practical skills in ML+deep learning (but not in audio or embedded) wants to tackle this project, I am willing to mentor on those things. Microcontroller-level audio ML is my speciality.
One can find me in the Sound of AI Slack. Ping me there and we can create a channel etc.
It will be a multi-month endeavour though. Getting to PoC level is quite quick, but then getting robust performance in nearfield / high SNR cases across diverse background noise is a lot more work. And then tackling low SNR and far-field like with Alexa is yet another level.
Model architecture wise the problem is rather well understood, there are several good papers available from ARM etc.
Deployement infrastructure also pretty good these days, for example with Tensorflow Lite Micro.
In addition to ML skills, the project would need someone that is good at organizing volunteer outreach, in order to build a good sized dataset. The Espressif docs are a reasonable spec for something quite good on the voice side.
But then we would also need a good dataset of background noise.
Of course those with embedded/microcontroller skills are also very welcome.
Modularity and separation of concerns, in hardware.
Historically, you wanted your PIC or 8051 to be in complete control of the system. You built the core of your RTOS around some well-understood central processor, but farmed out tasks like converting text display over an SPI-like interface to modulating a 16x2 character LCD, or decoding your UART into USB serial to an FTDI chip, or decoding MP3 bitstreams into I2S or raw DAC signals, or what have you. SOCs added on-chip peripherals for some functions, but a lot of stuff was off-chip like in this Arduino.
You wouldn't run code on an FTDI chip, that's an inversion of the architecture, and back in the day that was an ASIC that did nothing but covert RS232 into USB packets so there was no way to run code on it.
The ESP32 is what it is because decoding 802.11 RF signals and running a TCP/IP stack is now a task not for an ASIC but a generic microcontroller that's fast enough to do those tasks in software. The processor is so much more powerful than the ancient Atmel Atmega328 in an Arduino Duemilanove that had 32 KB Flash and 2 KB SRAM on an 8-bit bus at up to a whopping 20 MHz that it seems ridiculous to do anything at all with such a 'master' processor.
Honestly, I think it's a good choice; I can absolutely see folks running a small web server or something on the ESP32 and putting their realtime code on the main MCU, for instance.
When I did electronics for a psychology department, nearly everything had to have both hard real-time sensing and be plug-and-play with Windows and MacOS. We ended up using a lot of Arduinos, but having a webserver on board would have been so much nicer than serial over USB, or transferring from SD cards.
I think this depends on how the ICs are connected. If it's running something like I2C between them, then your data transfer rates will be too low and you'll be quite limited in some of the applications.
For an Arduino board, voltage and pin compatibility is an absolute hard requirement. (The only reason you use Arduino is to use Arduino software or existing peripherals/shields) ESP32 has fewer pins and is a 3.3V part.
yea I go for the S3 when I need networking on one core while still running realtime applications on the other core, but it's the priciest one
i would have probably paired a lower cost -C family (maybe the RISC one for extra nerd cred) with the arduino, since those have only one core, which would have made for a good split
Calling this thing UNO is a mistake. It has nothing in common with the original Uno (all three revisions) except the form factor, and that's going to confuse a lot of people.
It feels to me like Arduino is becoming a shill for whatever processor companies want to market to people. Not that there's anything wrong with the RA4M1 or anything, but Arduino seems like they are less focused on ecosystem than they used to be.
It's more that the Arduino ecosystem is now so well-supported and wide ranging that it makes sense to have the association with it. e.g., I have an STM32 Discovery board on the table next to me that has the standard Uno pinout available in case I want to use Arduino shields. For prototyping using the ecosystem is insanely fast. In many cases it also makes sense for low volume production.
Having an onboard display, CAN bus transceiver, and op amp is pretty neat. It should enable this Arduino to be the core of a lot more projects when otherwise it might make more sense to use another board or just build the whole circuit from components.
An RA4M1 with an ESP32-S3 ... as the coprocessor for WiFi and BLE? Why not just do everything on the ESP32-S3? The RA4M1 seems a little unimpressive next to it. Something like an RA6M4 at least would have been cool, though: Add QSPI flash and an Ethernet phy ... Yes please! But this? Meh.
- Generally you have to run Espressif's FreeRTOS variant, which is a very different programming model from the standard microcontroller-with-interrupts model that prior Arduinos use.
- ESP32 has a crappy ADC.[1]
- ESP32 is a 3.3V part. Yes, you can level-shift, but Arduino GPIOs can be set into 4 states: low, high, pull-up resistor enabled, and hi-Z. Your standard bidirectional level shifter[2] is not sufficient here - those can can only drive low or pull up.
1. https://www.makerfabs.cc/article/cautions-in-using-esp32-adc.html
2. https://electronics.stackexchange.com/questions/173297/how-does-a-bidirectional-level-shifter-work
> Generally you have to run Espressif's FreeRTOS variant, which is a very different programming model from the standard microcontroller-with-interrupts model that prior Arduinos use.
I can tell you never bothered programming an ESP within Arduino IDE and its wrappers. You don't have any contact points with this, unless you want to. It's like with any other ATmega chip. And even if this wasn't the case, the argument would be the same on either side: Just replace Espressif's IDF with Renesas' FSP and each other's FreeRTOS port.
And yes, I am aware you can program Renesas chips bare metal ... just like you can do with ESPs. uBlox is doing the latter for example for their ESP-based products, including even a custom WiFi stack. Once you do a percentage more with ESPs than just toying with their IDF and Getting Started you will start doing that too and just use the IDF for reference at best.
> ESP32 has a crappy ADC.
The ADC of the ESP in question (ESP-S3) is okay, others not so much.
They've done a good job of hiding the RTOS from you and making most sketches run fine without porting, but you're still running as a task under the RTOS, yielding between loop() calls[1]. This leads to mysterious timing issues if you aren't aware of it[2]
It doesn't appear that the Arduino core for the Renesas chip is using the RTOS, at least by default -- its main loop is literally doing while (1) { loop(); }, similar to how the AVR core works. [3, 4]
What's the point of the RA4M1 if you already have the ESP32?
Based on the data sheets the only guesses I have are that it's running at 5V (presumably because Arduino is living in the past), and that it has USB support.
Either way this doesn't seem especially compelling compared to the many ESP32-C3 boards which generally have less enormous form factors and are much much cheaper.
There are many of us that work with scientific instrumentation that has to retain compatibility with 5 volt logic levels. Many labs have equipment that is over 50 years old and which is still in use. Suppose you tell a scientist that they have to replace a working instrument built in the 1960s with a new one that costs over $250,000 only because it does not use 3.3 volt logic levels. They are going to laugh at you and say that they want to keep using the old instrument.
So having cheap and easily available electronics that can still interface with 5 volts can be very useful to some of us.
I work for several beamlines at the Advanced Photon Source. There are probably far, far over 1,000,000 electronic signals at the whole APS facility that use 5 volt signaling. So almost any level shifting will be to embed 3.3 volt signals in a 5 volt world. It is simpler to buy equipment that has already done this.
No doubt. But lots of Arduinos have been used in scientific experiments because they are inexpensive and easy to work with. So the choices made in Arduino-like boards do affect us.
I doubt interfacing with 80 year old lab equipment is the target market for this board. Though I can see supporting the existing shields and interface being a design goal. But there's already a lot of ESP32s in use today using a variety of methods to interface to 5v devices without including a whole other microcontroller.
I never realised older scientific equipment even has interfaces for plugging in third party tools! I'm curious, how often do you actually have to make stuff that interfaces with older lab equipment when developing new equipment. And a follow up question would be: is this something you do in house, or do you sell this as a service/products?
And if you're allowed to go into detail, can you give a high level example of this (too low level might go over my head).
Yes, most scientific lab tools have some way of communicating with third-party tools. We tend to shun tools that do not, although some vendors are perplexed and/or annoyed by this. No one vendor carries everything you need.
There have been several generations of scientific instrumentation standards used for connecting products from various companies together.
Some take the form of Crates, which can contain individual modules that you plug into the crates. For example,
*NIM* - <https://en.wikipedia.org/wiki/Nuclear_Instrumentation_Module> - Started in the 1960s, but there is a ton of these modules still in use. Lots pictures of NIM electronics can be found by doing a Google Image search for *nim electronics*.
*CAMAC* -<https://en.wikipedia.org/wiki/Computer_Automated_Measurement_and_Control> - Started in the 1970s, but is mostly obsolete and removed now. It was the first bus standard to provide for computer control of instrumentation, mostly by PDP-11s and then later VAXes. It could send you 24-bit data words at the blindingly fast speed of 1 MHz. Some pictures of them can be found by a Google Image search for "*camac electronics*.
*VME* - <https://en.wikipedia.org/wiki/VMEbus> - Originally created in the 1980s as a computer bus for m68k computers. But it found a new, far faster life as a scientific instrumentation standard. A number of bus standards like VXI have attempted to claim the throne of VME, but VME is still widely in use. Some pictures of this can be found by a Google Search for "vme beamline electronics*.
The other major form factor is cables
*RS232-RS485-etc* - <https://en.wikipedia.org/wiki/RS-232> - An ancient standard started in 1960, but still widely in use.
*GPIB or IEEE488* - <https://en.wikipedia.org/wiki/IEEE-488> - Originally created by Hewlett Packard, but still widely in use. Seems to be on the decline these days.
*USB* - <https://en.wikipedia.org/wiki/USB> - The new contender for the throne. Its use is growing by leaps and bounds with each passing year. Bear in mind that one of the largest uses here of USB is for USB-to-Serial dongles that let us plug in the RS232 and RS485 stuff we are still using.
*Ethernet* - <https://en.wikipedia.org/wiki/Ethernet> - Using mostly TCP and UDP, but not always. This is the other contender for the throne.
*Short-lived standards* - There were a variety of other standards that had short periods on the stage, like parallel ports, Firewire, SCSI, proprietary bare ribbon cables, etc. Most of this has gone away, except for the proprietary ribbon cables *(sigh)*.
I do most of my work these days for two organizations, namely MRCAT <http://mrcat.iit.edu/> and BioCAT <https://www.bio.aps.anl.gov/> which both make use of X-ray beams at the Advanced Photon Source <https://www.aps.anl.gov/About/Overview>. The APS is a 1.1 kilometer electron storage ring, which produces high intensity X-ray beams at 70 sectors around the ring. My employers use 3 beamlines at 2 of those sectors for materials research and for biophysics.
You can find a lot of beamline pictures by doing a Google search for advanced photon source beamlines.
What do you mean? You need one level shifter per IO pin. You can get something like TXS0108E for e.g,, that's 8 pins and it will cost you less than $1. It can do millions of signals per second, but if you don't care about speed single mosfet will do.
It sounds like you are suggesting that we build our own custom circuit boards. The people that I work for do not manufacture our own circuit boards. We largely do not have the expertise to manufacture our own circuit boards. We are not electrical engineers.
The Advanced Photon Source has electrical engineers, but we are not part of the Advanced Photon Source. If we go to the Advanced Photon Source and ask them to build boards for us, they would probably quote a price and ask us if we have the budget to pay for that. Or they might say that they are too busy to do it for us. That would be especially likely now since the Advanced Photon Source is in the middle of a major upgrade.
In the end, it is better for us to find vendors that make data acquisition equipment compatible with 5 volt logic and buy stuff from them. That is probably true for most of the organizations that make use of the Advanced Photon Source.
I mean, you have to connect the MCU to your thing somehow, that's building a circuit, so you just insert the level shifty thingy between. But I have no clue about your seemingly highly specialized use case (which, why arduino of all things), so presumably you know better.
I'm sure I just haven't looked hard enough, but I'm surprised nobody's put a few of those level shifters in an arduino shield yet, to convert the whole board to arbitrary voltages. The analog pins might be a little harder.
Level converting is surprisingly difficult when you have to deal with both push/pull outputs, digital&analog inputs, and pullups for open-drain buses. In fact, I am not aware of any level converters which can deal with all of that.
If it's Wifi, chances are it'll want a web front-end. That's a pig for memory resources and can go on the ESP32 (for which the necessary software already exists), letting the other CPU to the "Arduino-ish" stuff with the I/Os. Given how much you can do with an AVR328, the low-spec core is probably plenty.
That little LED grid is super nice! I can imagine that will simplify a ton of projects - instead of having to attach an external display, or your own LED grid, you can provide basic feedback about what's going on in your device thru the built-in LED grid.
The Arduino UNO R4 WiFi merges the RA4M1 microprocessor from Renesas with the ESP32-S3 from Espressif, creating an all-in-one tool for makers with enhanced processing power and a diverse array of new peripherals. With its built-in Wi-Fi® and Bluetooth® capabilities, the UNO R4 WiFi enables makers to venture into boundless creative possibilities. Furthermore, this versatile board boasts a convenient on-board 12x8 LED matrix and a Qwiic connector, offering ample space for innovation and unleashing creativity. This dynamic combination empowers makers to transform their ideas into reality and elevate their projects to unprecedented heights.
That is a weird combo. Up front it looks like the RA4M1 is the main compilation target and probably has all the IO. Then you have a wifi chip of a different compile target that is faster and more capable in the back. Truely this is the mullet of dev boards.
RA4M1 [0]
48MHz Arm Cortex-M4F Core
256kB Flash Memory and 32kB SRAM
ESP32-S3 [1]
dualcore 32bit LX7, up to 240 MHz
Flash up to 8 MB, optional 2 MB PSRAM in chip package
39 GPIOs, rich set of peripherals
It's interesting to me that they have both an ESP32 and a RA4M1 processor. Is the WiFi connectivity really that intensive that they need to have both processors? I thought that was specifically why the ESP32 was a dual core design. Is the RA4M1 connected to the IO but not the ESP32? It's interesting also that they don't call out how the ESP32 is connected to the RA4M1. Depending on what that communication path is, you could be pretty limited on the amount of data that gets sent across. Overall, interesting board but I don't understand why they have the RA4M1 and don't just use the ESP32 for everything.
AFAIK, the WiFi isn't all that intensive, but requires special considerations. With the ESP8266, you had to be careful to call yield() every few seconds, or the WiFi would hang. So it made it harder to write processor intensive tasks. The dual core of the ESP32 did away with that.
There is nothing confusing here. This is Renesas desperately trying to be relevant, wasting on organizational overheads, and half-measuring as they always do.
Just ordered one. Love that you can power this from a wide voltage range. A project of mine will use some kind of LiPo/LFP battery and now I can just wire it directly with the DC jack.
The only disappointment for me is that they've used the ESP32-S3-MINI-1 instead of the 1U. The latter has a connector for an external antenna. Have to look into whether swapping that is feasible.
I suppose they could have gone with a small OLED instead of the LED matrix. The CAN bus is nice: likely lead to a bunch of ODB2 hacking.
I was kinda worried the interface to the ESP32 would have been like the origional ESP8266 where you used AT commands. But it looks like the Wifi library abstracts out whatever interface they're using for the ESP32, so I was at least happy to see that.
Since the ESP32 handles the USB interface, it's probably possible to program both microcontrollers. I can't imagine a practical use for that, but bet it gets done pretty quick.