A Beginner's Guide to the ESP8266 (2017)
tttapa.github.io
tttapa.github.io
Here's the (very good!) preview documentation: https://deploy-preview-3678--esphome.netlify.app/components/...
This is such a game-changer for me that I'll be using the ESP32 over the ESP8266 for any projects involving displays from now on.
[1]: https://lvgl.io/
[2]: https://esphome.io/
[3]: ESPHome on HN yesterday (500+ points): https://news.ycombinator.com/item?id=40138228
Many thanks to those working on it. Can't wait to try the preview.
1. Vastly superior C SDK, and even the MicroPython support appears to have an edge.
2. Fantastic documentation, even if in PDF form, which makes a bit less accessible for us and especially for LLMs training data crawlers. In general LLMs know a great deal more about ESP stuff than the RP2040.
3. Almost every RP2040 can be overclocked to 400Mhz and work stable, and I could say basically every RP2040 can be stable at 350Mhz, so when comparing performances, account for this.
4. Very smart hardware capabilities: state machines for programmable pins (PIOs), great DMA support, hardware interpolators.
5. High quality hardware, and if you don't need the version with wireless, the cost is still quite reasonable. 3/4 euros/dollars per piece.
6. When you need the "W" one, the wireless chip the Pico uses has its own ARM processor, so you continue to have the two RP2040 cores spare for your application.
7. Memory mapped flash with execute in place. You can read from 0x1000000+offset just deferencing a pointer and that's it, you access your flash.
8. More GPIOs available.
The big disadvantage of the RP2040:
No SPI RAM support. At this point many ESP32 boards have built-in SPI and this makes memory a lot less a scarse resource.
To familiarize with the ESP family is useful since they are everywhere and are extremely cheap for what they offer. But still, I would start basically any new project where I have choice with the RP2040.
This makes a huge difference for sensor systems etc. A pico/RP2040 cannot be powered by a battery for very long.
I would add "no on-board flash" as a big negative, at least to me it makes it less of a "true" microcontroller.
The Pico has 2MB to 16MB on board flash with XIP in all the configurations AFAIK.
Fantastic documentation, even if in PDF form, which makes a bit less accessible for us and especially for LLMs training data crawlers. In general LLMs know a great deal more about ESP stuff than the RP2040.
came across to me, as if the entire item was a reason why you prefer the RP2040-based systems.
And I meant that the microcontroller itself (the RP2040 chip) lacks built-in flash. I realize it's on the boards instead, that is the thing I personally don't like since you can never have a single-chip solution.
If you're playing with overclocking the RP2040 it's good to know that the flash chip might not be able to keep up with those higher clocks though, which leads to inscrutable crashes, and of course the official documentation doesn't endorse overclocking so they don't tell you how to work around that. The flash runs on a configurable clock divider defaulting to 4, so if you're running the CPU at double the nominal clock you can raise the divider to 8 to keep the flash running at its original speed.
Most guides out there work with dev boards that are powered by usb. It's great to see a section dedicated to power them with alternatives like LM-1117.
I'm still hoping to find a guide dedicated to power management of espxxx boards that includes guides for powering them with a range of sources like coin cells, aa, lithium, 9v, 12v batteries etc along with a primer on different features (like sleep modes) and their impact on power consumption to maintain the battery life.
I always see mentions of all these interesting diy projects but not how they are powered. So, its difficult to get a complete picture of the maintenance needed and their usefulness in the long term.
I've also had bad luck with power banks that can survive outside more than a little while. Not moisture, you can seal that out, but heat and cold seems to kill the batteries.
There are so many factors that it's a near-impossible task. And even if you somehow managed to do so, it would already be obsolete by the time you stopped typing.
The datasheet (for each of the ESPxx, regulator, etc) will specify power consumption in different states. But sadly there's a lot of misleading amateurish pseudoscience in Arduino-land so you're best to ignore everything else (which would even include a guide like this, for example).
The hobbyist solution would be to find some obscure product on AliExpress with a holder for 2xAAAs and a 5V boost regulator with a USB connector. It's janky and inefficient, but that'll power your board, or your iPhone.
The 'proper' solution would be to then take this prototype to an optimised design in your ECAD software of choice, integrating a AAA holder and choosing an appropriate regulator, and having some PCBs assembled.
I'm not sure what else you could want. If the latter sounds daunting to you, it would be very easy for even an inexperienced EE on Fiverr to whip up for you.
Given a power source and board with defined power requirements (e.g. say 3.3v upto 150mA) if we can easily find what commonly available components are needed and how to wire them up (with tradeoffs) is sufficient.
Here's an excellent video that touches lightly on what I meant. https://m.youtube.com/watch?v=heD1zw3bMhw .
PS: If you find the video format of tutorials useful for learning about electronics, Andreas Spiess and Great scott channels on youtube have very good content that is helpful for beginners.
If you're designing your own board, you would simply enter 3.3v and >150mA into the parametric search on Mouser, Digi-Key, TI, etc and pick whatever part takes your fancy.
This is so simple that there isn't any need for a guide. The datasheet for whatever regulator you choose will tell you the recommended input capacitance, output capacitance, inductance, any configuration resistors, etc.
Same goes for battery charger ICs, which can be just as simple or far more advanced, and there are new devices being announced all the time for everything from tiny energy harvesting applications to USB PD, which is what I mean when I say it'll be obsolete by the time it's announced.
It's daunting at first but you need to take the plunge: find a part that interests you on Mouser, integrate it into a design according to its datasheet, and order some PCBs. You'll be amazed how accessible it is.
Drives me crazy just how much people don't realize that they don't know and are just spouting unfounded assumptions.
He is using a pair of ESP32s with cameras to make a “mom detector” so he has more time to switch tabs.
Unknown to my parents I did a deviation on the mains of the TV to be able to switch off the TV from my bed when the stuff I put on the way trapped.
For those who may have the reference, it was France, Canal+ times when you had instructional broadcasts on Saturday at midnight and you needed to make out what was going on from a scrambled image. Also the fact that you had to multitask like crazy to not be caught.
and maybe just maybe if i have to make a thousand, i'll be ahead of the game
And at one point (years ago) I was able to buy ESP32s for practically the same price on Aliexpress.
Also IIRC it's not as well known, but the RTC also has a very tiny amount of memory you can use to pass state between deep sleep cycles. That one won't survive a power loss, but it's handy when sleeping and doesn't wear out like the flash memory.
See also: https://products.espressif.com/#/product-comparison
Even for an experienced EE, it can be ridiculously time consuming. And it's one of those "hidden tasks" that has to be done but is rarely explicitly accounted for.
I used this combination because I found USB device support in Arduino framework lacking flexibility.
https://gist.github.com/sekcompsci/2bf39e715d5fe47579fa184fa...
My personal preference is to use the Espressif libraries rather than Arduino libraries, but I used to program micro-controllers for a living so I'm more comfortable with that development environment.
[1] https://docs.espressif.com/projects/esp-idf/en/stable/esp32/...
https://www.az-delivery.de/en/products/nodemcu-lua-lolin-v3-...
I know I sound like a salesman, but if you subscribe to their newsletter, you'll get that kind of offers all the time.
Edit: Removed two points of the comment that were wrong (as mentioned in a reply).
Edit: The options in the same paragraph are for different languages though (I saw those), but nevertheless it also mentions that they exist in general, including those for C. Well, it only mentions the official SDK for C, but hinting at more options still.