Tetris For Game Boy Gets Online Multiplayer

Released in 1989, the Game Boy version of Tetris is notable for being the first game to support multiplayer via the so-called “Game Link Cable” accessory. So it’s fitting that, 32 years later, that same game is now playable with others over the Internet thanks to an open source USB adapter from [stacksmashing].

As explained in the video below, the adapter is essentially just a Raspberry Pi Pico paired with some level shifters so that it can talk to the Game Boy’s link port. That said, the custom PCB does implement some very clever edge connectors that let you plug it right into the Link Cable for the original “brick” Game Boy as well as the later Color and Advance variants. This keeps you from having to cut up a Link Cable just to get a male end, which is what [stacksmashing] had to do during the prototyping phase.

The DIY breadboard approach works as well.

Of course, the hardware is only one half of the equation. There’s also an open source software stack which includes a Python server and WebUSB frontend that handles communicating with the Game Boy and connecting players. While the original game only supported a two person head-to-head mode, the relatively simplistic nature of the multiplayer gameplay allowed [stacksmashing] to expand that to an arbitrary number of players with his code. The core rules haven’t changed, and each client Game Boy still thinks it’s in a two player match, but the web interface will show the progress of other players and who ends up on top at the end.

To be clear, this isn’t some transparent Link Cable to TCP/IP solution. While something like that could potentially be possible with the hardware, as of right now, the software [stacksmashing] has put together only works for Tetris. So if you want to battle Pokemon over the net, you’ll have to do your own reverse engineering (or at least wait for somebody else to inevitably do it).

The Link Cable port on the Game Boy, especially on the later versions of the hardware, is a surprisingly versatile interface capable of much more than just multiplayer gaming. While we’re certainly keen to see [stacksmashing] develop this project farther, we’re equally excited to see the non-gaming applications of such an easy to use computer interface for the iconic handheld.

Continue reading Tetris For Game Boy Gets Online Multiplayer”

Bridging The PC And Embedded Worlds With Pico And Python

Although protocols like I2C and SPI are great for communicating between embedded devices and their peripherals, it can be a pain to interface these low-level digital interfaces to a PC. [Alexandre] typically used an Arduino to bridge between the PC and embedded worlds, but he got tired of defining a custom serial protocol for each project. Inspired by MicroPython’s machine module, [Alexandre] has developed u2if—an implementation of some of MicroPython’s machine module for PC—using a USB-connected Raspberry Pi Pico to bridge between a PC and low-level digital interfaces.

u2if consists of two parts: the PC portion is a Python implementation of a portion of the MicroPython machine module, and the Raspberry Pi Pico receives some custom C++ firmware. Thus far, [Alexandre] has implemented functionality for the onboard ADCs, I2C, SPI, UART, and GPIO lines as well as additional support for I2S sound and the WS2812B addressable LED.

Development board for Raspberry Pi Pico.

In addition to the u2if package, [Alexandre] has designed a PCB to break out all of the Raspberry Pi Pico’s interfaces in a handy 3×3.9″ board. We especially like that multiple headers are supplied for I2C, including one with enough space to mount an SSD1306 OLED display.

We think this could be an incredibly useful tool, and what makes it even more impressive is that it uses a board many of us already have laying around. If you want a dedicated device for interfacing with low-level digital buses, you may want to check out the GreatFET.

New HackadayU Classes: Antenna Basics, Raspberry Pi Pico, And Designing Complex Geometry

Get ’em while they’re hot: a new session of HackadayU just opened with classes from three fantastic instructors and seats are filling up fast.

Introduction to Antenna Basics — Instructor Karen Rucker teaches the fundamentals of antenna design as if it were your first year on-the-job. She’ll cover the common types of antenna designs and the fundamentals of radio frequency engineering that go into them. Begins Thursday, May 6th.

Raspberry Pi Pico and RP2040 – The Deep Dive — Instructor Uri Shaked guides the class through the internals of the RP2040 microcontroller, covering system architecture, hardware peripherals, and dipping into some ARM assembly language examples. Begins Wednesday, May 5th.

Designing with Complex Geometry — Instructor James McBennett helps you up your 3D modelling game with a course on using complex geometries in Grasshopper3D (part of Rhino3D). Dive into Non-uniform rational B-spline (NURBS) and go from simple shapes to incredibly complex objects with a bit of code. Begins Tuesday, May 4th.

Each course includes five weekly classes beginning in May. Being part of the live class via Zoom offers interactivity with the instructor and other attendees. All tickets are “pay-as-you-wish” with a $20 suggested donation; all proceeds go to socially conscious charities.

For the benefit of all, each class will be edited and published on Hackaday’s YouTube channel once this session has wrapped up. Check out our playlists for past HackadayU courses, or watch them all in one giant playlist.

You might also consider becoming an Engineering Liaison for HackadayU. These volunteers help keep the class humming along for the best experience for students and instructors alike. Liaison applications are now open.

Continue reading “New HackadayU Classes: Antenna Basics, Raspberry Pi Pico, And Designing Complex Geometry”

An RP2040 Board Designed For Machine Learning

Machine learning (ML) typically conjures up ideas of fancy code requiring oodles of storage and tons of processing power. However, there are some ML models that, once trained, can readily be run on much more spartan hardware – even a microcontroller! The RP2040, star of the Raspberry Pi Pico, is one such chip up to the task, and [Arducam] have announced a board aiming to employ it to those ends – the Pico4ML.

The board goes heavy on the hardware, equipping the RP2040 with plenty of tools useful for machine learning tasks. There’s a QVGA camera on board, as well as a tiny 0.96″ TFT display. The camera feed can even be streamed live to the screen if so desired. There’s also a microphone to capture audio and an IMU, already baked into the board. This puts object, speech, and gesture recognition well within the purview of the Pico4ML.

Running ML models on a board like the Pico4ML isn’t about robust high performance situations. Instead, it’s intended for applications where low power and portability are key. If you’ve got some ideas on what the Pico4ML could do and do well, sound off in the comments. We’d probably hook it up to a network so we could have it automatically place an order when we yell out for pizza. We’ve covered machine learning on microcontrollers before, too – with a great Remoticon talk on how to get started!

Slimming The Raspberry Pi Pico With A Hacksaw

The Raspberry Pi Pico is the hot new star of the microcontroller scene, with its fancy IO hardware and serious name recognition. Based on the RP2040 “Raspberry Silicon” chip, it’s introducing fans of the single-board computer line to a lower level of embedded development. The Pico isn’t big, as its name suggests, but miniaturization is a never ending quest for improvement – so [That Dragon Guy] decided to see if the devboard could be smallified further at a minimum of cost.

While other smaller RP2040 boards are reaching the marketplace, they all cost a lot more than the $4 of the Pico. Thus, [That Dragon Guy] got creative. Having realised that the bottom section of the board was only full of passive traces and pads, he simply hacked it off with a scroll saw and sander. This gives a 30% reduction in footprint, at the cost of some mounting holes, GPIO pins and the debug interface.

In testing, the rest of the board continued to function perfectly well, so we’re calling this a win. It builds on amusing experiments [That Dragon Guy] had done before with the Raspberry Pi B+ which gave us a good chuckle. The Raspberry Pi has always been a minimalist darling, with the Pi Zero of 2015 being a bit of a gamechanger, and much beloved by this writer. Video after the break.

Continue reading “Slimming The Raspberry Pi Pico With A Hacksaw”

The Raspberry Pi Pico As An SDR Receiver

With the profusion of cheap RTL-SDR devices and the ever-reducing prices of more capable SDRs there might seem to be little place left for the low-bandwidth devices we’d have been happy with a decade or more ago, but there’s still plenty to be learned from something so simple. It’s something [Luigi Cruz] shows us with a simple SDR using the analogue-to-digital capabilities of the Raspberry Pi Pico, and since it works with GNU Radio we think it’s rather a neat project. CNX Software have the full story, and and quickly reveal that with its 500k samples per second bandwidth it’s not a machine that will set the SDR world on fire even when pushing Nyquist’s Law to the limit.

So with the exception of time signals and a few Long Wave broadcast stations if you live somewhere that still has them, you’ll need a fliter and receive converter to pull in anything of much use radio-wise with this SDR. But a baseband SDR with a couple of hundred kHz useful bandwidth and easy hackability through GNU Radio for the trifling cost of a Raspberry Pi Pico has to be worth a second look. You can see it in action in the video below the break, and if you’re at a loss for what to do with it take a look at Michael Ossmann and Kate Temkin’s 2019 Superconference talk.

Continue reading “The Raspberry Pi Pico As An SDR Receiver”

High-Altitude Balloon Tracker Does Landing Prediction With Pi Pico

[Dave Akerman]’s ongoing high altitude balloon (HAB) work is outstanding, and we’re all enriched by the fact that he documents his work like he does. Recently, [Dave] wrote about his balloon tracker based on the Raspberry Pi Pico, whose capabilities brought a couple interesting features to the table.

In a way, HAB trackers have a fairly simple job: read sensors such as GPS and constantly relay that data to someone on the ground so that the balloon’s location can be tracked, and the hardware recovered when it ultimately returns to Earth. There are a lot of different ways to do this tracking, and one thing [Dave] enjoys is getting his hands on a new board and making a HAB tracker out of it. That’s exactly what he has done with the Raspberry Pi Pico.

Nothing builds familiarity like actually using a part, and the Pico had some useful things to contribute to a HAB tracker application. For one thing, the Pico has an onboard buck-boost converter that allows it to be powered from a relatively wide voltage range (~1.8 V to 5.5 V), so running it directly from batteries is both possible and desirable from a tracker perspective. But a really useful feature was possible thanks to the large amount of memory on the Pico: dynamic landing prediction.

[Dave] does landing prediction prior to launch based on environmental conditions, but it’s always better if the HAB tracker can also calculate its own prediction based on actual observed events and conditions. A typical microcontroller board like an Arduino doesn’t have enough memory to store the required data upon which to do such calculations, but the Pico does so easily. [Dave]’s new board transmits an updated landing site prediction along with all the rest of the telemetry, making the retrieval process much more reliable.

Want to see a completely different approach to HAB recovery? Check out a payload guided by steerable parachutes.