E-ink displays haven’t revolutionized the world so much as served us humbly in e-book readers such as the Kindle and its ilk. Most such readers are designed for extended sessions reading novels and the like, but [Roni Bandini] decided a haiku-sized device was in order.
The diminutive device runs off an ESP32, which has plenty of clock cycles for easily driving displays. It’s paired with a 2.9 inch Waveshare e-ink display, upon which it delivers poetry in the popular Japanese haiku format – 5 syllables, 7 syllables, 5 syllables. Writing to the display is easy with the GxEPD library, which is compatible with a variety of common e-ink displays. Presently the poetry is hardcoded in the program, and there’s plenty that could be included with the ESP32’s roomy program storage. However, [Roni] notes it would be simple to have the reader pull poems from an SD card instead.
It’s a fun project, and a great way to get familiar with the basics of working with e-ink displays. We’d love to see a WiFi-enabled version that pulls down the hottest daily haikus fresh from the web, too. Funnily enough, our own archives only feature one other reference to the famous Japanese art, which has little to do with poetry. If you fancy changing that, make something relevant and drop us a line. Video after the break.
The availability of cheap and powerful RC motors and electronics has made it possible for almost anyone to build an RC flying machine. Software is usually the bigger challenge, which has led to the development of open-source packages like BetaFlight and Ardupilot. These packages are very powerful, but not easy to modify if you have unconventional requirements. [Nicholas Rehm] faced this challenge while doing his master’s degree, so he created dRehmFlight, a customizable flight controller for VTOL aircraft. Overview video after the break.
dRehmFlight runs on Teensy 4.0 with a MPU6050 or MPU9250 IMU
[Nicholas] has been building unique VTOL aircraft for close to a decade, and he specifically wanted flight stabilization software that is easy to modify and experiment with. Looking at the dRehmFlight code, we think he was successful. The main flight controller package is a single file of fewer than 1600 lines. It’s well commented and easy to figure out, even for an inexperienced programmer. A detailed PDF manual is also available, with full descriptions for all the functions and important variables, and a couple of tutorials to get you started. Libraries for interfacing with accelerometers and RC gear is also included. It runs on a 600 Mhz Teensy 4.0, and all the programming can be done from the Arduino IDE.
Even though most of the world population couldn’t tell you what room or body temperature is in Fahrenheit, there are some places on this globe where this unit is still in common use. For people in those areas, it’s therefore a real hassle when, say, a cheap Chinese air quality measurement systems only reports in degrees Celsius. Fortunately, [BSilverEagle] managed to patch such a unit to make it display temperature in Fahrenheit.
The reverse engineering begins by finding a way to dump the firmware. It’s nice to hear that [BSilverEagle] used some the skills demonstrated in [Eric Shlaepfer’s] PCB reverse engineering workshop from Hackaday Remoticon last November to trace out the debug header and the SWD pins of STM32F103C8 MCU. After that, OpenOCD could be used to dump the firmware image, with no read protection encountered. The firmware was then reverse-engineered using Ghidra, so that [BSilverEagle] could figure out where the temperature was being calculated and where the glyph for the Celsius symbol was stored. From there this it was a straight-forward rewrite of those two parts of the original firmware to calculate the temperature value in Fahrenheit, change the glyph and reflash the MCU.
So why buy this thing in the first place if it didn’t spit out units useful for your current locale? Cost. Buying this consumer(ish) device was about the same cost as buying the individual parts, designing and manufacturing the PCB, and writing the firmware for it. The only downside for their use case was the lack of Fahrenheit. Not a problem for those who demand full control of the hardware they own.
With many folks continuing to work from home for far longer than they ever thought, it’s no surprise that we’re seeing the rise of small DIY devices to make that video call or virtual presentation a little easier. [Dustin Watts] was interested in the functionality of the Elgato Stream Deck — a macro keyboard where each key is its own screen. But that kind of fancy hardware comes with a formidable price tag. So he built his own, and made it open source!
His first iteration — FreeTouchDeck — was built using commonly available modules but has since evolved into the ESP32 Touchdown which does it all with a single PCB. It’s a highly-customizable touchscreen macro keyboard which provide easy access shortcuts and macros for quick actions. Need a quick mute button, want to switch camera views on OBS, or maybe you want smarter shortcut keys for your CAD of choice. This will can get you there.
There a few key differences from the first version (FreeTouchDeck). The ESP32 dev board was ditched for a tidy PCB the directly integrates the module. This one has a capacitive touch controller (FT6236) rather than a resistive one as the capacitive screens deliver a far nicer user experience. A built-in battery and charger circuit (which the FreeTouchDesk didn’t have) allows for the extra bit of flexibility to stream from anywhere (within wireless range of course). Multiple case designs are available in STL form that allows it to be placed on a wall or desk with ease.
Datasheets, gerbers, kicad files, BOMs, and example firmware is provided on GitHub. The software is easily configurable so it can be set up to do any sort of macro, key combination, or action. This isn’t just limited to emulating a Bluetooth keyboard as there are examples showing how to connect to Home Assistant. All in all, this is a wonderful example of continued iteration on a project.
When we first saw the Raspberry Pi Pico and its RP2040 microcontroller last month it was obvious that to be more than just yet another ARM chip it needed something special, and that appeared to be present in the form of its onboard PIO peripherals. We were eagerly awaiting how the community might use them to push the RP2040 capabilities beyond their advertised limits. Now [Luke Wren] provides us with an example, as he pushes an RP2040 to produce a DVI signal suitable to drive an HDMI monitor.
It shouldn’t be a surprise that the chip can be overclocked, however it’s impressive to find that it can reach the 252 MHz necessary to generate the DVI timing. With appropriate terminations it proved possible for the GPIO lines to mimic the differential signalling required by the spec. A PCB with the RP2040 and an HDMI socket was created, also providing a couple of PMOD connectors for expansion. All code and software can be found in a GitHub repository.
The result is a usable DVI output which though it is a relatively low resolution 640×480 pixels at 60 Hz is still a major advance over the usual composite video provided by microcontroller projects. With composite support on monitors becoming a legacy item it’s a welcome sight to see an accessible path to an HDMI or DVI output without using an FPGA.
We just got our hands on some engineering pre-samples of the ESP32-C3 chip and modules, and there’s a lot to like about this chip. The question is what should you compare this to; is it more an ESP32 or an ESP8266? The new “C3” variant has a single 160 MHz RISC-V core that out-performs the ESP8266, and at the same time includes most of the peripheral set of an ESP32. While RAM often ends up scarce on an ESP8266 with around 40 kB or so, the ESP32-C3 sports 400 kB of RAM, and manages to keep it all running while burning less power. Like the ESP32, it has Bluetooth LE 5.0 in addition to WiFi.
Espressif’s website says multiple times that it’s going to be “cost-effective”, which is secret code for cheap. Rumors are that there will be eight-pin ESP-O1 modules hitting the streets priced as low as $1. We usually require more pins, but if medium-sized ESP32-C3 modules are priced near the ESP8266-12-style modules, we can’t see any reason to buy the latter; for us it will literally be an ESP8266 killer.
On the other hand, it lacks the dual cores of the ESP32, and simply doesn’t have as many GPIO pins. If you’re a die-hard ESP32 abuser, you’ll doubtless find some features missing, like the ultra-low-power coprocessor or the DACs. But it does share a lot of the ESP32 standouts: the LEDC (PWM) peripheral and the unique parallel I2S come to mind. Moreover, it shares the ESP-IDF framework with the ESP32, so despite running on an entirely different CPU architecture, a lot of code will run without change on both chips just by tweaking the build environment with a one-liner.
One of these things is not like the other
If you were confused by the chip’s name, like we were, a week or so playing with the new chip will make it all clear. The ESP32-C3 is a lot more like a reduced version of the ESP32 than it is like an improvement over the ESP8266, even though it’s probably destined to play the latter role in our projects. If you count in the new ESP32-S3 that brings in USB, the ESP32 family is bigger than just one chip. Although it does seem odd to lump the RISC-V and Tensilica CPUs together, at the end of the day it’s the peripherals more than the CPUs that differentiate microcontrollers, and on that front the C3 is firmly in the ESP32 family.
Our takeaway: the ESP32-C3 is going to replace the ESP8266 in our projects, but it won’t replace the ESP32 which simply has more of everything when we need it. The shared codebase and peripheral architecture makes it easier to switch between the two when we don’t need the full-blown ESP32. In that spirit, we welcome the newcomer to the family.
But naturally, we’ve got a lot more to say about it. Specifically, we were interested in exactly what the RISC-V core brought to the table, and ran the module through power and speed comparisons with the ESP32 and ESP8266 — and it beats them both by a small margin in our benchmarks. We’ve also become a lot closer friends with the ESP-IDF SDK that all of the ESP32 family chips use, and love how far it has come in the last year or so. It’s not as newbie-friendly as ESP-Arduino, for sure, but it’s a ton more powerful, and we’re totally happy to leave the ESP8266 SDK behind us.
We’re knee-deep in new microcontrollers over here, from the new Raspberry Pi Pico to an engineering sample from Espressif that’s right now on our desk. (Spoiler alert, review coming out Monday.) And microcontroller peripherals are a little bit like Pokemon — you’ve just got to catch them all. If a microcontroller doesn’t have 23 UARTS, WiFi, Bluetooth, IR/DA, and a 16-channel 48 MHz ADC, it’s hardly worth considering. More is always better, right?
No, it’s not. Chip design is always a compromise, and who says you’re limited to one microcontroller per project anyway? [Francesco] built a gas-meter reader that reminded to think outside of the single-microcontroller design paradigm. It uses an ATtiny13 for its low power sleep mode, ease of wakeup, and decent ADCs. Pairing this with an ESP8266 that’s turned off except when the ATtiny wants to send data to the network results in a lower power budget than would be achievable with the ESP alone, but still gets his data up into his home-grown cloud.
Of course, there’s more complexity here than a single-micro solution, but the I2C lines between the two chips actually form a natural division of work — each unit can be tested separately. And it’s using each chip for what it’s best at: simple, low-power tasks for the Tiny and wrangling WiFi on the ESP.
Once you’ve moved past the “more is better” mindset, you’ll start to make a mental map of which chips are best for what. The obvious next step is combination designs like this one.
This article is part of the Hackaday.com newsletter, delivered every seven days for each of the last 200+ weeks. It also includes our favorite articles from the last seven days that you can see on the web version of the newsletter.
Want this type of article to hit your inbox every Friday morning? You should sign up!