Gluing 8192 MCUs Together To Make A GPU

What do you get when you take 8,192 CH570 MCUs, put them on custom PCBs, and write firmware for this interconnected gaggle of cores? In the case of [bitluni]’s project, you get something that’s decidedly cluster-shaped.

These cheap MCUs feature a QingKe 32-bit RISC-V core that’s clocked at a maximum of 100 MHz, with an RV32IMBC instruction set. This means that they support integers, integer multiplication and division, bit manipulation, and compressed instructions, but no atomic, vector, or floating-point instructions.

The basic concept was to use a single MCU per pixel, but once you start scaling up a measly 10 mA and ~$0.10 per MCU to literally tens of thousands of them, you’re suddenly talking about thousands of dollars in hardware as well as a cool 655.36A at 3.3V – or 2 kW –  for something close to QVGA resolution at 320×200. Clearly this would be a rather crazy project to implement, which is why each MCU also got its own RGB LED to immediately create the pixel.

Continue reading “Gluing 8192 MCUs Together To Make A GPU”

This KVM Runs A P4 Instead Of A Pi.

If you asked us to build you a KVM last week, we’d likely have reached for a Raspberry Pi. Now, thanks to [JonathanRowny], we’d seriously consider an ESP32-P4, because his IP KVM seems pretty capable.

He’s using the P4 hardware to its fullest, getting the supported 1080p graphics, and doing so in an interesting way– he’s got a commercial adapter board to try and translate HDMI signals to the camera input on his dev board. Conveniently enough, it’s the same ribbon-cable pinout as the RPi, which is not guaranteed by the CSI standard. Writing a driver to take that signal proved the hardest part– aside from the usual chip revision confusion that plagues this chip– and we can’t help but wonder if the client on the other side of the KVM-IP link might have an easier time doing the image processing that was required for a good image. Regardless, he’s got the code as it is now up on GitHub under the Apache license. 

As of this this writing, there’s no audio, and ironically for an ESP32 project networking is wired-only– but much more importantly, there is no security. So it’s a work in progress, but great to see the P4 in the wild doing something other than emulation. Not that we haven’t seen the P4 at work before–the Tanmatsu handheld also makes use of Expressif’s most powerful chip for a handy little terminal. Between the KVM and the handhelds, we cannot help but wonder how many of the projects that were once the provenance of a Pi will get squeezed into these overpowered microcontrollers. Sure, they can’t even match the original Pi in horsepower, never mind a modern Pi5, but how many times have you seen a Linux SBC seriously under-taxed in a project like this?

If you’re swapping Pi for P4– or doing anything else interesting– please let us know on the tips line.

Continue reading “This KVM Runs A P4 Instead Of A Pi.”

CSS On The ESP32

There are lots of graphics libraries available for the ESP32, and lots of ways to program one to boot. Even still, most of us wouldn’t immediately think to CSS when it comes to embedded products — yet that’s now a thing on the Espressif platform, apparently.

The Gea stack allows one to compose CSS and TypeScript code that is then turned into generated C++ code that compiles to native firmware. The team behind Gea have demoed this ability by running a 3D cube animation on an ESP32 at up to 60 FPS. This isn’t some ugly, low-res wireframe demo, either. It’s a full-color animation running on a 410×502 AMOLED screen. It’s very fluid, and can even handle transparency on the cube faces (albeit with a performance penalty).

It’s worth noting that this isn’t a full browser engine. As you might expect, some concessions had to be made to get it running on the ESP32. Namely, it doesn’t handle “:hover” states because it’s designed for touchscreen use, fonts are rasterized, and the UI tree is limited to just 512 nodes. Regardless, it shows that using CSS and TypeScript to develop for the ESP32 is entirely possible without some crazy loss of performance. If you want to build easy interfaces on an ESP32 while leaning on web dev experience, this could be very useful indeed.

There are lots of fun ways to write code for the ESP32; you can even try MicroPython if you like.

Continue reading “CSS On The ESP32”

A BIOS For Your ESP32-C6

An old-style PC BIOS served the function of a bootloader in loading the operating system kernel, and of an API in providing a set of standard system calls through which software could interact with the hardware. Though it as been long-ago superseded by operating system level calls and UEFI bootloaders, it was a simple and easy-to-understand firmware for the PCs of the day.

Microcontrollers usually don’t have anything quite like a BIOS because their software is more often compiled as-is without the need for one. But here’s [Rompass] who has bucked that trend, with a BIOS for the ESP32-C6.

Of course this isn’t the PC BIOS we all know, and you’ll not be running DOS on it. Instead it’s a subsystem that serves the purposes outlined above and provides an environment for dynamically loaded executables from RAM rather than an operating system kernel. The executables are compiled in the normal way for the ESP32, and can be loaded over the network if necessary.

We don’t know how popular a firmware like this one will become, but for us it’s symptomatic of how the line between a microcontroller and a microprocessor is becoming blurred. The next few years are going to continue this trend, as inexpensive microcontroller application processors such as the C6’s P4 bigger brother move into the mainstream.


Header image: Popolon, CC BY-SA 4.0.

Skip The Embedded Filesystem With The TAR-like UTFS Format

If you need to store some data on a resource-constrained embedded platform, the prospect of dragging in a dependency for something like FAT filesystem access to flash or other storage medium can seem rather daunting. Not only is your binary size now significantly larger, the overhead of these filesystems is also not insignificant as they were not really designed for this type of environment. Here [Drew Gaylo]’s UTFS format is an interesting alternative to just writing raw binary data to said storage medium.

As explained in the accompanying introduction article, the basic idea is similar in scope but very much slimmed down compared to the venerable Tape ARchive (TAR) format, hence the Micro (µ) Tar File System name. The provided UTFS implementation is quite small, spanning two source files in C99 with zero heap usage. Targeting a custom store medium requires implementing one read and one write function to match the underlying platform.

A couple of examples are also provided, covering using the built-in Flash of a SAMD20 MCU and the EEPROM of an ATmega328. Compared to raw binary data that’d have to be fully rewritten, UTFS allows for sections of the storage to be accessed as files and thus updated in-place.

Pi Pico Demos, Therefore It Is

A good demo, like [Linus Akesson]’s Sum Ergo Demonstrato, looks like magic to the average hacker. To normies who don’t know the limitations of the RP2350, they don’t see the big deal. To anyone who has spent any time with the chip, though, it’s a series of tricks you cannot help but be amazed by. Fortuanately for us, [Linus] isn’t actually a magician, because while a magician never reveals his tricks, [Linus] has an hour-long video explaining exactly how his demo was accomplished. We’ve embedded both the demo and the explanation below.

Even if you aren’t into YouTube, you should check out the demo video, and again– remember this is all on a Pi Pico with only the extra passives required for video-out. Then you can watch [Linus] explain how he did it, which is really best heard in his own words. There are a couple of bleeding-edge tricks on the RISC V core and peripherals that we would hate to misrepresent– especially the clever hack with the interpolator that he uses for 3D acceleration.

If this sounds a bit familiar, it’s because we were equally impressed by his Kaleidoscopico demo last year. From demos like this to 3D engines on the ESP32, its amazing what you can do on modern micros if you’re willing to hit the limits of the hardware.

Thanks to [Stephen Walters] for the tip!

Continue reading “Pi Pico Demos, Therefore It Is”

Pi Pico Puts Bluetooth Keyboards On The I2C Bus

If you’ve ever worked with I2C, you know its one of those things that makes working with modern microcontrollers such a pleasure. With a few wires and not many more lines of code, you can communicate with all sorts of hardware such as sensors, displays, and input devices. There are even I2C keyboards out there, although they tend to be a bit pokey — and not in the good way as it pertains to keyboards.

But the bt2i2c project from [Roberto Alsina] promises to improve things. With his firmware flashed to a Pi Pico W, you can establish a connection with any standard Bluetooth keyboard and have the keystrokes sent over the wire via I2C. As far as your project is concerned, the input will appear to be coming from a BlackBerry BBQ20/BBQ10 keyboard using the address 0x1F, which means that there’s already plenty of code out there to work with. While [Roberto] explains its not strictly necessary, connecting a ST7789 display to the Pi Pico over SPI will give you some visual feedback on connection status.

As microcontrollers become increasingly powerful and capable of the sort of thing we would once have done on a “real” computer, a project like this has some fascinating potential. We’ve seen a number of “writerdeck” projects running on chips like the ESP32, and it’s not hard to see the appeal of being able to easily pair your favorite Bluetooth keyboard up to one of them.