Card's author typing on the IBM PC110's keyboard, with the Pico W-based card plugged into the PCMCIA slot on the left. PC110's screen shows successful ping 8.8.8.8.8.

Pi Pico W Does PCMCIA, Gets This IBM PC110 Online

Bringing modern connectivity to retro computers is an endearing field- with the simplicity of last-century hardware and software being a double-edged sword, often, you bring a powerful and tiny computer of modern age to help its great-grandparent interface with networks of today. [yyzkevin] shows us a PCMCIA WiFi card built using a Pi Pico W, talking PCI ISA. This card brings modern-day WiFi connectivity to his IBM PC110, without requiring a separate router set up for outdated standards that the typical PCMCIA WiFi cards are limited by.

The RP2040 is made to talk PCI ISA using, of course, the PIO engine. A CPLD helps with PCI ISA address decoding, some multiplexing, and level shifting between RP2040’s 3.3V and the PCI 5 V levels. The RP2040 software emulates a NE2000 network card, which means driver support is guaranteed on most OSes of old times, and the software integration seems seamless. The card already works for getting the PC110 online, and [yyzkevin] says he’d like to improve on it – shrink the design so that it resembles a typical PCMCIA WiFi card, tie some useful function into the Pico’s USB port, and perhaps integrate his PCMCIA SoundBlaster project into the whole package while at it.

This is a delightful project in how it achieves its goal, and a pleasant surprise for everyone who’s been observing RP2040’s PIO engine conquer interfaces typically unreachable for run-of-the-mill microcontrollers. We’ve seen Ethernet, CAN and DVI, along many others, and there’s undoubtedly more to come.

We thank [Misel] and [Arti] for sharing this with us!

Mechanical Color Picker Types Hex Codes For You

Hex codes are a simple, unambiguous way to designate colors in digital media. However, going from a color in your head to a hex code can be difficult for the unpracticed. [Guy Dupont] built a little gadget by the name of the Dial Toner to do it for him (Nitter).

The Dial Toner has two dials for each color channel – Red, Green, and Blue. By turning the dials, one can choose a given color in the 8-bit RGB color space, and that color is then displayed on the device’s included RGB LED. Once selected, the button can be pressed to type the selected color’s hex code into a text box. The Dial Toner runs on a Xiao RP2040 microcontroller board, and is coded in CircuitPython.

[Guy] hopes to sell the Dial Toner on Etsy in future, and is even working on a CMYK version for print addicts. We’ve featured [Guy]’s work here before, too, in the form of his extended-play HitClips cartridges. Video after the break.

Continue reading “Mechanical Color Picker Types Hex Codes For You”

Walkmp3rson Is An MP3 Player Like Sony Never Made

If you weren’t already well aware, the 90s are like, so hot right now, and that includes cassette tapes for some reason. (Even though we personally didn’t have a CD player until 1998, they were around as early as 1982.) But if you don’t dig the quality of cassettes, or if you’d just rather carry around more than 45-120 minutes worth of music, than [John Edgar Park]’s Walkmp3rson is definitely the build for you. That’s pronounced ‘Walkperson’, as in a 21st century MP3-based update of the classic Walkman.

Inside this amazing 3D printed enclosure, you’ll find an Adafruit Feather RP2040 controlling the screen, handling input from the rotary encoder and those sweet mechanical keyswitches, and of course, playing audio files from SD cards through the amplifier breakout board. And no, this isn’t just another MP3 player — well, it kind of is, but the presentation really goes a long way here.

There are tons of retro-modern nods, like the cassette reel animation that plays on the TFT screen, the boxy enclosure, and the fact it involves physical media. Oh yes — you get to insert an SD card whenever you want to change albums/discographies/genres/whatever. In fact, this would be a great use of older, smaller SD cards. You could go all out and make tiny album art to slip inside those milky plastic cases. Check out the brief demo video after the break.

Looking to play your tunes on a microcontroller, but not a fan of the Walkman aesthetic? In June we covered a similar audio player powered by the ESP32 that does an uncanny impersonation of a portable tape deck that you might be interested in.

Continue reading “Walkmp3rson Is An MP3 Player Like Sony Never Made”

Interfacing Broken PS4 Controllers With A Replacement PCB

[Becky] had some PS4 controllers that were sadly no longer functional. However, most of the buttons and joysticks still appeared to be okay. Thus, she set about designing a replacement PCB to breathe new life into these formerly bricked gamepads.

In the case of the PS4 controller, most of the buttons are of a membrane type, that talk to the main board inside via a series of contacts on a flex cable. Thus, [Becky] designed her PCB to interface with that to read most of the buttons. A breadboard and an LED came in handy to figure out which pads corresponded to which buttons on the controller. Replacement joysticks were sourced off Amazon to solder directly on to the replacement PCB.

[Becky] also took advantage of Fusion 360’s design tools to 3D print a simulcra of the final design. This helped get the fit just right inside the gamepad’s shell. Continue reading “Interfacing Broken PS4 Controllers With A Replacement PCB”

GP2040: A Configurable Game Pad Firmware

[feralAI] and fellow GitHub contributors present for your viewing pleasure GP2040: an open source game pad firmware for RP2040-based hardware. The dual-core RP2040 is a good platform to use for gaming inputs, as there is plenty of CPU grunt to get sub-1 ms USB polling time, regardless of any other tasks the controller may be performing. Currently the firmware supports PC, Android, RPi, Nintendo Switch, PS3, PS4 (legacy mode), and the sweet MiSTer FPGA-based retro-gaming platform.

The firmware supports the older DirectInput API and the newer shiny (but rather restrictive) XInput API (no, it’s not the old X11 input extension with the same name) — as well as the usual controller features like SOCD cleaning, D-pad mapping, and RGB support for additional distractions. There is even support for those tiny OLED displays (SSD1306 and friends), although we can’t think of a use case for that at the moment. Configuration is particularly interesting, however, as it is based upon an embedded web application. This is where the pin mappings to your actual hardware are defined, as well as all that RGB bling, if you so desire.

Continue reading “GP2040: A Configurable Game Pad Firmware”

The Pi Pico board on top of a white box with an Ethernet jack, with a sensor module plugged onto the Pico's pin headers. A black MicroUSB and a green Ethernet cable are connected to this device.

An Elegant Ethernet Library For Your Next RP2040 Project

A few days ago we covered a project that brought Ethernet connectivity to the Raspberry Pi Pico using little more than some twisted pair and a RJ-45 connector. It was a neat trick, but not exactly ready for widespread adoption. Looking to improve on things a bit, [tvlad1234] has taken that project’s code and rewritten it into a friendly library you can use with any RP2040 board.

In case you missed it, the initial demo did 10BASE-T transmission by bit-banging with the PIO, and was able to send UDP messages to devices on the wired LAN. It was an impressive accomplishment, but its code didn’t make it easy to build your project around it. This new library makes UDP messaging as easy as a printf, offloading all non-PIO-managed Ethernet signal work onto the RP2040’s second CPU core. The library even generates a random MAC address out of your flash chip’s serial number!

As a demonstration of the new library, [tvlad1234] has put together a simple Ethernet-connected temperature monitor using the BMP085 or BMP180 sensor connect over I2C. If you feel like you could use an Ethernet transmit-only sensor in your life, browsing the source code would be a great start.

Bit-Banged Ethernet On The Raspberry Pi Pico

Whilst the Raspberry Pi RP2040 is quite a capable little chip, on the whole it’s nothing really special compared to the big brand offerings. But, the PIO peripheral is a bit special, and its inclusion was clearly a masterstroke of foresight, because it has bestowed the platform all kinds of capabilities that would be really hard to do any other way, especially for the price.

Our focus this time is on Ethernet, utilizing the PIO as a simple serialiser to push out a pre-formatted bitstream. [kingyo] so far has managed to implement the Pico-10BASE-T providing the bare minimum of UDP transmission (GitHub project) using only a handful of resistors as a proof of concept. For a safer implementation it is more usual to couple such a thing magnetically, and [kingyo] does show construction of a rudimentary pulse transformer, although off the shelf parts are obviously available for this. For the sake of completeness, it is also possible to capacitively couple Ethernet hardware (checkout this Micrel app note for starters) but it isn’t done all that much in practice.

Inside the expedient pulse transformer.

UDP is a simple Ethernet protocol for transferring application data. Being connection-less, payload data are simply formatted into a packet buffer up front. This is all fine, until you realize that the packets are pretty long and the bitrate can be quite high for a low-cost uC, which is why devices with dedicated Ethernet MAC functionality have a specific hardware serialiser-deserialiser (SERDES) block just for this function.

Like many small uC devices, the RP2040 does not have a MAC function built in, but it does have the PIO, and that can easily be programmed to perform the SERDES function in only a handful of lines of code, albeit only currently operating at 10 MBit/sec. This will cause some connectivity problems for modern switch hardware, as they will likely no longer support this low speed, but that’s easily solved by snagging some older switch hardware off eBay.

As for the UDP receive, that is promised for the future, but for getting data out of a remote device over a wired network, Pico-10BASE-T is a pretty good starting point. We’ve seen a few projects before that utilize the PIO to generate high speed signals, such as DVI, albeit with a heavy dose of overclocking needed. If you want a bit more of an intro to all things Pico, you could do worse than check out this video series we highlighted a while back.