With all the capabilities, video and audio output, it might be an excellent platform for software emulation of older devices. There is plenty of GPIO that can be driven by the 40 MHz core while the other two work on nobler things.
It is a great platform for this, considering the cost. There have been several decent ESP based emulators already, including many consoles, a ZX Spectrum emulator, and even a 386 emulator.
Ah, the Lord Giveth and the Lord Taketh Away. P4 didn't have enough raw speed for camera applications but had MIPI CSI, S31 has enough raw speed but no CSI.
I imagine that most of these (like almost all embedded chips) are designed primarily for some specific customer or two, and then they dump them on the market generally on the off chance someone else wants them too now that they're essentially capitalized.
I'm actually wrong about S31. The cores are clocked lower than P4. And somehow I thought S31 is 250 MHz 16-bit DDR PSRAM but it's 8-bit only. So if you have an uncompressed video stream over CSI, there's just nowhere to buffer it.
Sorry for the staple "duh AI article" but the product would be interesting, XDA-Devs is an established name, and then reading chapter titles like "Peripherals already change how it looks" is appaling. Like, ok, you pump up the text with AI, but at least proofread that sentences make sense? At least the titles?
Hey, article author here. No, it's not an AI article. I've been sick the past couple of days and overlooked that heading. What I meant by it was that peripheral support changes how the device positions itself compared to others on the market.
I'll fix it, and thanks for mentioning it, but I also wanted to add that the "AI article" accusation was unnecessary. I spent a lot of time going through Espressif's documentation and the datasheet, and working out how Sv32 works and differs from the "MMU" implementation Espressif typically touts. It just feels like a strange accusation to tack on to an otherwise fair point regarding the article's readability.
That why I don't read the news part of xda-developers. Their staff seem to make a lot of basic technical errors despite what xda-developers is known for.
(Although xda-developers forum isn't exactly a great place for technical discussions either. Not following standard software engineering practice and instead using forum posts to track bugs and announce releases in 2020s is beyond me.)
I would never touch anything from there. I do not get how people just flash random binaries to their phones without verifying anything. It is basically asking for malware.
I have esp32’s in every room for tracking down The Who in home automation via home assistant and Bermuda. I soldered some headers for the first time and now I’m making custom pcb boards. I added a fog machine for my halloweeen decorations and I’m just having fun. I could see how a much powerful esp32 could eliminate the dozen have and allow to switch between the outlet and battery.
The range of difference in capabilities of different boards branded ESP32 is getting larger. Makes it tricky to figure out when someone says ‘you can run this on an ESP32’ what level of hardware investment is required.
They're all just single board computers, generally low-powered (literally and in the sense of capability, particularly memory)
They're generally intended to run flashed firmware and be single-purpose. They usually come bundled with peripheral components and typically have breakouts to add more (pots, sensors, etc).
They're great for doing one thing (though some support firmware switching), and you can build the 'software' for them pretty easily using Python or C-like variants.
So for hobbyists they're perfect. You want a quick LED christmas display you can toggle between Rudolph and Santa from a quick network call? You want a humidity sensor in your bedroom? You want to create a networked security camera? These are the types of use cases for MCUs.
what's the meaningful distinction now? It isn't all SoC anymore and it has had a linux capable MMU since S3, even if it required a lot of work.
The only real difference at this point is pure numbers, and i'm not that keen on defining microcontrollers as "those things with less ram than an SBC.", and if it's a microcontroller because it requires bare-metal flashes; well then I point to the older S3 MMU boards running busybox.
SBC is a PCB which includes ports for power, I/O, often other parts like sensors on it. Esp32 is a MCU. You can put an Esp32 on a PCB and call it an SBC. (Although semantically SBC usually refers to something that runs a GPOS, but perhaps that's flexible or changing)
It's much more difficult to buy the ESP32 as an MCU than it is to buy it as a SBC, with ports for power and I/O already on a PCB (often with through pins, to land on another PCB, like the arduino hats). And I don't mean "it's difficult because you have to solder" - I mean "it's difficult to find many places that sell it".
Ex - go check amazon, they're all the "dev kit" versions of ESP32.
Hell - even Alibaba has an overwhelming majority of the kits in the SBC form, rather than the straight MCU (although they at least exist in that form there, unlike amazon).
Even on digikey... there are like 4 listing for the straight MCU, and hundreds of listings for PCB board versions.
So I think for most consumers purchasing these... functionally they end up buying a form factor that is much closer to SBC than MCU.
---
From my perspective... I'm old enough to remember when Arduinos were the hot shit in this space, and now ESP32 is basically the same value prop at 1/10 the price point (or better, if you are actually willing to solder it to the PCB yourself... then you get down to 1/50th the price point).
A few notes: if you buy non-module package (i.e MCU itself) then you would need to certify it with FCC (or you local FCC alternative) yourself, so most of vendors buy modules. Those vendors don't go to amazon to buy those because these make sense only if they manufacturing their own boards.
Last time I checked digikey had every module version avaiable for every version. You get hundreds of other versions because there are more variations of those.
It's much more difficult to buy the ESP32 as an MCU than it is to buy it as a SBC, with ports for power and I/O already on a PCB (often with through pins, to land on another PCB, like the arduino hats). And I don't mean "it's difficult because you have to solder" - I mean "it's difficult to find many places that sell it".
1. Go to mouser.com
2. Type ESP32 into the search bar
3. There's your part.
Its difficult to buy a very specific nut or bolt from Amazon (their nut/bolt search interface doing precisely nothing it appears to be intended to do). That doesn't mean McMaster-Carr doesn't exist. You're just going to the wrong store.
If you're in particular referring to how hard it is to find a PDIP package (that is, a through-hole package) for an ATMEGA MCU, that's because they don't make them anymore. Insofar as I'm aware, Espressif has never made a through-hole ESP32 module, but maybe they made one with castellated edges?
But an ESP32 module is as easy to come by as a surface-mount ATMEGA328P. Which is to say, very easy.
The tangible hardware difference is the MMU. S3 didn't have a proper one. This new chip does. But the biggest difference is the intent. Microcontrollers focus on peripherals and are used for interfacing, data conversion and signal processing. They're meant to run either bare metal firmware or small RTOS. OTOH microprocessors have in addition to an MMU big caches, high IPC numbers, wide bus lanes, everything you need to run different workloads as fast as possible.
A single board computer contains an application processor, not a microcontroller. They have very different design goals.
A microcontroller is a type of processor that offers very fast startup, predictable timing and direct access to hardware peripherals. In contrast to application processors that are intended to run an operating system, a microcontroller will not have OoO execution, multiple tiers memory (eg cache and dram). Usually they also lack an mmu and multiple privilege levels of execution (although that seems more common on riscv microcontrollers). All this means microcontrollers aren’t designed to run Linux (even if someone does figure out how to do that) or clock in the gigahertz, but instead provide very predictable low latency execution required for managing real time systems. For example they might need to operate a set of mosfets with microsecond accuracy to efficiently and safely control a motor.
Perhaps the most straightforward difference is right in the name — a single-board computer is a whole board. A microcontroller refers to just the IC itself. The thing that's on the article's picture is a dev board for an MCU, not the MCU alone. That's just the chip at the top with the Espressif branding.
Now, if you want to argue that the difference between a dev board and an SBC is kind of vague, I agree on that front. I'd argue that the distinction is mostly the vendor's intent. E.g. if I sell the ICs in bulk and _also_ sell a board with that IC, it's probably a dev board. If I source the ICs from somebody else, only sell the assembled boards, and ship a general-purpose OS with it, it's probably an SBC. With sufficiently powerful hardware (like this thing seems to be), you could use a dev board as an SBC, and that is basically what this article is all about.
BTW, I was just researching this last week (the christmas display) and ESP32 has a matter compatible chip now... so you an control all this from Apple Home and the other Smart Home platforms.
Absolutely mind blowing. What a fun time to do side projects.
Originally it was the more capable successor to ESP8266, the super cheap chip containing a high speed core with wifi and an IP stack. At one point it powered a huge chunk of all smart devices on the market. Then the original ESP32 was introduced as the successor, with BLE and two cores which were even faster. That made it a very capable chip for tasks demanding compute. After the original ESP32 they decided to add variety and make a whole "ESP32 family" and yes there's quite a lot of variety these days. Even the ISA and cores changed.
It's a family of microcontrollers by Espressif. A microcontroller (MCU) is a type of integrated circuit (IC: physical appearance: Black rectangle of epoxy with exposed metal tabs). It has, in the same IC, a CPU, RAM, non-volatile FLASH memory, and a collection of peripherals which vary depending on the MCU. These usually include I/O protocols, ADCs, DACs, DMA controllers, math processors etc.
Stated another way: An MCU, like the ESP32, is a tiny computer, sans the hardware you physically interface with it.
The computing power, and memory is much lower than your desktop or laptop PC (or mobile phone), but if you are using it to run a dedicated task, instead of using a big OS like Linux or Windows, it can complete the tasks really fast (often microseconds) and with minimal power use. This is because it's easy to program to do exactly what you need, with nothing competing for the hardware.
A note on ESP in particular compared to other MCUs: It's one of the only (Or was?) options which has Wi-Fi integrated into the MCU itself. It's a good default if you want that.
The closest direct competitor is Bouffalo Lab's BL6xx chips, which do bluetooth and wifi and have an open SDK. Their documentation is very poor unfortunately (at least in English).
Otherwise NXP recently released their RW6xx line with wifi/bt/thread/zigbee. But as with any other western maker, the documentation and SDK aren't as easily accessible to mere mortals (but I think NXP in particular has gotten better with this).
At its core those all ESP32 are microcontrollers with RISC-V cores[0] and integrated wifi. There's a plethora of peripheral configurations, hence all those ESP32-* variations. This one even has Gbit ethernet and audio, bit still, at it's core (hah), RISC-V with only a few hundred MHz and 512kB RAM. So the peripherals are now similar to a Raspberry Pi, but not the CPU part itself.
The most common ESP32 boards now are still the Xtensa ones. Not all of the variants have WiFi. Some only have one core. A lot more variants than many would expect.
Comparisons to a Raspberry Pi are a stretch IMO. It is not a single board computer. You can't hook it up to a monitor/TV, plug a mouse and keyboard in, and use it as a Linux PC. However, there are people who use Raspberry Pis like a microcontroller because of its GPIOs... but they should all be using microcontrollers instead.
It's worth noting that just because it says ESP32, doesn't mean it has WiFi (see the P4), and yeah not just RISC-V but also xtensa. I think it's more synonymous with "has a very shitty ADC" imo.
I think they mean close to a pi in the sense it can run linux and has a better port selection, presumably they're comparing to an original pi or early model (ie pi 3). Also as others have pointed out Pi's have largely followed inflation, they just have more premium options nowadays
Too bad Linux has removed Execute-in-place (XIP) support for RISC-V since 7.1. It allows to run the kernel (and applications) from NOR flash directly, without copying it into RAM first. Somebody should reintroduce it.
Espressif's port use 6.18 due to this exact reason. There's also another port, using 7.1, not sure if it supports XIP.
IMO Linux is gradually becoming a poor fit for niche use cases and extremely constrained devices. It makes sense, as they are trying to trim less used parts of the code that add maintenance overhead (especially areas without any volunteers to maintain them). And RTOSes are gradually replacing Linux on MCUs. I don’t know what’s best to replace it if you want a full OS, probably NetBSD?
On the topic of general purpose OSes for the ESP32 a project I've been a big fan of is SolarOS, which provides Python and Lua runtimes for user application development and a rapidly expanding API and list of built-in applications. I use it on a LilyGO T-Deck to turn it into something similar to a classic PDA with a python program that reads battery status from various devices I have running on ANT BMS units, far quicker than the utter garbage first-party ANT mobile app.
In the abstract I don't care. Without a set of project requirements for an embedded project this is just a soup of features. What is more impressive is the wild diversity of options they offer. Further making serious fun of anybody who gets lost in trying to maintain a MCU vs SBC processor dichotomy. Focus on the application. I think the difference is in how people conceptualize general purpose computing (desktop) and the thing I want on my wrist or on my copter or in my machinery and so on. It isn't in MCU vs SBC etc.
I don't know what's the final retail/bulk price of S31 and its modules will be, but S3 module with 16 MB NOR Flash and 8 MB PSRAM costs $3.5 for 500+ pcs, and the final PCB BOM cost is $4 or so.
According to Espressif website, current "reference price" for S31 sample module (1 piece) with 16MB flash + 16MB RAM is $6.2.
If S31 won't be much more expensive than S3 in bulk, it has a chance to become a very successful and what's more importantly really cheap full-featured Linux platform, in a small form factor, with flash, RAM, and radios integrated.
Espressif here could easily kill many contenders. You can count Wi-Fi-integrated Linux SoCs on one hand, let alone with RAM+Flash integrated, let alone cheap and available in quantities, and with reasonable soft and tech support.
Oh, and ESP module quite literally doesn't need anything more than a 3.3V power and maybe 2 capacitors to work.
I’ve been developing a guitar pedal firmware in an ESP32-P4, and the flash image size is still under 1 MB and the PSRAM sits unused. It has not only a bunch of sound filters, control code for ADC, DAC a couple of USB devices, SDIO and LittleFS, but also a full-blown serial terminal TUI to control all sorts of details and to monitor performance. Said performance is good, but what blows me away is that there’s no jitter in the number that measures the number of cycles the processor executes while processing a sound frame, i.e. no preemption by the kernel to go and take care of its business.
There’s no way a multi-user OS such as Linux can be as efficient as a firmware blob that does one thing. Tell me if I’m wrong, but in my mental model, one can get about the same mileage with 16 MB of PSRAM in an MCU running FreeRTOS as one can get in a 512 MB SBC running Linux. For my use case, the winner combination would, of course, be a 512 MB SBC running FreeRTOS, but I’ve so far been unable to find such a wondrous thing.
The benefit of running Linux on a what used to be an MCU is that you're getting the best network stack, Bluetooth/Wi-Fi stack, one of the best device drivers (say for USB Host), stock and very well tested software, etc.
For your use case, you need raw performance and low-level control, and you have it. But for IoT device which is all about network more or less, there's usually no need to go low-level.
ESP32 for Wi-Fi handling uses wpa_supplicant port from Linux for example.
You can run a real, multi-user Linux with as low RAM as 8 MB. You get the benefit of running any Linux-supported programming languages (and combine any amount of them without extra effort, just on a real machine), established portable abstractions, established memory protection model, ease of debugging.
You can run both though. Both FreeRTOS and Linux simultaneously, where Linux is a FreeRTOS task on a dedicated core. That's how several Linux ports work, haven't checked if Espressif's works this way as well.
There’s no way a multi-user OS such as Linux can be as efficient as a firmware blob that does one thing
Yes, obviously. The advantage is in how easy it is to port software to the board, and how much work you need to do to get any given amount of functionality.
It looks like this latest version has an actual MMU of sorts, so that should make many things possible.
By "of sorts" you mean a full RISC-V 32-bit MMU (Sv32).
With all the capabilities, video and audio output, it might be an excellent platform for software emulation of older devices. There is plenty of GPIO that can be driven by the 40 MHz core while the other two work on nobler things.
It is a great platform for this, considering the cost. There have been several decent ESP based emulators already, including many consoles, a ZX Spectrum emulator, and even a 386 emulator.
https://github.com/foky26/Retro-Gamer
https://github.com/EremusOne/ESPectrum
https://github.com/hchunhui/tiny386
New chips like the one in the article should be even more capable. 486 won’t be out of reach for long.
One of the big problems has been handling peripheral emulation, multiple controllers, etc. USB plus the other cores should help with this.
Ah, the Lord Giveth and the Lord Taketh Away. P4 didn't have enough raw speed for camera applications but had MIPI CSI, S31 has enough raw speed but no CSI.
My reaction precisely when I first heard the specs for this thing. Espressif works in mysterious ways.
I imagine that most of these (like almost all embedded chips) are designed primarily for some specific customer or two, and then they dump them on the market generally on the off chance someone else wants them too now that they're essentially capitalized.
What about the P4's "raw speed" is lacking for camera applications (vs S31)?
I'm actually wrong about S31. The cores are clocked lower than P4. And somehow I thought S31 is 250 MHz 16-bit DDR PSRAM but it's 8-bit only. So if you have an uncompressed video stream over CSI, there's just nowhere to buffer it.
Sorry for the staple "duh AI article" but the product would be interesting, XDA-Devs is an established name, and then reading chapter titles like "Peripherals already change how it looks" is appaling. Like, ok, you pump up the text with AI, but at least proofread that sentences make sense? At least the titles?
Hey, article author here. No, it's not an AI article. I've been sick the past couple of days and overlooked that heading. What I meant by it was that peripheral support changes how the device positions itself compared to others on the market.
I'll fix it, and thanks for mentioning it, but I also wanted to add that the "AI article" accusation was unnecessary. I spent a lot of time going through Espressif's documentation and the datasheet, and working out how Sv32 works and differs from the "MMU" implementation Espressif typically touts. It just feels like a strange accusation to tack on to an otherwise fair point regarding the article's readability.
The article seems to confuse the MCU and some sort of undisclosed SBC for the MCU. Well, it’s starting to do this in the headline.
That why I don't read the news part of xda-developers. Their staff seem to make a lot of basic technical errors despite what xda-developers is known for.
(Although xda-developers forum isn't exactly a great place for technical discussions either. Not following standard software engineering practice and instead using forum posts to track bugs and announce releases in 2020s is beyond me.)
I would never touch anything from there. I do not get how people just flash random binaries to their phones without verifying anything. It is basically asking for malware.
I have esp32’s in every room for tracking down The Who in home automation via home assistant and Bermuda. I soldered some headers for the first time and now I’m making custom pcb boards. I added a fog machine for my halloweeen decorations and I’m just having fun. I could see how a much powerful esp32 could eliminate the dozen have and allow to switch between the outlet and battery.
I'm sorry to be asking this, but what is that supposed to mean?
Pete Townshend knows what he did.
"Who is going through this room" to power automations for that individual
https://github.com/agittins/bermuda
Smart homes are dumb unless you are presence aware. Looking at your phone to do a thing is just moving a light switch to your hand.
The Who is — does the automation make sense for one or many people. If two people are in a room what happens? If one person leaves what happens?
Esp32’s are pivotal in actually making a smart home predict what you want making the home more of a friend, “get on up there Peter Townsend.”
it means they're Going Mobile. And they Won't Get Fooled Again.
"Bermuda aims to let you track any bluetooth device, and have Home Assistant tell you where in your house that device is."
The range of difference in capabilities of different boards branded ESP32 is getting larger. Makes it tricky to figure out when someone says ‘you can run this on an ESP32’ what level of hardware investment is required.
I am really struggling to understand what ESP32 is. I've got into adjacent things a bit recently, but haven't figured that one out yet.
They're all just single board computers, generally low-powered (literally and in the sense of capability, particularly memory)
They're generally intended to run flashed firmware and be single-purpose. They usually come bundled with peripheral components and typically have breakouts to add more (pots, sensors, etc).
They're great for doing one thing (though some support firmware switching), and you can build the 'software' for them pretty easily using Python or C-like variants.
So for hobbyists they're perfect. You want a quick LED christmas display you can toggle between Rudolph and Santa from a quick network call? You want a humidity sensor in your bedroom? You want to create a networked security camera? These are the types of use cases for MCUs.
you can also use Rust.
Yea - I think this is one of Rust's core use cases.
They're not single board computers. They're microcontrollers. Or rather they were until this new chip was introduced.
what's the meaningful distinction now? It isn't all SoC anymore and it has had a linux capable MMU since S3, even if it required a lot of work.
The only real difference at this point is pure numbers, and i'm not that keen on defining microcontrollers as "those things with less ram than an SBC.", and if it's a microcontroller because it requires bare-metal flashes; well then I point to the older S3 MMU boards running busybox.
SBC is a PCB which includes ports for power, I/O, often other parts like sensors on it. Esp32 is a MCU. You can put an Esp32 on a PCB and call it an SBC. (Although semantically SBC usually refers to something that runs a GPOS, but perhaps that's flexible or changing)
It's much more difficult to buy the ESP32 as an MCU than it is to buy it as a SBC, with ports for power and I/O already on a PCB (often with through pins, to land on another PCB, like the arduino hats). And I don't mean "it's difficult because you have to solder" - I mean "it's difficult to find many places that sell it".
Ex - go check amazon, they're all the "dev kit" versions of ESP32.
Hell - even Alibaba has an overwhelming majority of the kits in the SBC form, rather than the straight MCU (although they at least exist in that form there, unlike amazon).
Even on digikey... there are like 4 listing for the straight MCU, and hundreds of listings for PCB board versions.
So I think for most consumers purchasing these... functionally they end up buying a form factor that is much closer to SBC than MCU.
---
From my perspective... I'm old enough to remember when Arduinos were the hot shit in this space, and now ESP32 is basically the same value prop at 1/10 the price point (or better, if you are actually willing to solder it to the PCB yourself... then you get down to 1/50th the price point).
A few notes: if you buy non-module package (i.e MCU itself) then you would need to certify it with FCC (or you local FCC alternative) yourself, so most of vendors buy modules. Those vendors don't go to amazon to buy those because these make sense only if they manufacturing their own boards.
Last time I checked digikey had every module version avaiable for every version. You get hundreds of other versions because there are more variations of those.
1. Go to mouser.com
2. Type ESP32 into the search bar
3. There's your part.
Its difficult to buy a very specific nut or bolt from Amazon (their nut/bolt search interface doing precisely nothing it appears to be intended to do). That doesn't mean McMaster-Carr doesn't exist. You're just going to the wrong store.
If you're in particular referring to how hard it is to find a PDIP package (that is, a through-hole package) for an ATMEGA MCU, that's because they don't make them anymore. Insofar as I'm aware, Espressif has never made a through-hole ESP32 module, but maybe they made one with castellated edges?
But an ESP32 module is as easy to come by as a surface-mount ATMEGA328P. Which is to say, very easy.
The tangible hardware difference is the MMU. S3 didn't have a proper one. This new chip does. But the biggest difference is the intent. Microcontrollers focus on peripherals and are used for interfacing, data conversion and signal processing. They're meant to run either bare metal firmware or small RTOS. OTOH microprocessors have in addition to an MMU big caches, high IPC numbers, wide bus lanes, everything you need to run different workloads as fast as possible.
Technically a chip can excel at both.
A single board computer contains an application processor, not a microcontroller. They have very different design goals.
A microcontroller is a type of processor that offers very fast startup, predictable timing and direct access to hardware peripherals. In contrast to application processors that are intended to run an operating system, a microcontroller will not have OoO execution, multiple tiers memory (eg cache and dram). Usually they also lack an mmu and multiple privilege levels of execution (although that seems more common on riscv microcontrollers). All this means microcontrollers aren’t designed to run Linux (even if someone does figure out how to do that) or clock in the gigahertz, but instead provide very predictable low latency execution required for managing real time systems. For example they might need to operate a set of mosfets with microsecond accuracy to efficiently and safely control a motor.
Perhaps the most straightforward difference is right in the name — a single-board computer is a whole board. A microcontroller refers to just the IC itself. The thing that's on the article's picture is a dev board for an MCU, not the MCU alone. That's just the chip at the top with the Espressif branding.
Now, if you want to argue that the difference between a dev board and an SBC is kind of vague, I agree on that front. I'd argue that the distinction is mostly the vendor's intent. E.g. if I sell the ICs in bulk and _also_ sell a board with that IC, it's probably a dev board. If I source the ICs from somebody else, only sell the assembled boards, and ship a general-purpose OS with it, it's probably an SBC. With sufficiently powerful hardware (like this thing seems to be), you could use a dev board as an SBC, and that is basically what this article is all about.
BTW, I was just researching this last week (the christmas display) and ESP32 has a matter compatible chip now... so you an control all this from Apple Home and the other Smart Home platforms.
Absolutely mind blowing. What a fun time to do side projects.
Originally it was the more capable successor to ESP8266, the super cheap chip containing a high speed core with wifi and an IP stack. At one point it powered a huge chunk of all smart devices on the market. Then the original ESP32 was introduced as the successor, with BLE and two cores which were even faster. That made it a very capable chip for tasks demanding compute. After the original ESP32 they decided to add variety and make a whole "ESP32 family" and yes there's quite a lot of variety these days. Even the ISA and cores changed.
It's a family of microcontrollers by Espressif. A microcontroller (MCU) is a type of integrated circuit (IC: physical appearance: Black rectangle of epoxy with exposed metal tabs). It has, in the same IC, a CPU, RAM, non-volatile FLASH memory, and a collection of peripherals which vary depending on the MCU. These usually include I/O protocols, ADCs, DACs, DMA controllers, math processors etc.
Stated another way: An MCU, like the ESP32, is a tiny computer, sans the hardware you physically interface with it.
The computing power, and memory is much lower than your desktop or laptop PC (or mobile phone), but if you are using it to run a dedicated task, instead of using a big OS like Linux or Windows, it can complete the tasks really fast (often microseconds) and with minimal power use. This is because it's easy to program to do exactly what you need, with nothing competing for the hardware.
A note on ESP in particular compared to other MCUs: It's one of the only (Or was?) options which has Wi-Fi integrated into the MCU itself. It's a good default if you want that.
Indeed. The closest direct competitor is likely the Nordic nRF52840, which does bluetooth + thread, but can't talk actual wifi
The closest direct competitor is Bouffalo Lab's BL6xx chips, which do bluetooth and wifi and have an open SDK. Their documentation is very poor unfortunately (at least in English).
Otherwise NXP recently released their RW6xx line with wifi/bt/thread/zigbee. But as with any other western maker, the documentation and SDK aren't as easily accessible to mere mortals (but I think NXP in particular has gotten better with this).
ESP32 boards are small and cheap adapters between Wifi (network APIs) and I/O pins for small electronics like LEDs and relays.
If you want a web API for something in the physical world, make ESP32 do it.
I use an esp8266 to control a relay attached to a lava lamp. Every 5 minutes it pings an NTP server and closes the relay if it's the evening.
At its core those all ESP32 are microcontrollers with RISC-V cores[0] and integrated wifi. There's a plethora of peripheral configurations, hence all those ESP32-* variations. This one even has Gbit ethernet and audio, bit still, at it's core (hah), RISC-V with only a few hundred MHz and 512kB RAM. So the peripherals are now similar to a Raspberry Pi, but not the CPU part itself.
[0] older versions had Xtensa cores, not RISC-V.
The most common ESP32 boards now are still the Xtensa ones. Not all of the variants have WiFi. Some only have one core. A lot more variants than many would expect.
Comparisons to a Raspberry Pi are a stretch IMO. It is not a single board computer. You can't hook it up to a monitor/TV, plug a mouse and keyboard in, and use it as a Linux PC. However, there are people who use Raspberry Pis like a microcontroller because of its GPIOs... but they should all be using microcontrollers instead.
It's worth noting that just because it says ESP32, doesn't mean it has WiFi (see the P4), and yeah not just RISC-V but also xtensa. I think it's more synonymous with "has a very shitty ADC" imo.
"ESP32" is a brand name. It covers devices with different CPU cores - Tensilica Xtensa and more recently RISC-V.
Each type of device has different capabilities. Most have Wifi, some don't. Some have extra RAM and ROM, and some don't.
The main thing that ties all the different devices together is the ESP-IDF software stack.
Still only 2.4GHz wifi :-/
small boards with small batteries are better off with one radio and one antenna.
yeah only universal compatibility what a shame
Universal compatibility only helps if you can actually reach the access point over the most crowded channels in the apartment building.
It's 802.11ax, it's much better than 802.11n.
i used to serve esp32s31.fun, now building a zigbee/ble-mesh multi-protocol matter hub that can comfortably host 1000 bridged nodes.
My Android phone is also much more beefy than all PC combined I owned between 1992 and 2003.
Most embedded stuff doesn't need that much power.
That is how we end up with Electron.
What is wrong with having options? Even the ESP32 family already have C line for low power applications. No need to project Electron into everything.
Exactly the option is using Raspberry PI instead of ESP32.
I think trying to be everything devalues the original idea.
Good. Raspberry pi foundation thinks making $200 computers is progress, hope they get their lunch eaten
Article doesn't mention what Pi they are comparing to but it's clearly not a $200 one lmao
I think they mean close to a pi in the sense it can run linux and has a better port selection, presumably they're comparing to an original pi or early model (ie pi 3). Also as others have pointed out Pi's have largely followed inflation, they just have more premium options nowadays
Too bad Linux has removed Execute-in-place (XIP) support for RISC-V since 7.1. It allows to run the kernel (and applications) from NOR flash directly, without copying it into RAM first. Somebody should reintroduce it.
Espressif's port use 6.18 due to this exact reason. There's also another port, using 7.1, not sure if it supports XIP.
https://www.phoronix.com/news/RISC-V-XIP-Being-Removed
XIP is almost essential for these low-RAM devices. You can run Linux with 8 MB RAM with reasonable functionality.
IMO Linux is gradually becoming a poor fit for niche use cases and extremely constrained devices. It makes sense, as they are trying to trim less used parts of the code that add maintenance overhead (especially areas without any volunteers to maintain them). And RTOSes are gradually replacing Linux on MCUs. I don’t know what’s best to replace it if you want a full OS, probably NetBSD?
On the topic of general purpose OSes for the ESP32 a project I've been a big fan of is SolarOS, which provides Python and Lua runtimes for user application development and a rapidly expanding API and list of built-in applications. I use it on a LilyGO T-Deck to turn it into something similar to a classic PDA with a python program that reads battery status from various devices I have running on ANT BMS units, far quicker than the utter garbage first-party ANT mobile app.
https://github.com/nilseuropa/solar_os
In the abstract I don't care. Without a set of project requirements for an embedded project this is just a soup of features. What is more impressive is the wild diversity of options they offer. Further making serious fun of anybody who gets lost in trying to maintain a MCU vs SBC processor dichotomy. Focus on the application. I think the difference is in how people conceptualize general purpose computing (desktop) and the thing I want on my wrist or on my copter or in my machinery and so on. It isn't in MCU vs SBC etc.
I don't know what's the final retail/bulk price of S31 and its modules will be, but S3 module with 16 MB NOR Flash and 8 MB PSRAM costs $3.5 for 500+ pcs, and the final PCB BOM cost is $4 or so.
According to Espressif website, current "reference price" for S31 sample module (1 piece) with 16MB flash + 16MB RAM is $6.2.
If S31 won't be much more expensive than S3 in bulk, it has a chance to become a very successful and what's more importantly really cheap full-featured Linux platform, in a small form factor, with flash, RAM, and radios integrated.
Espressif here could easily kill many contenders. You can count Wi-Fi-integrated Linux SoCs on one hand, let alone with RAM+Flash integrated, let alone cheap and available in quantities, and with reasonable soft and tech support.
Oh, and ESP module quite literally doesn't need anything more than a 3.3V power and maybe 2 capacitors to work.
I’ve been developing a guitar pedal firmware in an ESP32-P4, and the flash image size is still under 1 MB and the PSRAM sits unused. It has not only a bunch of sound filters, control code for ADC, DAC a couple of USB devices, SDIO and LittleFS, but also a full-blown serial terminal TUI to control all sorts of details and to monitor performance. Said performance is good, but what blows me away is that there’s no jitter in the number that measures the number of cycles the processor executes while processing a sound frame, i.e. no preemption by the kernel to go and take care of its business.
There’s no way a multi-user OS such as Linux can be as efficient as a firmware blob that does one thing. Tell me if I’m wrong, but in my mental model, one can get about the same mileage with 16 MB of PSRAM in an MCU running FreeRTOS as one can get in a 512 MB SBC running Linux. For my use case, the winner combination would, of course, be a 512 MB SBC running FreeRTOS, but I’ve so far been unable to find such a wondrous thing.
The benefit of running Linux on a what used to be an MCU is that you're getting the best network stack, Bluetooth/Wi-Fi stack, one of the best device drivers (say for USB Host), stock and very well tested software, etc.
For your use case, you need raw performance and low-level control, and you have it. But for IoT device which is all about network more or less, there's usually no need to go low-level.
ESP32 for Wi-Fi handling uses wpa_supplicant port from Linux for example.
You can run a real, multi-user Linux with as low RAM as 8 MB. You get the benefit of running any Linux-supported programming languages (and combine any amount of them without extra effort, just on a real machine), established portable abstractions, established memory protection model, ease of debugging.
You can run both though. Both FreeRTOS and Linux simultaneously, where Linux is a FreeRTOS task on a dedicated core. That's how several Linux ports work, haven't checked if Espressif's works this way as well.
Zephyr rtos on raspberry pi sbc https://github.com/jetpax/PiZZa/tree/main
you can assign cores to rt processes - that are not used by the kernel
Yes, obviously. The advantage is in how easy it is to port software to the board, and how much work you need to do to get any given amount of functionality.
Sounds nice. I'd like to see a hardware that is optimized for being a low power, high bandwidth network server at home:
- 1 or 2 M.2 NVMe for fast storage
- 2 RAM sockets for expandability. Not sure if DDR5 or if DDR4 is sufficient. SO-DIMM is fine.
- 2.5 GBit ethernet (or better). Two ports would be better than one.
- a CPU with a bunch of cores that can saturate it well. Also a NPU inside the CPU.
- power via USB-PD
- optionally a couple of USB ports for things like USB sticks, Wifi (if needed), printer.
That's it. I don't need a display port like HDMI or DP.