Join us on Wednesday, May 6 at noon Pacific for the ESP32-S2 Hack Chat with Limor “Ladyada” Fried and Scott Shawcroft!
When Espressif released the ESP8266 microcontroller back in 2014, nobody could have predicted how successful the chip was to become. While it was aimed squarely at the nascent IoT market and found its way into hundreds of consumer devices like smart light bulbs, hackers latched onto the chip and the development boards it begat with gusto, thanks to its powerful microcontroller, WiFi, and lots of GPIO.
The ESP8266 was not without its problems, though, and security was always one of them. The ESP32, released in 2016, addressed some of these concerns. The new chip added another CPU core, a co-processor, Bluetooth support, more GPIO, Ethernet, CAN, more and better ADCs, a pair of DACs, and a host of other features that made it the darling of the hacker world.
Now, after being announced in September of 2019, the ESP32-S2 is finally making it into hobbyist’s hands. On the face of it, the S2 seems less capable, with a single core and neither Bluetooth nor Ethernet. But with a much faster CPU, scads more GPIO, more ADCs, a RISC-V co-processor, native USB, and the promise of very low current draw, it could be that the ESP32-S2 proves to be even more popular with hobbyists as it becomes established.
To talk us through the new chip’s potential, Limor “Ladyada” Fried and Scott Shawcroft, both of Adafruit Industries, will join us on the Hack Chat. Come along and learn everything you need to know about the ESP32-S2, and how to put it to work for you.
Our Hack Chats are live community events in the Hackaday.io Hack Chat group messaging. This week we’ll be sitting down on Wednesday, May 6 at 12:00 PM Pacific time. If time zones have got you down, we have a handy time zone converter.
Click that speech bubble to the right, and you’ll be taken directly to the Hack Chat group on Hackaday.io. You don’t have to wait until Wednesday; join whenever you want and you can see what the community is talking about.
How is the CPU on the -S2 “much faster” than on the old ESP32? Okay, it’s now an LX7 core instead of LX6, but it’s still 240 MHz and only a single core.
This is correct — one ESP32-S2 core at 240MHz has the same number of coremarks or dhrystones as one ESP32 core at the same frequency. Note that you may still be able to get a bit more performance in some cases due to more advanced caches in ESP32-S2 and wider flash/PSRAM interface (up to 8 lines).
I didn’t even know the S2 existed!
Oh, I see, I missed the March HaD article.
Any progress on having an open source wifi driver?
How does the ESP32-S2 have a “much faster CPU”? From what I’ve read, it’s a single core CPU clocked at 240mhz… The normal ESP32 is a dual core, also clocked at 240mhz.
when compared to ESP8266 ? AFAIK despite the name it is meant as ESP8266 replacement – cheaper, just wifi, no BLE
“and lots of GPIO”
Wat?
The title photo shows LOTs of pins, unlike the 12 or less on a typical 8266.
Is that a WS2812 mounted directly on the board? I suppose its less total parts and less GPIO pins used than if it had three individual LED channels. And if thats a 5050 LED, it could be insanely bright for a microcontroller PCB mounted LED. No need to precisely match up windows on an enclosure to the LED on your PCB – any size window anywhere above the LED will light up to to any of number of colors distinguishable by the human eye. Between the color options and blink options, this would actually provide a lot of user feedback options from your one “led_builtin”!
That sounds fun but “insanely bright for [a LED]” sounds like a bad thing to me if it’s on anything domestic. Nothing worse than a status LED that’s brighter than the sun and lights up the whole room like an RGB strobe..
they should have called this the esp8266s2 – as it is a significant upgrade of a 8266. But it is a downgrade in a lot of ways from a esp32 (apart from usb) – and I for one would NOT want to run the wifi on a single core, as that would leave zero cores for my code… And wifi is a hog..
I’m waiting for the esp32 with 4 cores :-) and two antennas (one for bluetooth, one for wifi).. :-)
threads…
For IoT, energy consumption is by far more important than processing power. And that is the biggest improvement in the ESP32-S2. Maybe you are looking for a Linux SBC if you need more cores.
OOOoooo…. might be able to make a viable handheld PC/XT now, that ESP8266 emulator had you scratching your head for how to add anything… blackberry keyboard, Lost Treasures of Infocom on an SD-Card, and I’m set for another 3 years of quarantine..
(Though I think there’s an infocom engine port for the palm pilot and other PDAs, so not a super good example of something you could only do on that…)
Wow! 240 Mhz — that’s a lot faster than 240 Mhz! Hey, wait a minute.
Well perhaps the LX7 has a deeper pipeline than the LX6 or something, but I’ll eat my hat if it is a LOT faster.
We do get 43 rather than 34 gpio pins, but I am thinking there aren’t many applications where that is vital.
Ultimately, this looks like a stripped down chip that might be offered at a lower price point.
Actually a lot of people predicted that the ESP8266 would be a fabulously successful game-changer, all you had to see was the price and the specs. It was a tenth of the price and more capable than the next closest thing on the market for IoT WiFi comms. It’s not low power and attempts to make it low power are misguided, if you want low power there are other more appropriate technologies. The ESP32 corrected the most serious deficiencies of the ESP8266 for basic web stuff including the dual cores making it possible for the wifi stack to do its thing while the main CPU did more timing intensive stuff (which, amusingly enough, includes such simple things as buffering a lot of high-speed serial data, a thing the ESP8266 couldn’t manage while doing WiFi).
Not sure where the S2 is aimed, but on its face it does seem more like a separate path successor to the ESP8266. Unless it’s half the price of an ESP32 it’s hard to see why anyone would use it, and even then you’d have to be careful to make sure it could do your application.
the other thing will be if the s2 has fixed the problems with the esp32 being a i2c slave ie at the moment there is no interrupt or anyway to directly service the event – you have to put data in a buffer that may, or may not, be read by something later (and you have no idea if it has). The 328p!! (and 8266) do it properly..
And I can’t ask that in the chat as I’m not going to get up for a 5am thing…
ESP libraries are a junk. They are full of bugs causing the devices to restart, segfault, crash, lose wifi connectivity …
Take a look how many issues they have on the ESP community libraries github.
These are just toys and not usable for any serious applications while Arduinos run pretty much for years without any restarts.
Instead of them making more hardware they should make better quality software for them.
Wifi on all of these boards is a complete joke, lot of lost packets, dupes, it loses connection…
Also very disappointing that the ESP32S sketches are incompatible with the ESP8266 sketches so you have to rewrite all your code to port them.
did you meant the arduino-esp32 are junk? In which case I mainly agree with you, many parts of it have tried to make a esp32 look like a 328p, and not in a good way – great for a one or two page program, not so good for something more complex.
Or do you mean the expressif esp32 api – which is much better, although I’d agree it has taken three or so years to get there. One of it’s problems is that it keeps changing, and if you want to recompile your programs with the latest you have to re write code… Hopefully after V4 we will see some stability…
The ESP32 comes with a RTOS which limits the amount of time you can spend in an interrupt before it resets. The Arduino has no such restriction. The library I converted, “Talkie”, required I set a flag in the interrupt and move the processing outside of the interrupt—which is a good practice on the Arduino but essential on the ESP32.
If you spend more then a few us in an interrupt you are writing garbage code, and the only way to improve is to take a different approach from writing software.