Picopad Is A New Open Source Game Console

Microcontrollers are so powerful these days that you can build color handheld games with them that match or exceed what you’d ever get on the Game Boys and Game Gears of yesteryear. The Picopad aims to offer just this, in an open-source hackable format that’s friendly to experimenters.

As you might have guessed from the name, the Picopad is based on the Raspberry Pi Pico and its RP2040 microcontroller. It features four face buttons and a D-pad, along with a small color LCD with a 320×240 resolution. There is also a microSD slot upon which programs can be stored, and also an expansion port with headers for a variety of IO from the RP2040 itself including both GPIOs, serial, I2C and analog input pins. The housing is constructed out of PCBs, with some cheerful gaming artwork adding a fun aesthetic. Development is via a custom C SDK, with support for Micropython as well.

If you want to build your own and don’t fancy starting from scratch, kits are available online. We’ve seen some other great gaming experiments with the Raspberry Pi Pico before, too, like an open-world 3D game and ZX Spectrum emulators. Video after the break.

Continue reading “Picopad Is A New Open Source Game Console”

A BASIC Interpreter For The Raspberry Pi Pico

It’s pretty easy to program the Raspberry Pi Pico in Python, or you can use C or C++ if you so desire. However, if you fancy the easy language of yesteryear, you might like PiccoloBASIC from [Gary Sims].

Putting it simply, piccoloBASIC is a BASIC interpreter that runs on the Raspberry Pi Pico. It features all the good bits of BASIC such as GOTO and GOSUB commands, that fancier languages kind of look down upon. It’s also got enough built-in routines to handle regular programming life, like sleeps, delays, a basic pseudorandom number source, trigonometric functions, and the ability to deal with floating point numbers. As far as microcontroller tasks go, it’s got rudimentary support for talking to GPIOs right now via the pinon and pinoff commands. However, it’s probably not the way to go if you want to bit-bang an SD card to within an inch of its speed rating.

Down the road, [Gary] hopes to add support for features like the Pico’s I2C, SPI, and PIO hardware, along with networking protocols and Bluetooth. PEEK and POKE are also hopefully on the way for those that like to fiddle with memory directly.

Meanwhile, if you’re looking for a different yet similar take, explore the port of MMBasic to the Pico platform. Video after the break.

Continue reading “A BASIC Interpreter For The Raspberry Pi Pico”

A Pico-Based ZX Spectrum Emulator

The ZX Spectrum was a popular computer of the 8-bit era. Now, it’s possible to emulate this machine on a microcontroller so cheap that it’s literally been given away on the front cover of magazines. Yes, we’re talking about the Pico ZX Spectrum project.

The project consists of all the necessary code to emulate a ZX Spectrum upon the hardware of the RP2040 microcontroller that makes up the Raspberry Pi Pico. The community has then taken this code and run with it, using it as the basis for all manner of different ZX Spectrum builds. If so desired, you can go barebones and use the Pico to run a ZX Spectrum off a breadboard with HDMI video output. Alternatively, you can build something like the PicoZX from [Bobricius]. The handheld computer features a PCB-based housing, along with an LCD and an integrated keyboard. Other configurations support features like USB keyboards, VGA outputs, and working sound output.

It’s great to see a classic 8-bit computer reimagined in all kinds of new tribute form factors. The Spectrum was always beloved for its neat all-in-one design, and there are several modern remixes that riff on that theme. The fact that they can all be powered by a cheap single-board microcontroller is all the more astounding. Video after the break.

Continue reading “A Pico-Based ZX Spectrum Emulator”

Bringing The PIO To The FPGA

We’ve seen some pretty incredible hacks using the Raspberry Pi 2040. However, one of the most exciting bits of hardware onboard is the Programmable I/O (PIO). Not content with it just being a part of RP2040-based projects, [Lawrie Griffiths] has been porting the PIO to Verilog so anyone can enjoy it.

This particular implementation is based only on the spec that Raspberry Pi provides. For assembling PIO code, [Lawrie] uses Adafruit’s pioasm assembler they use for their MicroPython framework. There’s a simulator to test different programs, and the project targets the Blackice MX and the Ulx3s. A few example programs are included in the repo, such as outputting a pleasant guitar note over I2S and driving a chain of WS2812s.

The project is still incomplete but slowly making progress. It’s an incredible feat of reverse engineering. While the simulator can be used to debug programs, step through instructions, and inspect waveforms, the ultimate value of bringing the PIO to other systems is that now we can re-use the code. Things like the can2040, an implementation of the CAN bus protocol using the PIO. Or even a PIO-based USB host.

Bust Out That Old Analog Scope For Some Velociraster Fun!

[Oli Wright] is back again with another installation of CRT shenanigans. This time, the target is the humble analog oscilloscope, specifically a Farnell DTV12-14 12 MHz dual-channel unit, which features a handy X-Y mode. The result is the Velociraster, a simple (in hardware terms) Raspberry Pi Pico based display driver.

Using a Pico to drive a pair of AD767 12-bit DACs, the outputs of which drive the two ‘scope input channels directly, this breadboard and pile-of-wires hack can produce some seriously impressive results. On the software side of things, the design is a now a familiar show, with core0 running the application’s high-level processing, and core1 acting in parallel as the rendering engine, determining static DAC codes to be pushed out to the DACs using the DMA and the PIO.

Continue reading “Bust Out That Old Analog Scope For Some Velociraster Fun!”

PicoCray - Raspberry Pi Pico Cluster

Parallel Computing On The PicoCray RP2040 Cluster

[ExtremeElectronics] cleverly demonstrates that if one Raspberry Pi Pico is good, then nine must be awesome.  The PicoCray project connects multiple Raspberry Pi Pico microcontroller modules into a parallel architecture leveraging an I2C bus to communicate between nodes.

The same PicoCray code runs on all nodes, but a grounded pin on one of the Pico modules indicates that it is to operate as the controller node.  All of the remaining nodes operate as processor nodes.  Each processor node implements a random back-off technique to request an address from the controller on the shared bus. After waiting a random amount of time, a processor will check if the bus is being used.  If the bus is in use, the processor will go back to waiting.  If the bus is not in use, the processor can request an address from the controller.

Once a processor node has an address, it can be sent tasks from the controller node.  In the example application, these tasks involve computing elements of the Mandelbrot Set. The particular elements to be computed in a given task are allocated by the controller node which then later collects the results from each processor node and aggregates the results for display.

The name for this project is inspired by Seymore Cray. Our Father of the Supercomputer biography tells his story including why the Cray-1 Supercomputer was referred to as “the world’s most expensive loveseat.” For even more Cray-1 inspiration, check out this Raspberry Pi Zero Cluster.

One of the PCB projects involved being held in the author's hands - a large-ish green board, with two Pi Picos visible on it

RP2040 And 5V Logic – Best Friends? This FX9000P Confirms!

Over the years, we’ve seen some modern microcontrollers turn out to be 5V-tolerant – now, RP2040 joins the crowd. Half a year ago, when we covered an ISA card based on a Pi Pico, [Eben Upton] left a comment saying that RP2040 is, technically, 5V tolerant for GPIO input purposes. The datasheets don’t state this because the reality of 5V tolerance isn’t the same as for natively 5V-tolerant chips – for instance, it doesn’t extend all the way to 5.5V for it to be ‘legally’ 5V-tolerant, as in, what 5V tolerance typically means when mentioned in a datasheet.

Having read that comment, [Andrew Menadue] has set out to test-drive the RP2040 GPIO capabilities, in a perfectly suited real-world scenario. He’s working with retro tech like Z80-era computers, using RP2040 boards for substituting entire RAM and ROM chips that have died in his FX9000P. Not only do the RP2040-driven replacements work wonders, using RP2040 boards also turns out to be way cheaper than sourcing replacements for chips long out of production!

Previously, [Andrew] used level shifter chips for interfacing the RP2040 with 5V systems, but he’s rebuilt a few designs of his without level shifters for the sake of this experiment. Now, he reports that, so far, those boards have been running long-term without problems. Together with [Eben]’s comment, this instills confidence in us when it comes to our RP2040 forays and 5V inputs.

There are a number of important caveats to this, that you should read up on. Some major points – certain GPIOs (like ADC ones) can’t take it, the GPIOs aren’t 5V-tolerant when set to output, and you shouldn’t feed the GPIOs 5V when the RP2040’s VDDIO is not powered up. [Andrew] points out one such case himself – one board of his has shed all level shifters except for the 8-bit address bus, which is driven by either the CPU or the RP2040 at different times, and that would result in 5V on an output-set GPIO when contention happens. All in all, if you’re working with 5V logic and your application is more hacking than business-critical stuff, you can shed the level shifters, too.

Continue reading “RP2040 And 5V Logic – Best Friends? This FX9000P Confirms!”