A minor plug, if you're doing ESP8266/ESP32 development, you can use the following code snippet and server I wrote to do automatic, secure updates over pinned HTTPS:
The device will connect to the server (whenever you call doHttpUpdate(), I usually do it on startup), ask for a new version, get the latest version, flash itself with it and then boot.
Very handy, as it's faster than USB/UART, and you don't have to disconnect from the serial console to use it.
ESP32 is a little processor that could. The latest version ESP32-S2 is cheaper (unit cost 99 cents), and amongst other capabilities also supports LCD interface and USB OTG!
Since the S2 has USB OTG, I wonder whether anyone's working on porting the QMK keyboard-firmware project to it. QMK on ESP32 could make for one heck of an overpowered mechanical keyboard.
USB-OTG on a small microcontroller like the ESP32S also presents significant opportunities for malicious 'anti-security' devices pretending to be other devices, while up to no good. (See 'Malduino')
With its single-core and no Bluetooth, I see the ESP32-S as more of an upgrade to the ESP8266, or 'ESP32-'lite'.
99 cents? I guess that's for volume and possibly for the bare chip?
Does anyone know if I can get the chip in a form factor that's hand-solderable (so with castellated edges) and with a built-in antenna (rather than an ipex connector) for close to that price? That might finally get me off the ESP8266.
- Module: The chip on a PCB with castellated edges and a PCB antenna (normal) or IPEX connector (the "-I" variants). These cost ~$2.
- Devkit: The module but on a PCB with 2.56mm pitch pins installed, a USB/serial converter and 3.3V power supply. These cost ~$8.
You can buy all of these at the prices I listed from the standard electronics distributors like Digikey and Mouser, you don't have to be special or anything.
I already do, I thought there was a special way to buy the modules for $1. By the way, I found some Lolin ESP32 devkits for $3.5, a great price. I got 10ish of those, as I always use them for whatever throwaway projects since the price is so good.
Holy damn. That is a solid chip and I had no idea they had a new version out! The tiny power consumption is a huge deal. I’ll be buying a couple of these to play around with.
Indeed. And I've got too used to the dual-core on the ESP32. Having the ability to pin tasks to one core for 'heavy-lifting' while running main task logic on the other, avoiding interrupts, has been a huge relief. (Though, has possibly led to some lazy coding too ;) )
haha, precisely. It's the primary reason I chose it for our company's projects -- no need for interrupts timing. From a business angle I view lazy code ~== time/money saved!
Since getting (back) into electronics and writing firmware for microcontrollers a few years ago, and having been through various projects with the 8266 (which blew my mind at the time), I now use the ESP32 for most ideas and project that I have.
It's been a complete game-changer, hobby-wise.
Having Wifi and BluetoothLE on-board has been great. And as a long time web and mobile app developer, it's been the perfect way to turn 'things I write' into 'things I can touch'. (And that can 'talk').
The 'intangibility' of all the code I've written over years has always been a little saddening to me.
I've also tried a few of the ESP32-CAM boards and they're very impressive. I have a little LiPo powered pocket project in a 3D printed flat case, containing one of them, which, aftter connnecting to WiFi, then sends MJPEG (no audio) to a Node.js script on one of my servers which shows a 'live' feed. (I sometimes stick it to my front door 'peep-hole' too.
I'll certainly be taking a look at this 'ESPFLIX' project over the weekend.
This is so Cool! A 99 cents Chip can do so many things. I am using it currently for Automatic Garden Monitoring system[1]. I never realized this small chip can do big things. Very Impressive.
You might want to grab a capacitive soil moisture sensor btw because those two pin ones almost always corrode after some time, especially with more power going through them
Indeed they are not meant to be powered all the time - only for brief moments when taking a reading. Unless your purpose is to electrolyze your garden.
Which is why when many advocate for pre-historic embedded development practices it just shows being out of touch how many cheap options are now 90's like hardware, with more capabilities than Amiga/Atari/PC/Mac had a their disposal on a stamp size CPU.
Shameless plug, my father made a (free) ESP8266 & ESP32 wifi webradio project that seems popular and may interest some people in this thread https://github.com/karawin/Ka-Radio
That's what does my head in, this $1 "microcontroller" is essentially an entire late-90s computer (although far more powerful in some ways) in a 10mm square package. It's amazing what 20 years of progress will do.
(Don't even get me started on all the on-chip peripherals, it's the hobby roboticist's dream!)
Yes, I always compare it to a beefy Amstrad PC1512, my first PC used at the high school computer club to play Defender of the Crown with beautiful EGA graphics.
Moore's Law is incredibly powerful. It's a 400MHz microprocessor that's roughly equivalent to a late-nineties desktop PC, the sort that could (with a suitably fast CDROM drive) just about manage to decode to 320x200 VGA resolution. This is still a really impressive feat of coding.
Fab appears to be TSMC. So, the Republic of China?
It seems really fun to develop hardware skills like this. Or for example being able to order an eink display and build my own ereader from basic principles.
But every time I start learning, it feels like there's so much you have to learn to do so little, and I'm not fundamentally motivated by the physics of hardware.
Meanwhile, software, being so high level, is extremely actionable early on without a hard dep on knowing how the underlying stack is working. One of the first things I built was a Ruby on Rails web app that my friends and I used to chat in high school before I even could tell you what http headers were, I would learn those later once the initial taste was so actionable and motivating.
With hardware, in the same amount of time I learned to build a web app that my friends and I used, I probably would have learned to make an LED blink.
Oh well, it's like playing the piano: I wish my younger self put in the time so that my older self could benefit for free.
https://www.pastery.net/vmympk/
This is the server, a single binary (written in Rust):
https://gitlab.com/stavros/espota-server
The device will connect to the server (whenever you call doHttpUpdate(), I usually do it on startup), ask for a new version, get the latest version, flash itself with it and then boot.
Very handy, as it's faster than USB/UART, and you don't have to disconnect from the serial console to use it.