Scott Shawcroft Is Programming Game Boys With CircuitPython

Some people like to do things the hard way. Maybe they drive a manual transmission, or they bust out the wire wrap tool instead of a soldering iron, or they code in assembly to stay close to the machine. Doing things the hard way certainly has its merits, and we are not here to argue about that. Scott Shawcroft — project lead for CircuitPython — on the other hand, makes a great case for doing things the easy way in his talk at the 2019 Hackaday Superconference.

In fact, he proved how easy it is right off the bat. There he stood at the podium, presenting in front of a room full of people, poised at an unfamiliar laptop with only the stock text editor. Yet with a single keystroke and a file save operation, Scott was able make the LEDs on his Adafruit Edge Badge — one of the other pieces of hackable hardware in the Supercon swag bag — go from off to battery-draining bright.

Code + Community

As Scott explains, CircuitPython prides itself on being equal parts code and community. In other words, it’s friendly and inviting all the way around. Developing in CircuitPython is easy because the entire environment — the code, toolchain, and the devices — are all extremely portable. Interacting with sensors and other doodads is easy because of the import and library mechanics Python is known for, both of which are growing within the CircuitPython ecosystem all the time.

CircuitPython is so friendly that it can even talk to old hardware relatively easily without devolving into a generational battle. To demonstrate this point, Scott whipped out an original Nintendo Game Boy and a custom cartridge, which he can use to play fun sounds via the Game Boy’s CPU.

Now You’re Playing With Python

It’s interesting to see the platforms on which Scott has used the power of CircuitPython. The Game Boy brings the hardware for sound and pixel generation along with some logic, but he says it’s the code on the cartridge that does the interesting stuff.

The CPU communicates with carts at a rate of 1MHz. As long as you can keep this rate up and the CPU understands your instructions, you can get it to do anything you want.

Scott’s custom cart has a 120MHz SAMD51. He spends a second explaining how he gets from Python libraries down to the wire that goes to the Game Boy’s brain — basically, the C code underneath CircuitPython accesses direct structs defined within the SAMD to do Direct Memory Access (DMA), which allows for jitter-free communication at 1MHz.

He’s using the chip’s lookup tables to generate a 1MHz signal out of clock, read, and A15 in order to send music-playing instructions to the sound register of the Game Boy’s CPU. It sounds like a lot of work, but CircuitPython helps to smooth over the dirty details, leaving behind a simpler interface.

If you want easy access to hardware no matter how new or nostalgic, the message is clear: snake your way in there with CircuitPython.

Continue reading “Scott Shawcroft Is Programming Game Boys With CircuitPython”

DIY CircuitPython Brain Snakes Into Small Spaces

Whether you’re new to electronics and programming, or you were bit-banging bare metal long before hair metal, CircuitPython is a great tool for getting a project up and working without all the fuss. The boards show up as mass storage devices, and programming consists of editing the Python file and saving it back to the board.

The only hard part about CircuitPython is trying to cram those official boards into small projects. [Kevin Neubauer] got tired of making his own board every time and came up with a slim system-on-module that has all the core functionality of CircuitPython. CircuitBrains Deluxe has regular holes for using headers, but also has castellated pads so he can solder these modules directly to a larger project PCB. [Kevin] says these are still in the testing and cost-optimization phase, but we would totally buy a few of them.

[Kevin] probably has a programming method for this module in mind already. But if you find yourself mystified by castellated pads, take a look at this pogo pin programmer built for ESP8266s. If your problem is pitch-related, maybe you can save the day with a breakout board.

Thanks to [Drew Fustini] for the tip!

Hacked Calipers Make Automated Measurements A Breeze

Now, digital calipers with wired interfaces to capture the current reading are nothing new. But the good ones are expensive, and really, where’s the fun in plugging a $75 cable into a computer? So when [Max Holliday] was asked to trick out some calipers for automating data capture, he had to get creative.

[Max] found that cheap Harbor Freight digital calipers have the telltale door that covers a serial connector, making them a perfect target for hacking. A little Internet sleuthing revealed the pinout for the connector as well as some details on the serial protocol used by most digital calipers: 24-bit packets is six four-bit words. [Max] used his SAM32, a neat open-source board with both a SAMD51 and an ESP32 that can run CircuitPython. An inverting buffer interfaces the serial lines to the board, which is just the right size to mount on the back of the caliper head. It’s hard to tell how [Max] is triggering readings, but the SAM32 is mounted as a USB device and sends keystrokes directly to a spreadsheet – yes, with the ESP32 it could have been wireless, but his client specifically requested a wired setup. Taking multiple readings is easy now that the user never has to swap calipers for a pen.

Cheap calipers like these are pretty hackable – you can add Bluetooth, turn them into DROs for a milling machine, or even make them talk.