CircuitPython Goes Turbo With Precompiled Functions

It would not be at all original to declare that Python is the new BASIC. Like BASIC, it has been the first programming language for a whole generation of coders, and its main advantage is that it’s quick and easy to write in. Like BASIC it is an interpreted language, and thus rather slow to execute.

Thus while CircuitPython can be very useful for beginners and quick projects, it hits the limitations of the hardware far sooner than it needs to — unless you can pre-compile critical parts of the code, which you now can, thanks to CircuitPython Turbo by [Mikey Sklar] with some help from Anthropic’s Claude LLM.

Now if that sounds a lot like MicroPython’s ‘Viper’ and machine-code compiler, that’s because it is. CircuitPython is a fork of MicroPython with some handy extras on Adafruit boards, but Viper wasn’t one of them until now. Before the Turbo version, CircuitPython only ran in interpreted mode.

Like MicroPython, using CircuitPython Turbo you can flag sections to run as ‘native’, where instructions are compiled but values stay as python objects, which gets you about a 3X speedup. A little more rewriting to declare your variables and pointers and you can use ‘viper’ mode, which can — depending on what you’re up to — result in a 20x to 70x speedup. In Adafruit’s documentation, they demonstrate a Metro RP2040 calculating the Mandelbrot set 3x faster in Native and 19.7 times faster with Viper than normal Python bytecode.

The one thing that we miss from BASIC that CircuitPython Turbo doesn’t give is inline assembly– though interestingly enough, that is in the upstream MicroPython implementation, so perhaps its day will come here too. Not every job is suited to the use of Python on microcontrollers, but we’ve seen it used for everything from e-bikes to a Winamp-inspired music player.

Tensegrity construction with Adafruit led strands

The Jell-O Glow Tensegrity Toy You Didn’t Know You Needed

If you’re looking to add a pop of glowing whimsy to your workspace, check out this vibrant jiggly desk toy by [thzinc], who couldn’t resist the allure of Adafruit’s NOODS LED strands. [thzinc]’s fascination with both glowing LEDs and levitating tensegrity designs led to an innovative attempt to defy gravity once again.

The construction’s genius is all about the balance of tension across the flexible LED strands, with three red ‘arms’ and a blue ‘hanger’ arm supporting the central hub. [thzinc]’s early designs faced print failures, but by cleverly reorienting print angles and refining channel designs, he achieved a modular, sturdy structure. Assembly involved careful soldering, tension adjustments, and even a bit of temporary tape magic to perfect the wobbling equilibrium.

But, the result is one to applaud. A delightful, wobbly desk toy with a kind of a Jell-O vibe that dances to your desk’s vibrations while glowing like a mini neon sign. We’ve covered tensegrity constructions in the past, so with a little digging through our archives you’ll be able to find some unique variations to build your own. Be sure to read [thzinc]’s build story before you start. Feel free to combine the best out there, and see what you can bring to the table!

Continue reading “The Jell-O Glow Tensegrity Toy You Didn’t Know You Needed”

Build An Easy Replica Of HAL 9000

Adafruit’s PropMaker Feather is a microcontroller board designed specifically for building props with electronic features. Thus, what better way to show it off than by building a nifty replica of the most menacing AI ever to roam this solar system? That’s right, it’s the Adafruit HAL9000 build!

Following the 80/20 rule, this version is intended to be reasonably authentic while remaining affordable and easy to build. It’s built around Adafruit’s existing Massive Red Arcade Button, which looks like a decent simulacra of HAL9000’s foreboding, perceptive lens. It’s placed in a case assembled from laser-cut acrylic, with a neat inkjet-printed label on top. Where previously, sound effects were courtesy of an Arduino Uno with a Wave Shield, this version uses the PropMaker Feather, based on the RP2040, instead. It’s actually possible to assemble with zero soldering thanks to quick-connect wires and screw terminals on the PropMaker Feather.

Fundamentally, if you’re building a simple prop that needs audio or LEDs, the PropMaker Feather could be a useful tool for the job. Alternatively, consider building a HAL replica with more capability, like controlling your home. Just don’t give it too much responsibility—we all know how that ends. Video after the break.

Continue reading “Build An Easy Replica Of HAL 9000”

The Past, Present, And Future Of CircuitPython

Modern microcontrollers like the RP2040 and ESP32 are truly a marvels of engineering. For literal pocket change you can get a chip that’s got a multi-core processor running at hundreds of megahertz, plenty of RAM, and more often than not, some form of wireless connectivity. Their capabilities have been nothing short of revolutionary for the DIY crowd — on any given day, you can see projects on these pages which simply wouldn’t have been possible back when the 8-bit Arduino was all most folks had access to.

Limor Fried

Thanks to the increased performance of these MCUs, hackers and makers now even have a choice as to which programming language they want to use. While C is still the language of choice for processor-intensive tasks, for many applications, Python is now a viable option on a wide range of hardware.

This provides a far less intimidating experience for newcomers, not just because the language is more forgiving, but because it does away with the traditional compile-flash-pray workflow. Of course, that doesn’t mean the more experienced MCU wranglers aren’t invited to the party; they might just have to broaden their horizons a bit.

To learn more about this interesting paradigm shift, we invited the fine folks at Adafruit to the Hack Chat so the community could get a chance to ask questions about CircuitPython, their in-house Python variant which today runs on more than 400 devices.

Continue reading “The Past, Present, And Future Of CircuitPython”

Compose Any Song With Twelve Buttons

Limitations placed on any creative process often paradoxically create an environment in which creativity flourishes. A simple overview of modern pop, rock, or country music illustrates this principle quite readily. A bulk of these songs are built around a very small subset of music theory, often varying no more than the key or the lyrics. Somehow, almost all modern popular music exists within this tiny realm. [DeckerEgo] may have had this idea in mind when he created this tiny MIDI device which allows the creation of complex musical scores using a keyboard with only 12 buttons.

The instrument is based around the Adafruit MacroPad, which is itself built on the RP2040 chip. As a MIDI device, it needs to be connected to a computer running software which can support MIDI instruments, but once its assembled and given its firmware, it’s ready to rock. A musician can select one of any number of musical scales to operate within, and the 12 keys on the pad are mapped to the 12 chromatic notes within that scale. It can also be used to generate drum tracks or other backing tracks to loop before being used to create melodies as well.

[DeckerEgo] took a bit of inspiration from an even simpler macro pad we featured before which is based around the idea that a shockingly high number of songs use the same four chords. His macro pad includes creation of chord progressions as well, but expands on that idea to make more complete compositions possible. And, for those looking to build their own or expand on this project, he has also made all of the source code available on his GitHub page.

Continue reading “Compose Any Song With Twelve Buttons”

Modded See ‘N Say Teaches The Sounds Of City Life

The Fisher-Price See ‘n Say was introduced back in 1964, and since then has helped teach countless children the different sounds made by farm animals. But what about our urban youth? If they’re going to navigate a concrete jungle, why not prepare them to identify the sound of a jackhammer or the chime that plays before an announcement goes out over the subway’s PA system?

That’s the idea behind this hacked See ‘n Say [John Park] put together for Adafruit. Now we should note up front that no vintage toys were sacrificed during the production of this gadget — it seems Fisher-Price (predictably) dropped the tiny record player these toys used to use for a cheap electronic board sometime in the 90s. A quick check with everyone’s favorite A-to-Z megacorp shows you can pick up one of these new-school models for around $25 USD.

The modern electronic version of the toy is easy to mod.

Cracking open the electronic version of the See ‘n Say reveals a circular PCB with a series of membrane buttons that are pressed by the mechanics of the spinning pointer. As it so happens, there are handy test points next to each of these buttons, which makes it simple to wire up to a microcontroller.

In this case, it’s Adafruit’s KB2040, which is connected to a MAX98357A amplifier board over I2S. A small boost converter module is used to wring 5 volts out of the toy’s pair of AA batteries. The original speaker is repurposed, though [John] adds a physical power switch to keep the boost converter from flattening the alkaline batteries when not in use.

On the software side, all you’ve got to do is load the MCU with your sounds and write a bit of code that associates them with the button being pressed on the PCB. [John] gets his city sounds from Freesound, a community-maintained database of Creative Commons Licensed sounds, and provides the CircuitPython code necessary to tie everything together.

The last step is the artwork. For this project, [Brian Kesinger] provided some swanky vintage-looking imagery that perfectly fits the See ‘n Say style. The art is available under the NonCommercial-ShareAlike Creative Commons license, so you’re free to use it in your own version. Though naturally, that assumes you’ve decided to use the same sounds as [John] — the beauty of this project is that you could easily load it up with whatever sounds you’d like Hacker Junior to learn. Possibly a well-known Australian YouTuber?

If anyone feels inclined to build a Hackaday-themed See ‘n Say based on this project, we’ve love to see it.

Continue reading “Modded See ‘N Say Teaches The Sounds Of City Life”

Floppy disks

Adafruit Hack Chat Helps You Copy That Floppy

You might think the era of the 3.5 inch “floppy” disk is over, and of course, you’d be right. But when has that ever stopped hackers before? Just because these disks are no longer being manufactured doesn’t mean you can’t find them, or that the appropriate drives aren’t readily available. In fact, as [Ladyada] explained during this week’s Floppy Interfacing Hack Chat with Adafruit, the ongoing chip shortages mean its often easier and cheaper to track down old hardware like this than it is modern microcontrollers and other high-tech components.

Hack Chat posterWhat awaits the brave hacker that picks up a box of random floppies and a dusty old drive at the local thrift store? More than you might expect. As the Hack Chat goes on, it becomes increasingly obvious that these quaint pieces of antiquated technology can be rather difficult to work with. For one thing there are more formats out there than you’ve probably considered, and maddeningly, not all drives are able to read all types (even if they say they do). That means a disk which might seem like a dud on one drive could work perfectly fine in another, which is why the team at Adafruit recommend having a few on hand if you want to maximize your chances of success.

Now here comes the tricky part: unless you happen to have a 1990s vintage computer laying around, getting these drives hooked up is decidedly non-trivial. Which is why Adafruit have been researching how to interface the drives with modern microcontrollers. This includes the Adafruit_Floppy project, which aims to port the well known Greaseweazle and FluxEngine firmwares to affordable MCUs like the Raspberry Pi Pico. There’s also been promising developments with bringing native floppy support to CircuitPython, which would make reading these disks as easy as writing a few lines of code.

But wait, surely this is a solved problem? Why not just pick up a cheap USB floppy drive from the A to Z online retailer we all love to hate? Unfortunately, these gadgets are something of a mixed bag. [Ladyada] pulls one apart on camera to show that what you’re actually getting with one of these units is a new old stock laptop floppy drive hooked up to a dodgy purpose-built chip that connects to the original 26-pin flex cable and offers up a USB interface. That would be great, if it wasn’t for the fact that the chip is exceedingly selective about what kind of disks it will read. If you’re only worried about bog standard IBM-formatted disks they can work in a pinch, but like they say, you get what you pay for.

So is it all just academic? Is there really any reason to use a floppy disk in 2022? The fine folks at Adafruit would argue that the skills necessary to read usable data out of a stream of magnetic flux changes may very well come in handy in unexpected ways down the road. But even if not, there’s at least one good reason to cultivate the technology required to reliably read from these once ubiquitous storage devices: archiving the data stored on these disks before they invariably succumb to so-called “bit rot” and are potentially lost to history.

Continue reading “Adafruit Hack Chat Helps You Copy That Floppy”