Arduino Uno R4 WiFi
store.arduino.cc
store.arduino.cc
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.
you can use GCC with https://github.com/renesas/fsp if you want to go very low level.
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).
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.
They don't want to be responsible for security?
I've done this to airgap devices.
I imagine they used the Ra4M1 for stability concerns.
Personally for the latter reason I think if you’re targeting the ESP32 you should skip the Arduino ecosystem and just write native code.
I use the ESP IDF framework because it has so much better support.
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.
Some module LDOs cap out at 500mA, but you need 800mA and proper bypass caps on the VDD for WiFi spikes. Good call on the Tantalum caps.
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.
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.
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
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.
Will be interesting to see how low Nordics price point will go with their single package solution!
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...
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.
I don't think I'd introduce someone to embedded with a rpi.
The amount of competition in this space is fantastic!
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 :)
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.
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!
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.
Let’s just say I won’t be waiting for it.
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.
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.
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)
- 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-workI 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.
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]
1. https://github.com/espressif/arduino-esp32/blob/72c41d09538663ebef80d29eb986cd5bc3395c2d/cores/esp32/main.cpp#L45
2. https://www.reddit.com/r/esp32/comments/t9aqr6/what_on_earth_is_my_esp32_doing_between_loops/
3. https://github.com/arduino/ArduinoCore-renesas/blob/149f78b6490ccbafeb420f68919c381a5bdb6e21/cores/arduino/main.cpp#L115
4. https://github.com/arduino/ArduinoCore-avr/blob/eabd762a1edcf076877b7bec28b7f99099141473/cores/arduino/main.cpp#L46Based 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.
So having cheap and easily available electronics that can still interface with 5 volts can be very useful to some of us.
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).
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.
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.
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
0. https://www.mouser.com/new/renesas/renesas-ra4m1-mcu/
1. https://www.mouser.com/ProductDetail/Espressif-Systems/ESP32...
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.
The board has "Open Source is [heart]" but no OSHW logo, nor links to a repo.
[1] https://files.littlebird.com.au/Shared-Image-2023-06-27-16-4...