The Theremin is that classic electronic musical instrument that makes those weeee-ohhhhh noises which were so popular in mid-century science fiction movies. Mid-last-century, that is, because this century is just beginning. In any case, you could build one with old-school analog electronics, or you could go a more modern route, as [ericCycles] did.
The build relies almost entirely on an ESP32 microcontroller with minimal supporting circuitry. Like any other Theremin, pitch and volume are controlled by moving hands closer or farther away from two antenna. In this case, the ESP32 uses its capacitive touch circuitry to detect effectively detect hand proximity to the two antenna in question, and uses those values to control the pitch and volume of a synthesized waveform. That waveform is then pumped out over the onboard digital-to-analog converter for playback on external speakers.
If you want to build a simple Theremin-like instrument quickly and easily, it’s hard to beat the simplicity on offer here. We’ve featured some other fun variants over the years, too, like this version that uses time-of-flight sensors for the human interface.
Logging and telemetry in remote controlled racing is a great thing, and not only does [jwachlin]’s Open RC Spotter do a fantastic job of that, it has quite a few clever tricks up its sleeve that make it extra special.
Open RC Spotter is an ESP32-based hardware platform for high performance RC car racing that reads from various sensors (including IMU, GPS, temperature, battery, and IR receiver for IR lap beacons) to create a filtered stream of readings that include position, velocity, lap time, battery voltage, and more.
Got RC car telemetry? Feed it to a virtual race engineer for real-time feedback.
This data gets logged to an SD card, but can also be broadcast wirelessly via ESP-NOW to a receiver that can in turn send it over serial USB, or do whatever else one wishes. There’s also a neat feature that fires up a temporary WiFi access point on demand so log files can be downloaded with a web browser, no need to hook up a cable.
So far, so cool. But there’s still another nifty feature. [Update: originally the project had a link to the sim racing companion application Crew Chief. The developer clarified that at this writing, Open RC Spotter only supports its own Open RC Crew Chief application and not the similarly-named Windows sim racing assistant.] Open RC Spotter supports the Crew Chief telemetry protocol. Crew Chief is a piece of free Windows software that serves as a companion application for sim racing. It acts as a virtual race crew member, providing spoken information based on live telemetry read from supported racing sims.
Since Open RC Spotter supports the same telemetry format, one can use the virtual race engineer with RC car racing by simply feeding Open RC Spotter‘s serial data to the Crew Chief application. The RC telemetry data isn’t as rich as what comes from the racing sim APIs, but it’s more than enough to be useful.
People come up with all kinds of neat ideas when it comes to RC racing, and most of them depend on having access to good data. For example, a load cell in the steering mechanism can provides the data for force-feedback steering. We’ve even seen LiDAR and a depth camera used to automatically compute optimal racing lines.
At the Hackaday Europe conference in Italy earlier in the year, we were shown a rather interesting device. The work of [Alun Morris], it was an ESP32-powered Cheap Black Display board, and it was running a web browser. Definitely an achievement.
Lest you imagine that it was sporting the latest and greatest in browser technology, we must disappoint you. The browser in question is a very basic text mode device, but it did happily retrieve Hackaday, which should be the only test a browser should need to pass.
Under the hood it’s running FreeRTOS, with separate HTML retrieval and tokenizing, and UI processes. It can fetch web pages directly, but there’s also a server-side proxy for difficult sites, and for creating image thumbnails.
An ESP32 is a powerful microcontroller, but it’s fair to say it’s not in the league of running a web browser and as far as we can remember this is the first one we’ve seen. We’re sure it’s a field with further progress to be made though, particularly with the more powerful recent chips in the series. This project however is a good start, and more importantly it can be yours for a few dollars on Ali to buy a dev board. What are you waiting for?
At least in theory, video games are more resistant to becoming lost media thanks to their digital nature — they’re easy to copy and emulators have saved many titles that are otherwise locked in corporate vaults. But emulators give us something beyond simple preservation: they can also be used to enhance games well beyond the capabilities of the original systems while still preserving the souls of the games, as this NES emulator manages to do.
The emulator is called Anemoia-ESP32, and as its name suggests is a re-write of the Anemoia emulator specifically built for the ESP32. By modern standards these little chips don’t pack much of a punch, but compared to original NES hardware they’re more than up to the task of gaming. This project aims to recreate the Nintendo Entertainment System experience as faithfully as possible, hitting 60 FPS in most instances, as well as maintaining full audio emulation. Running on an ESP32 enables some truly small handheld options that would be difficult to achieve with more traditional platforms for emulation. There are some PCBs available here as well, but aren’t required to explore this project with.
As far as extra features compared to original NES hardware, the emulator does support save states and has a number of other settings improvements. Installation is as easy as flashing any other firmware image onto an ESP32, which these days can even be done from the browser. No word on whether or not it will eventually support emulating dual Picture Processing Units, but we can hope.
Compared to the Arduino Uno of old, modern microcontrollers are absolutely tiny — especially for the amount of processing power and I/O you get. But if you need something really small, like fits-on-the-tip-of-your-finger small, most of the turn-key development boards on the market are still a bit too big.
There are a lot of ESP32-based development boards out there– and why not? It’s a versatile chip that can be used in all sorts of situations, and people want boards to match them. Not finding one to his liking that was specifically built for solar powered IoT projects, [Narrow Studios] rolled his own. Well, designed it; like most these days, he’s outsourced the manufacturing to PCBWay, which is where you’ll need to go if you want one.
Why might you want one? Well, if you have similar goals in mind to [Narrow Studios]. He’s put an ESP32-C6 Mini on the board, which means it’s got most of the IoT communications protocols you might be interested in — bluetooth, wifi, Matter, Thread, and Zigbee, too. Ten 10 IO pins have been broken out, plus I2C on a QWIIC connector, which gets you a whole ecosystem of sensors to easily plug into. The “solar” part is justified by the inclusion of a BQ25186 linear battery charging IC from Texas Instruments, with the designated solar power input protected against reverse voltage in case you– like this author– have let magic smoke out by hooking things up backwards. Is it embarrassing? Yes. Does it happen? Also yes, so putting protection on the board is a nice feature. [Narrow Studios] released a video that we’ve embedded below discussing his design choices and demonstrating the device, but the project page can give you the gist.
Of course there’ve been plenty of solar-powered projects to feature the ESP32 here before– you can even use it for maximum power point tracking— but this dev board might be exactly what someone is looking for to build their next IoT project, so we’re thankful to [Narrow Studios] for the tip.
If you’re not aware, there is such a thing as adorable little three digit LCD 7-segment displays. They come in a ten-pin DIP package and are just begging to be integrated into a project. The catch is they are just a tiny bit weird. Luckily for us all, [Nagy Krisztián] spells out exactly how to use them.
The first odd thing about these ten-pin LCD displays is that they have a footprint that doesn’t quite mesh with standard 0.1 inch spacing, meaning they will not cleanly fit into a breadboard. Luckily, one can solve this with a bit of force. It’s a small part, and the pins don’t seem to mind.
These little LCDs are adorable, but a bit unusual to interface with.
The second odd thing is wrapping one’s head around the pin mapping. Figuring out the table of which pins activate which segments in the digits is easier if one keeps in mind that each segment of each digit is the product of two different pins. For example, “2A” is digit two, segment A, and is the product of pins 3 and COM4.
That’s not all. Electrically speaking, driving this LCD isn’t nearly as straightforward as an LED.
With an LED display, the COM pins are either common anode or common cathode, which tells one whether lighting up a segment means holding the COM pin at GND with voltage applied to the segment pin, or the other way around. But in the case of this LCD display, the polarity applied is swapped every cycle. Oh, and inactive COM pins need to held at half-voltage. Neat!
[Nagy] drives the whole thing with little more than an ATtiny84 microcontroller and a few resistors. A switchable half-voltage signal is cleverly created by combining a simple voltage divider and taking advantage of the fact that the ATtiny84’s pins can be in one of three different states depending on how they are configured: high, low, or high-impedance (pin configured as an input). Each COM pin on the display gets connected to both an ATtiny84 pin, and to the supply voltage via two resistors forming a voltage divider. When the ATtiny drives the pin high, the LCD pin sees about 3 V. When the pin is driven LOW, the LCD pin sees 0 V. When the ATtiny configures the pin as an input, the LCD pin receives about 1.5 V.
The bulk of the software is defining which pins and states equal which digits, and cycling the LCD at a rate of vaguely 60 Hz which delivers flicker-free results.
We appreciate the clever combination of voltage divider with pin configuration to create three switchable voltage levels. If you liked that and want to see more serious leveraging of pin configuration on a microcontroller, check out how to drive seven LEDs with only two pins.