SIMD-accelerated computer vision on a $2 microcontroller
Posted by zdw 3 days ago
Comments
Comment by jwr 2 days ago
ESP32-C3-Zero are $2.80 each.
These prices are absolutely ridiculous for what you get. Also, the ease of use of these boards is incredible. Just connect them via USB to your computer and off you go.
Comment by twisteriffic 2 days ago
https://www.reddit.com/r/GlobalEntry/comments/1x4c062/us_ord...
Comment by afdbcreid 2 days ago
So the conclusion is not necessarily "don't buy ESP", but "verify what you're actually buying".
Comment by dataflow 2 days ago
Comment by ashkankiani 2 days ago
Comment by monocasa 2 days ago
I bet there's either something the poster isn't telling us, or CBP made a bad call.
Comment by lp92 2 days ago
Comment by afdbcreid 2 days ago
Comment by blacksmith_tb 2 days ago
Comment by anigbrowl 2 days ago
https://documentation.espressif.com/en/documentList?t=Certif...
It could be there's more to the story of what the person ordered, or it could be that CBP are misapplying the rules (quite likely under this administration), but it seems like some very overstated assumptions as written.
Comment by snarfy 2 days ago
Comment by htrp 2 days ago
Comment by ra120271 2 days ago
The intercom does ring-around: a visitor presses the button, it calls the first number on its list (my mobile), and if nobody answers it tries the next (my wife's mobile). Except it counts voicemail as an answer. If the first phone goes to voicemail, the intercom decides the job is done and numbers two and three never ring. So the list is effectively one number long if my phone has no reception. I assume nobody tested it against a phone that was switched off or travelling on the London tube.
I gave up on the chain calling in a the first week of several failed delivery attempts. Now an ESP32 and a SIM7600 sit first on the list instead. The modem picks up after 3 seconds, sends a # DTMF tone (the intercom’s open command), hangs up, and texts me that someone came in.
Since this is a mass used car security gate it is a weak security control and more to hinder casual drivers parking where they are not supposed to - and now I get my packages too :P
Comment by nsarrazin 2 days ago
Just around the home I have:
- a board that captures the audio output from my vinyl player and streams it on my LAN (so I can play my records on speakers across the house)
- one esp32 in each of my DIY speakers around the house driving the DAC+amplifier
- smart plant sensors that measure soil humidity, temperature, etc.
- a camera inside of a bird house, solar powered
- a 8x8 lidar ToF distance measurement board for detecting sleep phase
Comment by lp92 2 days ago
Hah, that was one of my first projects long time ago before ESP32s even existed (PIC FTW!). Feels like this is one of those rights of passage projects for many people.
Comment by aardvarkdriver 2 days ago
Comment by beagle3 2 days ago
Comment by jwr 2 days ago
Also, a home air quality monitor, both with a display and reporting to my mesh network.
Or you could build a "plane radar" like this one :-) https://github.com/ironicbadger/ESP32-Plane-Radar
Comment by ssl-3 2 days ago
A somewhat-elaborate fan speed controller for a wonderful old pro audio power amp that also needed a good bit of other rehab
A window fan controller, for summer use, that only turns on the fan when it's cooler outside than it is inside -- so it only cools the indoors, seeks never to heat it
A sensor for automating the color temperature of my indoor lighting based on outdoor conditions
A macro pad that ultimately works kind of like a Streamdeck, but without the built-in display features (that was a download-and-print project)
Other random stuff, like an ESPHome widget that talked to a window aircon via infrared commands (mostly just a download-and-run project)
They're just cheap little programmable low[ish]-power computers on a board, with some flash storage and RAM, and a fair bit of low-level IO. Often with wireless network connectivity as a built-in. They do stuff. :)
If the code is tight-enough, they can do a remarkable amount of that stuff -- in terms of raw compute, they present something near-ish to the Pentium era of personal computing for a few dollars.
For me, they make sense for simple projects. When something like a disused laptop or a Raspberry Pi-like device [and the accoutrements, like a whole-ass operating system] seems like overkill, then: It's probably overkill.
With a dev board, I can breadboard a circuit and maybe even leave it that way forever, or get a custom PCB drawn up with KiCad and made inexpensively by JLC PCB or Osh Park or whatever, or just solder wires and parts to the dev board like a caveman.
All methods work, and the cost of screwing it up is usually very low.
After that, the thing gets powered up with one of the featureless USB wall warts that we all have accumulated too many of and it just sits there and does its job.
(And honestly, these Pi Pico and random ESP32 dev boards are also overkill for what I do with them. Most of what I've done could be accomplished with an MCU chip that costs pennies instead of dollars, but my quantities are low-enough that I just don't care much about a few dollars for occasional one-off projects.)
Comment by teaearlgraycold 2 days ago
Comment by nick__m 2 days ago
Comment by KZerda 2 days ago
Comment by javawizard 2 days ago
Comment by jwr 1 day ago
Comment by pjmlp 2 days ago
Indeed, don't forget it is more powerful than computers like this one,
Comment by asimeqi 2 days ago
Comment by anigbrowl 2 days ago
Newer models like the ESP32-P4 are substantially more powerful, running dual cores and with all sorts of computational acceleration built in.
Comment by MeteorMarc 2 days ago
Comment by zimpenfish 2 days ago
Comment by randerson 2 days ago
Comment by glouwbug 2 days ago
Comment by pavlov 2 days ago
The Pentium III was a superscalar core that scaled up to 1.4 GHz. This microcontroller is max 240 MHz and does less work per cycle.
Comment by vardump 22 hours ago
While P3 is superscalar, it could only execute about 0.9 instructions per cycle on average. Of course you can optimize for it and get better results in certain cases.
Most Xtensa scalar instructions take just 1 clock, branches 3 for taken, 1 for not taken. So 0.7-0.8 instructions per clock is a reasonable estimate. Assuming of course code is executing from SRAM.
Xtensa's FPU is slow, and it lacks divide and square root instructions. Clock for clock, P3 probably outperforms it by 3-4x. It also lacks 64-bit floats.
Comment by pjmlp 2 days ago
So naturally an ESP32 can do so much more.
Comment by nl 2 days ago
I recently implemented a beam-forming microphone with LLM transcription (offloaded to a browser model)[1] and was able to get all the beamforming and noise cancellation DSP code running on the second core along with the UI, while the and webserver that streams audio uses core 0.
I don't use SIMD myself, but it uses esp-dsp which is already using it.
Comment by peesem 2 days ago
Comment by camel-cdr 2 days ago
So you basically get a full AVX-512/SVE level SIMD ISA, minus FP support and with 64-bit SIMD width. But you still have LMUL, which will be great here to maximize utilization.
Comment by adolph 2 days ago
0. https://bitbanksoftware.blogspot.com/2026/04/esp32-p4-simd-e...
1. https://documentation.espressif.com/esp32-s31_datasheet_en.p...
2. https://documentation.espressif.com/esp32-p4_technical_refer...
Comment by topspin 2 days ago
They also don't hesitate to signal "mass production" availability while they're still working out substantial errata. Espressif will ship the moral equivalent of "engineering sample" silicon (no, they don't call it that) for early use by their supported customers, and eventually iron out the bulk of the issues in later silicon.
Espressif applies the "release early, release often" model of open-source software, but for silicon, and I love them for it. But it does create pitfalls for early adopters that don't understand the game.
So the big hole in ESP32-S31 SIMD documentation (literally "Coming soon"[1]) isn't surprising, despite the fact that you can buy official and third party dev boards right now.
[1] https://esp32-s31.espressif.com/en/docs/9-Technical%20Refere...
Comment by Taniwha 2 days ago
https://documentation.espressif.com/esp32-s31_technical_refe...
OTOH it has a full MMU and will run linux
OTOOH it comes in a new WROOM package that's much harder to hand solder (not castelated so they can have lots more pins
Comment by paaloeye 2 days ago
Comment by PowerElectronix 2 days ago
Comment by paaloeye 2 days ago
Comment by dsign 2 days ago
[^1] Though, to be honest, x86 has great automatic SIMD tools so I never had to try too hard.
Comment by meindnoch 2 days ago
Comment by ballmerpoint 2 days ago
Comment by TGower 2 days ago
The resulting SIMD being illegible isn't an issue in my eyes, assembly isn't a language known for it's readability in general. If you want to really understand what the assembly is doing, ask your LLM to whip up a visualization and explanation tailored to your input data where you can see how each operation leads you to the final result.
Comment by pezgordo 2 days ago
Comment by ballmerpoint 2 days ago
I dunno, clearly I need an LLM psychiatrist.
Comment by paaloeye 2 days ago
Comment by lukan 2 days ago
Detecting corners, but to what resolution/detail, a picture with a result would have been helpful to understand the capability.
edit: missed this link, this is what this is about
https://en.wikipedia.org/wiki/Features_from_accelerated_segm...
Comment by iqbal1980 2 days ago
Comment by paaloeye 2 days ago
Comment by ReptileMan 2 days ago
Comment by robrogers-assis 2 days ago
Comment by varispeed 2 days ago
Comment by anthomtb 2 days ago
Comment by varispeed 2 days ago
If you do multiplication using mul instead of loop and add, is it acceleration too?
Comment by anthomtb 2 days ago
The article would then be "MUL-accelerated multiplication". Obviously any modern compiler should not require a developer to make that optimization.
What does "normal instructions" mean? I don't see (or missed) a heading with "Normal" in the ESP32 docs.
Edit: Or are you saying the instruction called out by the author is not SIMD?
Comment by vardump 2 days ago
Or perhaps you want to argue that everything is running "normal" instructions. Be it a hardware video decoder or a GPU.
Comment by boomlinde 2 days ago