A Breadboard Block For 8-Bit CPUs

Breadboard CPUs are a fantastic learning experience and require serious dedication and patience. Occasionally, CPU builders eschew their breadboards and fab their design onto a PCB. But this takes away the flexibility and some of the opportunity for learning that breadboard CPUs offer. [c0pperdragon] was doing the same sort of repetitive wiring from project to project as most 8-bit breadboard CPUs use memory, a bus, an IO controller, ROM, and a few other passive components.

Taking a compromise approach, [c0pperdragon] built a PCB that can be used as a building block in his custom CPUs which they have titled “ByteMachine”. A single row of 34 pins offer power, clock, reset, 19 address bus lines, 8 data bus lines, and a ROM selector. This means that the CPUs can fit on a single breadboard and can run faster as the impedance of the breadboard has less effect on the circuit. With 512 KB of RAM and 512 KB of ROM, in a ZIF socket for easy reprogramming, ByteMachine has plenty of space.

One drawback is the lack of IO. There is no dedicated address space as this would require decoding logic between the RAM and the CPU. [C0pperdragon] added a simple 8-bit output register provided by a 74-series logic IC. The data is displayed on 8 red LEDs and can be accessed via pins. Input is accomplished in a similar way with just 8 bits of digital input provided.

[C0pperdragon] has built the 65C02, 65C816Z84C00, and the i8088 with the ByteMachine. Each was documented with incredible schematics, pictures, and test programs on GitHub. Next time you’re looking to build a CPU on a breadboard, maybe start with a ByteMachine. In some ways, it might improve your learning experience as it makes the incredible mass of wires we’ve seen on other projects a tad more manageable.

Thanks [Reinhard Grafl] for sending this one in!

Casio Computer Rebuild Puts New Wine In An Old Bottle

With a glut of vintage consumer electronics available from eBay it should be easy to relive your glory days, right? Unfortunately the march of time means that finding gear is easy but finding gear that works is not. So was the case when [Amen] acquired not one, but two used calculator/computer units hoping to end up with one working device. Instead, he went down the rabbit hole of redesigning his own electronics to drive the Casio QT-1 seen here.

Especially interesting is the prototyping process for the replacement board. [Amen] used a “BluePill” STM32 microcontroller board at its heart, and used point-to-point soldering for the rest of the circuitry on a rectangle of protoyping board. That circuit is non-trivial, needing a 23 V source to drive the original VFD from the computer, a battery-backed real-time-clock (MCP7940), and a GPIO expander to scan the keys on the keypad.

It worked great, but couldn’t be cut down to fit in the case. The solution was a PCB designed to fit the footprint of the original. The modern guts still need more firmware work and a couple of tweaks like nudging that 23 V rail a bit higher to 26 V for better brightness, but the work already warrants a maniacal cry of “It’s Alive!”.

This isn’t [Amen’s] first rodeo. Back in March we looked in on another vintage Casio refurb that sniffed out the display protocol.

Transform Kicad Design To Patchwork For Isolation Routing

Tuning a desktop router and your board designs for isolation routing can be a bit tricky, with thin traces usually being the first victim. For simple prototype boards you usually don’t need tightly packed traces, you just want to isolate the nets. To do this with a minimum amount of routing, [Michael Schembri] created kicad-laser-min, a command-line utility that takes a Kicad PCB design and expands all the tracks and pads to their maximum possible width.

Laser scribed PCB with maximum track widths

The software takes one layer of the PCB layout, converts it to black and white, and then runs a C++ Voronoi algorithm on it to dilate each track and pad until it meets another expanding region. Each region is colourised, and OpenCV edge detection is used to produce the contours that need to be milled or etched. A contour following algorithm is then used to create the G-code. The header image shows the output of each step.

Full source code is available on GitHub. [Michael] has had good results with his own boards, which are scribed using a laser cutter before etching, but welcomes testing and feedback from other users. He has found that OpenCV doesn’t always completely close all the contours, but the gaps are usually smaller than the engraving width of his laser, so no shorts are created.

This is basically “Scribble style” prototyping with CAD and CNC tools. If you prefer scribe and etch, you might consider building a simple PCB shaker for faster etching. If you have a router but want to avoid the dust, you can use a carbide scribe to scratch out the tracks without needing to etch.

A Commmand Center For Children With Sensory Needs

Toys for children are meant to be fun and interactive, but they’re even better if they’re educational as well. For [carrola1], a parent of a 4-year-old suffering from from medical disabilities, sensory needs, and autism, a more personalized approach seemed best. The electrical engineer built a wall-mounted command center with plenty of switches, buttons, and knobs to trigger to keep any child happy.

Apart from basic inputs, the device also has a color sensor – the command center can ask the child for an object of a particular color and congratulate them with a song when they’ve successfully acquired one.

The software for the audio and light controls was written in C for a STM32L0 series MCU, with CMSIS as the hardware abstraction layer and STM32CubeIDE as the IDE. The design uses SPI and I2C for serial communication and I2S for communicating between the digital audio devices. Physical inputs include toggle switches, rotary switches, and key switches to provide variety, with all physical hardware connected to the MCU on a custom PCB.

The audio output, sourced from a library of wav files, seems like the most challenging part of the build: the amps needed to be changed from left channel mono configuration to stereo, the output had to be LC filtered, and the code for had to be optimized for size to allow the audio files to play.

You can check out a video of the command center in action on the Reddit post.

 

A Scratch Built VFD Clock With Inner Beauty

Vacuum fluorescent displays (VFDs) are one of those beautiful pieces of bygone technology that you just don’t see much of anymore. At one time they were a mainstay of consumer electronics, but today they’ve largely been replaced with cheaper and more energy efficient displays such as LEDs and LCDs. While they might be objectively better displays, we can’t help but feel a pang of regret seeing a modern kitchen bereft of that unmistakable pale green glow.

If his impressive VFD clock is any indication [Simón Berraud] feels the same way. Not only does the clock’s display instantly trigger waves of nostalgia, but the custom PCB has that mistakable look of consumer electronics circa 1985. If we didn’t know better, we’d think this thing fell through a time warp.

Well, if it wasn’t for the SMD ATmega328 on the flip side of the board, anyway. In addition to the MCU, the clock features four ULN2003AN Darlington transistor arrays to drive the VFD, and a M48T08 Real Time Clock to keep the whole thing ticking.

The careful observer might notice a distinct lack of buttons or switches on the clock, and wonder how this retro wonder is set. In a particularly radical hack, [Simón] sets the time with a hard coded variable in the source code; you just need to set it far enough into the future so that you have enough time to power it up at the appropriate moment.

[Simón] has put the Arduino-flavored source code for the ATmega328 as well as the schematics and board files in his GitHub repository for anyone else who might want to take a walk down memory lane. While you’re at it, you may want to look at these tips for getting unknown VFDs up and running, as well as this interesting explanation of how they can be used as amplifiers if you’re really looking for style points.

Making PCBs With A Cutting Plotter

[LudwigLabs] is creating PCBs using copper foil and a cutting plotter (vinyl cutter). In this approach, it’s an additive process where instead of removing copper from a copper-clad board, the traces are cut out of copper foil and transferred to a solid backing surface (cardboard, fiberglass, etc.).

While similar to the use of copper tape laid out by hand, as covered by us last year, the big advantage of using a cutting plotter is that it allows one to create much more complicated traces similar to those you would expect to see on a factory-made PCB. Since cutting plotters translate a 2D design into very precise movements of the cutting blade, this allows for sharp angles and significantly thinner traces, allows designs from EDA software like KiCad or Altium to be quickly translated to physical boards.

Enterprising hackers might consider the possibility of using this approach to make two-sided, and even multi-layered boards. The copper is produced separately from the substrate which opens up the potential for using uncommon materials like glass or paper to host the circuits. The main limitations are the transferring of (very delicate) copper structures and creating vias without damaging the traces.

As a comparison with traditional PCB fab processes, the photo exposure and etching (or laser exposure and etching) process requires the creation of masks, UV exposing a board, etching, cleaning and so on. The simplicity of copper foil traces has led to many experimenting with this approach. Would you want to use this additive process, or are there refinements or alterations you would make?

DIY Scientific Calculator Powered By Pi Zero

It’s the eternal question hackers face: do you built it, or do you buy it? The low cost and high availability of electronic gadgets means we increasingly take the latter option. Especially since it often ends up that building your own version will cost more than just buying a commercial product; and that’s before you factor in the time you’ll spend working on it.

But such concerns clearly don’t phase [Andrea Cavalli]. Sure he could just buy a scientific calculator, but it wouldn’t really be his scientific calculator. Instead, he’s taking the scenic route and building his own scientific calculator from scratch. The case is 3D printed, the PCB is custom, and even the software is his own creation.

His PCB hooks right up to the GPIO pins of the internal Raspberry Pi Zero, making interfacing with the dome switch keyboard very easy. The board also holds the power management hardware for the device, including the physical power switch, USB connection for charging, and TPS79942DDCR linear regulator.

The case, including the buttons, is entirely 3D printed. At this point the buttons don’t actually have any labels on them, which presumably makes the calculator more than a little challenging to use, but no doubt [Andrea] is working on that for a later revision of the hardware. A particularly nice detail is the hatch to access the Pi’s micro SD card, making it easy to update the software or completely switch operating systems without having to take the calculator apart.

After the kernel messages scroll by, the Pi boots right into the Java calculator environment. This gives the user a fairly standard scientific calculator experience, complete with nice touches like variable highlighting. The Mario mini-game probably isn’t strictly required, but if you’re writing the code for your own calculator you can do whatever you want.

Here at Hackaday we’ve seen a calculator that got a Raspberry Pi upgrade, a classic scientific calculator emulated with an Arduino, and of course we’ve raved about the NumWorks open source graphing calculator. Even with such stiff competition, we think this project is well on its way to being one of the most impressive calculators we’ve ever come across.

Continue reading “DIY Scientific Calculator Powered By Pi Zero”