Every ZX81 Expansion Card You Ever Wanted, All At Once

The Sinclair ZX81 was a masterpiece of Sir Clive’s desire to get the most out of the least hardware, being about as minimalist as it was possible to get and still be a home computer in 1981. As such it has a keyboard, a Z80, TC and cassette interfaces, 1K of memory, and that was it. There were any number of add-ons for it, but if you were a 1980s kid the chances are you couldn’t afford them. So 45 years later here’s [adam.klotblixt] with OpenSpand — every ZX81 expansion you could think of, all in one!

For a start there’s a RAM expansion. Not the paltry 16K of old, this is user-configurable and has the whole 64K address space minus the ROM to play with. Then there’s SD card storage, hijacking Sinclair BASIC’s LOAD and SAVE commands. It’s got high-res graphics, emulated sound chips, a joystick port, serial ports, a choice of ROMs, and a composite video output. Perhaps the only thing it doesn’t have from back in the day is a printer interface, but we’re sure the serial port could be pressed into service somehow.

It does this all as you might expect these days, with an RP2350 emulating the real parts. The microcontroller disables the onboard RAM and ROM and emulates those too, such is the disparity in power between it and a Z80. We would have done anything for this expansion, back in the day.

The ’81 features here quite often, most recently in a look at Sinclair’s own RAM expansion.

A 386 PC For Your RP2350

We’re at a fortunate moment: microcontrollers available at modest prices are edging into the capability level previously reserved for full-fat systems and can, through emulation, run software beyond classic 8-bit home computers, consoles, or old arcade games. A project we’ve been watching for a while is tiny386, an emulator for ESP32 boards that provides a 386 PC with just enough 486 and 586 instructions enabled to run a modern Linux kernel. Now we’re pleased to note that this platform is making it to the RP2350, with ports for both the FRANK emulation platform and the Waveshare Pi Zero boards. You can now have a 32-bit PC with all the peripherals, including VGA and DVI/HDMI, for the cost of an inexpensive development board.

Having seen tiny386 run on its minimum-spec ESP32 platform, we’ll concede that while it’s usable, it’s not the fastest experience, but the RP2350 port promises better performance. It’s not for a modern full-fat Linux distro, but should work well for running older operating systems such as DOS, or Windows 3.1 and 95, or even a lean Linux setup. This has fascinating potential: while these systems are old, they still have an enormous software library. The idea of useful general-purpose computing, 1990s style, in the palm of the hand, is interesting.

If you’re curious, you can find tiny386 here and the FRANK boards here. Maybe they’re a better route to ’90s fun and games than a 386 laptop.

Custom AMOLED Wearable Makes Great Icebreaker

Nifty little AMOLED screens are easy to get nowadays, and [Sophie D] demonstrates they are both thin and light enough to be worn with OpenChoker, a design for a choker necklace that was a hit at DEF CON.

The choker consists of an AMOLED touchscreen flanked by short RGB LED strips. Behind the display is the PCB which contains an RP2350 and micro SD card slot for external storage, and at the rear of the choker is an 18650 cell to power it all. The display plays an eye-catching animation that gets generated on the fly while the LEDs sparkle away.

[Sophie] shares a number of interesting takeaways from designing and building this device. One is that the bulk of the PCB design work was interfacing to the display, since no existing footprint or reference design could be found. So if you find yourself with a Hello Lighting HL020E21-02 2.14″ touchscreen display you’re hankering to use in your own project, do yourself a favor and check out [Sophie]’s board design instead of starting from scratch.

Battery life was more than enough for a device like this. A single 18650 cell powered the choker effortlessly for a 16-hour stretch and still the cell measured a robust 3.7 V. While a light-up choker used indoors isn’t a great candidate for wearable solar power, it’s encouraging that there’s no need for a tethered battery pack.

Another tip to consider relates to the screen’s touch sensitivity. In short, the capacitive touch screen responded perfectly when plugged into a development computer, but when mounted and isolated on the choker it responded so poorly as to be useless. It didn’t keep the rest of the choker from doing its job, but it might be worth keeping in mind as something to watch out for with a device like this.

There’s one final mystery [Sophie] ran into: with only one day to spare, glue used to affix some wires ended up melting away the wire insulation, revealing bare copper. We’re not sure what happened there, but if nothing else it’s a reminder that Murphy’s Law is always ready to strike when one is on a deadline.

Voicebox FX Is A Blueprint For CircuitPython I2S Audio

[Adafruit]’s Voicebox FX gadget is a fun, well-documented project that serves another useful purpose: being a fantastic reference design for audio on CircuitPython, with I2S audio components. Be sure to check it out if you have a project that involves any of that and could use a few pointers, or if you just want to jog a few ideas loose.

I2S (Inter-IC Sound) is a protocol aimed squarely at moving audio data between components as digital signals. Our own [Jenny List] can tell you everything you need to know about I2S. It’s a relatively simple interface that is not at all fussy about actually being used for audio, and that has led to it being put to some unusual uses.

The Voicebox FX uses an I2S microphone, an I2S amplifier, and an RP2350 microcontroller to record and play sound as well as offer a variety of effects controlled by physical inputs. It’s all wrapped up in a slick 3D printed case, and while it’s a fantastic reference design, it looks like a fun toy in its own right.

Continue reading Voicebox FX Is A Blueprint For CircuitPython I2S Audio”

A grid of images shows pictures emerging from patches of random noise. To the left, images are more random, while to the right they become more recognizable.

Running Generative AI On An RP2350

Driven by a desire for privacy, customization, and lower costs, there’s growing interest in AI models which can be run on local hardware. Few of them go as far as [Tim], though, who built an image generation diffusion model which can run on an RP2350 microcontroller.

As might be expected, its capabilities are limited. The resolution is 128×128, it only generates images of human faces, and it takes about twenty seconds per image – still impressive for such limited hardware. It runs on a Waveshare RP2350 development board, and it can output the generated image over USB or display it with the aid of a VGA adapter board.

The generative model doesn’t directly create an image. Rather, it generates a distribution in a latent space, which a variational auto-encoder’s decoder component translates into an image. The auto-encoder was trained in two parts: an encoder which transforms an image into a latent-space distribution, and a decoder to transform that distribution back to an image; once this was trained, only the decoder was used.

The generative portion of the model uses a latent flow diffusion transformer; this takes in noise to start with, then iteratively predicts changes which bring it toward the desired image. It can also take in a output class, which guides the generator’s direction (toward a smiling face, for example). [Tim] trained two models, one larger and one faster, and quantized the weights for both to 8-bit integers. Both models, along with the inference program, then fit into 4 MB of flash memory.

For such a small model, the results are remarkably good; they don’t look quite natural, but they’re quite recognizable. For more on how diffusion image generators work, check out our article on Stable Diffusion.

A Compact Game Controller For Your Phone

[Gil Yankovitch] noted that playing games on a touchscreen phone gave up a certain something in terms of the tactile feedback one gets from real buttons. To that end, he was inspired to build a controller specifically for phones that solved this very problem.

The result was JoyFon. It’s a small gamepad built around the Raspberry Pi Pico, and can be put together around an RP2040 or an RP2350 as desired. It has four face buttons, a directional pad, and start and select buttons, as well as additional shoulder buttons up top in later revisions.

The JoyFon enumerates as a standard USB HID gamepad, so you could use it to play games on just about any PC, laptop, or tablet. However, the JoyFon is specifically designed for use with smartphones in the vertical orientation. This guided the design of the 3D printed enclosure, which positions the USB-C port to plug into the base of a phone, such that the buttons sit neatly beneath it. It does cover some of the phone screen, but that’s not always a problem when playing emulated games with a 4:3 or similar aspect ratio. The result is a button and screen layout not dissimilar to that of the original Game Boy handhelds.

We’ve seen some other great custom controller builds over the years, like this fantastic design using keyswitches.

Continue reading “A Compact Game Controller For Your Phone”

A Raspberry Pi Pico 2 W connected to a speaker

Voice Control Toolkit Comes To A Pico Near You

Voice-controlled appliances are nothing new. What might be new, however, is [Moonshine AI] running it all locally on a Raspberry Pi Pico 2 W!

The voice interface is roughly divided into three parts: voice activity detection, SpellingCNN speech-to-text and a neural text to speech. The speech to text supports up to 50 tokens, and can be re-trained to support any specific words you want. It runs a simple loop: detect voice activity, listen for (command) tokens, process them in C++, use the TTS to reply, and repeat.

Now, to be fair, it is a bit of a squeeze: 3.6 MiB of the available 4 MiB FLASH and 468 KiB SRAM on a stock Pi Pico 2 board. It leaves you with just about enough space to write a small amount of extra software, but it’ll be a challenge to fit anything substantial. Still, fitting three different types of AI model needed to make this possible in such a space is quite impressive.