A Pi Pico plugged into a breadboard, with an I2C OLED display connected to it

Need An USB-I2C Adapter? Use Your Pico!

Given its abundance and simplicity, the RP2040 has no doubt become a favourite for USB peripheral building – in particular, USB-connected tools for electronics experiments. Today, we see one more addition to our Pico-based tool arsenal – a USB-I2C adapter firmware for RP2040 by [Renze Nicolai]. This is a reimplementation of the ATTiny-based I2C-Tiny-USB project and complies to the same protocol – thus, it’s compatible with the i2c-tiny-usb driver that’s been in the Linux kernel for ages. Just drag&drop the .uf2, run a script on your Linux system, and you will get a /dev/i2c-X device you can work with from userspace code, or attach other kernel drivers to.

The software will work with any RP2040 devboard – just connect your I2C devices to the defined pins and you’ll have them show up in i2cdetect output on your Linux workstation. As a demo, [Renze] has written a userspace Python driver for one of these SSD1306 128×64 OLEDs, and gives us a commandline that has the driver accept output of an ffmpeg command capturing your main display’s contents, duplicating your screen on the OLED – in a similar fashion that we’ve seen with the “HDMI” I2C-driven display a few months back. Everything you might need is available on the GitHub page, including usage instructions and examples, and the few scripts you can use if you want to add an udev rule or change the I2C clock frequency.

Just to name a few purposes, you can use a Pi Pico as a tool for SWD, JTAG, CAN, a logic analyser with both digital and analog channels, or even as a small EMP-driven chip glitching tool. The now-omnipresent $3 Pi Pico boards, it seems, are a serious contender to fondly remembered hacker tools of the past, such as the legendary BusPirate.

Continue reading “Need An USB-I2C Adapter? Use Your Pico!”

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.