Inefficient NeoPixel Control Solved with Hardware Hackery

Everyone loves NeoPixels. Individually addressable RGB LEDs at a low price. Just attach an Arduino, load the demo code, and enjoy your blinking lights.

But it turns out that demo code isn’t very efficient. [Ben Heck] practically did a spit take when he discovered that the ESP32 sample code for NeoPixels used a uint32 to store each bit of data. This meant 96 bytes of RAM were required for each LED. With 4k of RAM, you can control 42 LEDs. That’s the same amount of RAM that the Apollo Guidance Computer needed to get to the moon!

His adventure is based on the thought that you should be able to generate these signals with hardware SPI. First, he takes a look at Adafruit’s DMA-Driven NeoPixel example. While this is far more efficient than the ESP32 demo code, it still requires 3 SPI bits per bit of NeoPixel data. [Ben] eventually provides us with an efficient solution for SPI contro using a couple of 7400 series chips:

Schematic of SPI to NeoPixel circuit using 74HC123

[Ben]’s solution uses some external hardware to reduce software requirements. The 74HC123 dual multi-vibrator is used to generate the two pulse lengths needed for the NeoPixels. The timing for each multi-vibrator is set by an external resistor and capacitor, which are chosen to meet the NeoPixel timing specifications.

The 74HC123s are clocked by the SPI clock signal, and the SPI data is fed into an AND gate with the long pulse. (In NeoPixel terms, a long pulse is a logical 1.) When the SPI data is 1, the long pulse is passed through to the NeoPixels. Otherwise, only the short pulse is passed through.

This solution only requires a 74HC123, an AND gate, and an OR gate. The total cost is well under a dollar. Anyone looking to drive NeoPixels with a resource-constrained microcontroller might want to give this design a try. It also serves as a reminder that some problems are better solved in hardware instead of software.

Continue reading “Inefficient NeoPixel Control Solved with Hardware Hackery”

Making Vintage Computing Easy, The Hard Way

If you want to not take for granted how easy and seamless computers have become, take up vintage computing as a hobby. If you venture down the retro path, you’ll quickly question how anyone ever got any useful work done with computers, and the farther back you go in computer history, the more difficult everything seems to become.

Case in point: how do you easily transfer files between a home-brew PC/XT and your modern desktop? Back in the day we did it with null modem cables or by sneaker-netting stacks of floppies, but [Scott M. Baker] found another way — putting a Raspberry Pi on the ISA bus as a virtual floppy drive. The heart of the ISA card is an IDT7130, a 1-kb RAM chip that allows simultaneous asynchronous access over dual ports. One port talks to the ISA bus and the other talks to the GPIO of the Pi, after level-shifting to make everything voltage compatible, of course. [Scott] wrote a driver for the card, plugged a Pi Zero W into the header pins, and threw a Python server together that makes local images available to the shared memory on the card. The upshot of this is that the retro machine thinks it has a floppy in it, but it’s actually a server. The video below has tons of detail and shows the card in action. Pretty slick.

[Scott]’s projects are always fun to check out, and he really seems to have the retro life dialed in. Whether it’s old jukebox hacks or a Unix-ish OS for Z80s, there’s plenty to learn. Although we’d like to see more about that PC/XT in the video; are those Nixies we spy along the front panel?

Continue reading “Making Vintage Computing Easy, The Hard Way”

Respectfully Modifying the Amiga 500

Modifying the Amiga 500 to speed up access to RAM in a memory expansion pack is a well documented procedure, with guides on the process written in the early 1990’s when the hardware was only a few years old. But as they were written for contemporary hardware, they make no concessions for how one should be treating a vintage computer that’s now over 30 years old. In 1993, cutting traces on the Amiga 500 motherboard was just a last ditch effort to eek a few more months of service life out of an outdated desktop computer. But in 2018, it’s kind of like when that old lady tried to “restore” a fresco of Jesus in Spain; it might be done with the best of intentions, but you still screwed the thing up good and proper.

Such things don’t fly over at [Inkoo Vintage Computing]. There you can find a guide that details the impressive lengths one can go to if they want to perform the classic modification without any irreversible changes to the motherboard. To avoid the cut traces and soldered bodge wires, this version of the modification makes use of a novel adapter that breaks out the necessary connections on the 8372A chip.

The adapter is simply a homemade PCB with both male and female plastic leaded chip carrier (PLCC) connectors. The few pins on the chip that needed rerouting are exposed as solder pads on the adapter for easy wiring. There are even a couple jumpers on the adapter to turn the modifications on and off.

Not surprisingly, the trickiest part of building this adapter was sourcing the antiquated PLCC connectors. Assuming you can even find them, you are then left with the challenging task of soldering them together. Judging by the pictures on the [Inkoo Vintage Computing] page, it’s no walk in the park.

Another similar arrangement is used in the expansion bay of the Amiga, where a pin is virtually “cut” in the connector. A tiny PCB is soldered to a 3×2 header to reroute the signals, and another jumper is used to enable and disable the pin. Luckily, the long pins on the Amiga memory expansion are forgiving enough that the little board can fit in between them without breaking electrical contact.

We’re no stranger to the Amiga 500 around these parts. We’ve covered how to get the 1987-vintage machine online in the 21st century, as well as employing a Raspberry Pi to emulate the original floppy drive. You can even make your own faux-Amiga with a 3D printed case, if you suffer from a sort of existential dread when working on a computer that’s older than you are.

One Chip, Sixteen Times The RAM

Have you ever upgraded your computer’s memory sixteen-fold, with a single chip? Tynemouth Software did for a classic Sinclair micro.

For owners of home computers in the early 1980s, one of the most important selling points was how much RAM their device would have. Sometimes though there just wasn’t much choice but to live with what you could afford, so buyers of Sinclair’s budget ZX81 computer had to put up with only 1 kiB of memory. The system bytes took up (by this writer’s memory) around 300 bytes, so user programs were left with only around 700 bytes for their BASIC code. They were aided by Sinclair’s BASIC keywords stored as single bytes, but still that was a limit that imposed coding economy over verbosity.

Sinclair sold a 16 kiB upgrade, the so-called “Rampack”, which located on the ’81’s edge connector and was notorious for being susceptible to the slightest vibration. Meanwhile the mainboard had provision for a 2 kiB chip as a drop-in that was never sold in the UK, and enterprising users could fit larger capacities with soldered combinations of other chips piggybacking the original. And this is what the Tynemouth people have done, they’ve replaced their machine’s dual 1 kiB x 4 chips with a single 62256, and with a bit of pin-bending they’ve managed to do it without the track-cutting that normally accompanies this mod.

Adding chips to a 36-year-old home computer for which there are plenty of available Rampacks might seem a bit of a niche, but in doing so they’ve made a standalone ’81 that’s just a little bit more useable. They’ve also brought a few other components up-to-date, with a composite video mod, switching regulator, and heatsink for the rare ULA chip. If you are of a Certain Generation, it might just bring a tear to your eye to see a ZX81 being given some love.

Did you lose your ZX81 along the way? How about emulating one in mbed?

DIY Ram Pump Obeys the Laws of Physics

Despite the claims of “free energy” on the title of the video below, this is not yet another wacky perpetual motion story. We here at Hackaday fully support the laws of thermodynamics, and we think you should too. But you have to admit that a pump that works without any apparent energy inputs looks kind of shady at first glance.

The apparatus in question is a ram pump, a technology dating back all the way to the 18th century. The version that [Junkyard – Origin of Creativity] built uses commonly available materials like PVC pipes and fittings. About the only things on the BOM that might be hard to scratch up are the brass check valves, which should probably be flap valves rather than the easier to find spring valves. And the only custom part is an adapter to thread the plastic soda bottle that’s used as an air chamber to the PVC, which a 3D printer could take care of if you choose not to hack a bottle cap like [Junkyard] did. The video below shows the impressive lift achieved just by tapping the kinetic energy of the incoming flow.

There, the Second Law of Thermodynamics remains inviolate. But if you still think you can get something for nothing, check out our roundup of perpetual motion and Overunity quackery.

Continue reading “DIY Ram Pump Obeys the Laws of Physics”

Circuit Bent CD Player Is Glitch Heaven

Circuit bending is the art of creatively short circuiting low voltage hardware to create interesting and unexpected results. It’s generally applied to things like Furbys, old Casio keyboards, or early consoles to create audio and video glitches for artistic effect. It’s often practiced with a random approach, but by bringing in a little knowledge, you can get astounding results. [r20029] decided to apply her knowledge of CD players and RAM to create this glitched out Sony Discman.

Continue reading “Circuit Bent CD Player Is Glitch Heaven”

FPGA Drives Old Laptop Screen

Every year, new models of laptops arrive on the shelves. This means that old laptops usually end up in landfills, which isn’t exactly ideal. If you don’t want to waste an old or obsolete laptop, though, there’s a way to reuse at least the screen out of one. Simply grab an FPGA off the shelf and get to work.

[Martin] shows us all how to perform this feat on our own, and goes into great detail about how all of the electronics involved work. Once everything was disassembled and the FPGA was wired up, it took him a substantial amount of time just to turn the display on. From there it was all downhill: [Martin] can now get any pattern to show up on the screen, within reason. The only limit to his display now seems to be the lack of external RAM. He currently uses the setup to drive an impressive-looking clock.

This is a big step from days passed where it was next to impossible to repurpose a laptop screen. Eventually someone discovered a way to drive these displays, and now there are cheap electronics from China that can usually get a screen like this running. It’s impressive to see it done from scratch, though, and the amount of detail in the videos are a great way to understand how everything is working.

Continue reading “FPGA Drives Old Laptop Screen”