Real-Time 3D Room Mapping With ESP32, VL53L5CX Sensor And IMU

ST’s VL53L5CX is a very small 8×8 grid ranging sensor that can perform distance measurements at a distance of up to 4 meters. In a recent video,[Henrique Ferrolho] demonstrated that this little sensor can also be used to perform a 3D scan of a room. The sensor data can be combined with an IMU to add orientation information to the scan data. These data streams are then combined by an ESP32 MCU that streams the data as JSON to a connected computer.

Continue reading “Real-Time 3D Room Mapping With ESP32, VL53L5CX Sensor And IMU”

A marketing image of a Dash educational robot is shown. It is made of a triangle pyramid of four plastic spheres. Two of the base spheres house wheels, and the top sphere houses a speaker, lights, and sensors.

Reverse Engineering A Dash Robot With Ghidra

One of the joys of browsing secondhand shops is the possibility of finding old, perhaps restorable or hackable, electronics at low prices. Admittedly, they usually seem to be old flat-screen TVs, cheap speakers, and Blu-ray players, but sometimes you find something like the Dash, an educational toy robot. When [Jonathan] came across one of these, he decided to use it as a turtle robot. However, he found the available Python libraries insufficient, and improving on them required some reverse-engineering.

Continue reading “Reverse Engineering A Dash Robot With Ghidra”

Vintage Canadian Video Hardware Becomes Homebrew Computer

Are you in the mood for a retrocomputing deep dive into the Scriptovision Super Micro Script? It was a Canadian-made vintage video titler from the 80s, and [Cameron Kaiser] has written up a journey of repair and reverse-engineering for it. But his work is far more than just a refurbish job; [Cameron] transforms the device into something not unlike 8-bit homebrew computers of the era, able to upload and run custom programs with a limited blister keypad for input, and displaying output on a composite video monitor.

Continue reading “Vintage Canadian Video Hardware Becomes Homebrew Computer”

Windows 98 On A 2020 ThinkPad P14s Gen 1 Laptop

The lovely thing about the x86 architecture is its decades of backwards compatibility, which makes it possible to run 1990s operating systems on modern-day hardware, with relatively few obstacles in the way. Recently [Yeo Kheng Meng] did just that with Windows 98 SE on a 2020 ThinkPad P12s Gen 1, booting it alongside Windows 11 and Linux from the same NVMe drive.

Naturally, after previously getting MS-DOS 6.22 from 1994 running on a 2020 ThinkPad X13, the step to doing the same with Windows 98 SE wasn’t that large. The main obstacles that you face come in the form of UEFI and hardware driver support.

Both ThinkPad laptops have in common that they support UEFI-CSM mode, also known as ‘classical BIOS’, as UEFI boot wasn’t even a glimmer yet in some drunk engineer’s eye when Win98 was released. After this everything is about getting as many hardware drivers scrounged together as possible.

[Yeo] ended up having to bodge on a USB 2.0 expansion card via a Thunderbolt dock as Win98 doesn’t have xHCI (USB 3.0) support. With that issue successfully bodged around using a veritable tower of adapters, installing Windows 98 was as easy as nuking Secure Boot in the BIOS, enabling UEFI-CSM along with Thunderbolt BIOS assist mode and disable Kernel DMA protection.

Because UEFI-CSM implementations tend to be buggy, the CREGFIX DOS driver was used to smooth things over. Another issue is the same that we chuckled about back in the day, as Windows 98 cannot address more than 512 MB of RAM by default. Fortunately patches by [Rudolph Loew] helped to fix this and some other smaller issues.

Unfortunately neither Intel nor NVIDIA have released Win98 drivers for quite some time, so there’s no graphics acceleration beyond basic VESA support and the SoftGPU driver. Disk access goes via the BIOS too rather than using an NVMe driver, so it’s not as zippy as it could be, but for Win9x it’s quite usable.

Finally ACPI wasn’t recognized by Win98, but it’s only fair to blame that on the complete flaming train wreck that is ACPI rather than anything to do with Windows. This particular issue was worked around by configuring the BIOS to support S3 power state and with that making Win98 happy again.

It’s honestly quite a shame that UEFI-CSM is largely ignored by new systems, as it makes installing even Windows 7 basically impossible, and thus creating probably the largest split within the x86 ecosystem since the arrival of AMD64/x86_64.

Honor Thy Error

Musician Brian Eno’s Oblique Strategies are like a Tarot card deck full of whimsical ideas meant to break up a creative-block situation, particularly in the recording studio. They’re loads of fun to pick one at random and actually try to follow the advice, as intended, but some of them are just plain good advice for creatives.

One that keeps haunting me is “Honor thy error as a hidden intention”, which basically boils down to taking a “mistake” and seeing where it leads you if you had meant to do it. I was just now putting the finishing touches on this week’s Hackaday Podcast, and noticed that we have been honoring a mistake for the past 350-something shows. Here’s how it happened.

When Mike and I recorded the first-ever podcast, I had no idea how to go about doing it. But I grew up in Nashville, and know my way around the inside of a music studio, and I’ve also got more 1990s-era music equipment than I probably need. So rather than do the reasonable thing, like edit the recording on the computer, we recorded to an archaic Roland VS-880 “Digital Studio” which is basically the glorified descendant of those old four-track cassette Portastudios.

If you edit audio in hardware, you can’t really see what you’re doing – you have to listen to it. And so, when I failed to notice that Mike and I were saying “OK, are you ready?” and “Sure, let’s go!”, it got mixed in with the lead-in music before we started the show off for real. But somehow, we said it exactly in time with the music, and it actually sounded good. So we had a short laugh about it and kept it.

And that’s why, eight years later, we toss random snippets of conversations into the intro music to spice it up. It was a mistake that worked. Had we been editing on the computer, we would have noticed the extra audio and erased it with a swift click of the mouse, but because we had to go back and listen to it, we invented a new tradition. Honor thy error indeed.

There’s Always Room For 3D Printed Batteries

There are many applications where you have limits on how much you can cram into a particular space. There are also many applications where you need as much battery as you can get. At the intersection of those applications, you may soon be able to 3D print custom batteries to fit into oddly shaped spaces that might otherwise go to waste.

Commercial batteries are typically cylindrical or rectangular. In theory, you could build tooling to make batteries of any size or shape you want, but it’s an expensive process in small quantities. [Lawrence Ulrich] on Spectrum talks about a new process, developed by [Gabe Elias], that can print anodes, cathodes, separators, and casings for custom battery shapes with no costly tooling.

As an example, consider an unmanned aerial vehicle crammed with avionics. You could put off-the-shelf batteries in the wings, but you’ll end up wasting a lot of space. A custom battery could fill the wing’s interior completely. The post also mentions batteries shaped like the earpieces of a pair of smart glasses.

A prototype showed that in the space of 48 cylindrical cells, the new process could deliver a printed battery that uses 35% more of the available volume and a 50% boost in energy density.

Could you do this yourself? Maybe, but it won’t be trivial. The current process requires a liquid electrolyte and the ability to produce thin layers of exotic materials. What oddly-shaped battery would you like to see? Us? We’d like to have a battery for a laptop that was spread uniformly so there wasn’t a heavy side that has the battery.

Building The Most Simple Motor In Mostly LEGO

Although [Jamie’s Brick Jams] has made many far more complicated motor design in the past, it’s nice to go back to the basics and make a motor that uses as few parts as possible. This particular design starts off with a driver coil and a magnetic rotor that uses two neodymium magnets. By balancing these magnets on both sides of an axis just right it should spin smoothly.

The circuit for the simple motor. (Credit: Jamie's Brick Jams, YouTube)
The circuit for the simple motor. (Credit: Jamie’s Brick Jams, YouTube)

First this driver coil is energized with a 9 V battery to confirm that it does in fact spin when briefly applying power, though this means that you need to constantly apply pulses of power to make it keep spinning. To this end a second coil is added, which senses when a magnet passes by.

This sense coil is connected to a small circuit containing a TIP31C NPN power transistor and a LED. While the transistor is probably overkill here, it’ll definitely work. The circuit is shown in the image, with the transistor pins from left to right being Base-Collector-Emitter. This means that the sensor coil being triggered by a passing magnet turns the transistor on for a brief moment, which sends a surge of power through the driver coil, thus pushing the rotor in a typical kicker configuration.

Obviously, the polarity matters here, so switching the leads of one of the coils may be needed if it doesn’t want to spin. The LED is technically optional as well, but it provides an indicator of activity. From this basic design a larger LEGO motor is also built that contains many more magnets in a disc along with two circular coils, but even the first version turns out to be more than powerful enough to drive a little car around.

Continue reading “Building The Most Simple Motor In Mostly LEGO”