❌

Reading view

There are new articles available, click to refresh the page.

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.

Running Generative AI on an RP2350

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.

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.

❌