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.
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.
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...).
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.
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?
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.
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.
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.
I imagine they used the Ra4M1 for stability concerns.
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 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.
Same energy.
https://www.sparkfun.com/products/retired/7917
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.
They don't want to be responsible for security?
I've done this to airgap devices.
Deleted Comment
Deleted Comment
Deleted Comment
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.
Edit: typos
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.
https://www.cnx-software.com/2023/02/03/beken-bk7256-320-mhz...
Discussed here yesterday: https://news.ycombinator.com/item?id=36475144
On further examination, the one thing it doesn't discuss is Wi-Fi, although it has 2.4gHz. Well, I'll leave this here in case you find it interesting.
I'll probably get a few just to play around with it. I have so many hats and shields at this point it would be a waste not to update the MCU.
Long term, you basically stop using them. Although during COVID, I needed some high GPIO boards and there were megas in-stock.
The amount of competition in this space is fantastic!
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!
[0] - https://github.com/toverainc/willow
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.
The R7FA4M1AB3CFM costs $3.42 at quantity: https://www.digikey.com/en/products/detail/R7FA4M1AB3CFM%252...
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.
https://dronebotworkshop.com/esp32-object-detect/
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
maybe i'll think of a three-core micro project :)
Didn't that happen years ago when they made boards for chips from intel of all people?
(Although, I'm still disappointed the edison didn't take off tbh)
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.