ESP-Guardian

Bringing A Cloud Based Monitor Home

When setting up to grow plants hydroponically, it’s important to keep an eye on the numbers, temperature, pH, and electrical conductivity, to name a few. To do this, [Joziti] bought a Bluelab Guardian monitor, which worked well but had a fatal flaw: it required an internet connection. To free the Guardian from the cloud, [Joziti] developed an ESPHome connection for the Bluelab Guardian.

As far as hardware projects go, this one is pretty straightforward. It involves replacing the built-in wireless chip with an ESP32-S3. [Joziti] used an Adafruit ESP32-S3 Feather, though other ESP32-S3s should work for this purpose too. Once you’ve opened up the Guardian and removed the factory Wi-Fi board, it’s a simple matter of tapping into the +5V/GND/TX/RX pins with your flashed ESP32-S3. Once the hardware is in place, the ESP32-S3 should be reaching out to your Home Assistant instance with all the data the Guardian used to send to the cloud is now sitting on just your local network.

The great part about this hack is that it opens up even more capabilities for your growing setup. With the data sitting in Home Assistant, you can now control automations using that data. Too cold? Flip on some lights. pH out of bounds? Maybe have it send you a message to check it out. Thanks for sharing this improvement on a product, [Joziti]. It’s always great to see a hack that turns a product you bought into a product you own. Be sure to check out some of our other ESPHome hacks we’ve featured over the years.

RPN Loved Honk If (or, Write Your Own PostScript Interpreter)

Maybe you like old laser printers. Maybe you were a fan of [Don Lancaster]. Maybe you like Forth, HP calculators, and everything RPN. Whichever it is, why not write your own PostScript interpreter? That’s what [beyondloom] did (and we shamelessly stole their joke for the post title, too).

PostScript started out as a language to describe pages for laser printers but went on to have a life of its own, including a stripped-down version being at the core of PDF files. If you are a fan of RPN, you’ll love PostScript, which operates on several stacks.

Continue reading “RPN Loved Honk If (or, Write Your Own PostScript Interpreter)” →

DIVINER: Occult Synth Firmware For The Cardputer

We see some strange software around these parts, but this is probably the strangest. DIVINER is a firmware for the M5 Cardputer, which is an interesting device in its own right, being essentially a tiny ESP32-S3 dev kit with an even tinier screen, keyboard, some GPIOs, I2C, and an audio jack for output. It is essentially a blank canvas that can do anything if you write the firmware for it.

And that’s what DIVINER does: a little of everything. It’s part standalone synthesizer and sequencer, taking advantage of the I2S audio out, part visualization engine, part WiFi and Bluetooth scanner and monitor (what?), with an LLM interface and an IR blaster thrown in for good measure. [voidrane Splicer] even explores the Channel-State Information to do presence detection, like we’ve seen recently elsewhere. Byte-beat player anyone?

The Hackaday.io page talks about the underlying system layer before it even gets to the applications, and we get the feeling that all of the different apps, called “rites”, were crammed in to exercise it and show off the “blood and ember”, Diablo-esque visual style. But that doesn’t stop us from enjoying the audio engine, demonstrated in the video below, or the awesome graphics.

Do these apps hang together more than visually? Do they need to? Is the sum of the parts so large that you don’t even worry about the whole? We don’t know, but it’s also got a simulator so you can try that out while your Cardputer is shipping.

Continue reading “DIVINER: Occult Synth Firmware For The Cardputer” →

Warm Analog DSP, On The ESP

We love audio, and we love messing around with it. So when [mircemk] wrote in with his latest audio-mangling device, we had to give it a look. It’s a tube-sound processor implemented in an ESP32 with a WM8960 handling the audio side of things. Tubes are expensive, power hungry, and a general pain in the posterior, so there is incentive to DIY it yourself with DSP. The whole setup is mounted in a Tektronix-inspired case that would be at home on the workbench or in the living room.

See? No tubes!

What’s ironic about the tube sound is that it’s essentially a nonlinear distortion of the audio, but it’s a distortion that can sound better than the undistorted signal. (Take that, engineering!) Push-pull transistor amplifiers tend to distort the top and bottom end of the signal similarly, while tubes round off the tops more than the bottoms. [mircemk] lets you tweak this transfer function, and displays it nicely on the screen.

But there’s one more important way that tubes color the sound — they respond slowly to rapidly changing signals — and [mircemk] says he implemented that as well.  We couldn’t find that part of the distortion accounted for in the code, but maybe you can?

Anyway, this is a fantastic audio project, and it just goes to show you how far you can go with some simple parts and clever programming. Indeed, we’ve seen this rig before, with different code that made it a parametric EQ. Once you’ve got the sound turned into numbers, you can math anything at it.

A Hazeltine 1420 Lives Again

There was a time when buying a computer also meant picking out a compatible terminal. There were many to choose from, some good and some bad. While we were partial to TeleVideo, other well-known names included Lear Siegler and ADDS. There was also Hazeltine, a well-known brand that could emulate many other terminals. [The Byte Attic] had an unusable Hazeltine 1420, and finally got around to getting it working again.

As you might expect, the old terminal was full of suspect capacitors. A power transistor was also missing, hinting that someone had been robbing this unit to fix another. In addition to fixing the device, the plan was to improve it with switching regulators. These old terminals generated a lot of heat with linear regulators.

The power supplies were often the major issue with these kinds of devices, and scorch marks under the bridge rectifiers didn’t bode well, either. Another concern: the chips that hold the character sets and some other logic are unobtainable. If they were dead, there would be virtually no way to replace them. The plan was to read them, if possible, and design replacements for the day they did fail. If it wasn’t already too late.

Continue reading “A Hazeltine 1420 Lives Again” →

IRis Learning Remote Has Five Buttons, Supports Thousands Of Devices

Universal IR remotes able to learn codes from existing devices were once popular consumer items as well as DIY projects, but they could become quite complex themselves, sometimes with a dizzying number of buttons. [Nicolas Ruiz Neiman]’s IRis project carries the concept further with features that leverage modern parts and tools to deliver a more focused end result.

IRis keeps things clean and simple with four directional buttons, a single OK key, and a small OLED screen. IRis can learn and save IR codes and is compatible with the .ir file format, meaning it can read from an absolutely massive collection of codes intended for the Flipper Zero.

There’s also a “Be Gone” feature that mass-sends a power signal for every device in a category, re-implementing the functionality of the classic TV-B-Gone.

Hardware consists of an ESP32-WROOM-32 board, the  aforementioned OLED, an IR receiver module, IR emitters, some switches, and a power supply integrating an 18650 lithium-ion cell and charger. One thing that’s pretty interesting is the detailed test suite, which runs simulated hardware via key presses on every screen to ensure the UI is working right. The enclosure also includes the CAD files in STEP format, which means modifications are a breeze.

Sheet music is displayed on a screen, with the label "AIR" in the center top, and "Bach" to the right.

Reverse Engineering Score Perfect To Rescue Its Files

There are myriad challenges associated with data preservation – bit rot, loss of metadata, and hardware failures, among others – but one of the hardest is making sure that the data remains usable as software goes out of date. [Maarten Tromp]’s father, for instance, had been using the Score Perfect music notation program for years, but since development ceased in 2012, the files would eventually need to be transferred to more modern software. To do this, [Maarten] undertook a four-year project to reverse-engineer the structure of Score Perfect’s files.

Score Perfect was first released in 1990 for Atari and later ported to Windows, and after version four, it switched to a different file format. It had the option to export to MusicXML, but it only exported notes, not chords, lyrics, or other important details. [Maarten] first tried disassembling the program itself to find the file structure; he had hoped that the Visual Basic code might have been compiled to P-code, which is relatively easy to disassemble, but it had been compiled to native code. Interestingly, through version four, the program had been written for Atari and ran in Windows through a simple emulator. It wasn’t fully rewritten for Windows until later. After some investigation into the file-export function with Ghidra, he moved on to reverse-engineering the file format itself.

This consumed the majority of the project’s time. To investigate the file’s structure, [Maarten] would start by creating an empty file in the program, make one change, and compare the difference in the file written. This gradually revealed the organization of information — the file was arranged into blocks containing different kinds of information, such as measures and notes, and tags, which provided supplemental information. Once again, incremental changes revealed the function of most of these, and [Maarten] was eventually able to write a translation program to export Score Perfect files to MusicXML.

We’ve previously seen a similar effort to reverse-engineer the Altium file format. At least in these cases, though, all the necessary information is contained in the files, unlike the reverse-engineering often necessitated by STL files.