BFree Brings Intermittent Computing To Python

Generally speaking, we like our computing devices to remain on and active the whole time we’re using them. But there are situations, such as off-grid devices that run on small solar cells, where constant power is by no means a guarantee. That’s where the concept of intermittent computing comes into play, and now thanks to the BFree project, you can develop Python software that persists even when the hardware goes black.

Implemented as a shield that attaches to a Adafruit Metro M0 Express running a modified CircuitPython interpreter, BFree automatically makes “checkpoints” as the user’s code is running so that if the power is unexpectedly cut, it can return the environment to a known-good state instantaneously. The snapshot of the system, including everything from the variables stored in memory to the state of each individual peripheral, is stored on the non-volatile FRAM of the MSP430 microcontroller on the BFree board; meaning even if the power doesn’t come back on for weeks or months, the software will be ready to leap back into action.

In addition to the storage for system checkpoints, the BFree board also includes energy harvesting circuity and connections for a solar panel and large capacitor. Notably, the system has no provision for a traditional battery. You can keep the Metro M0 Express plugged in while developing your code, but once you’re ready to test in the field, the shield is in charge of powering up the system whenever it’s built up enough of a charge.

The product of a collaboration between teams at Northwestern University and Delft University of Technology, BFree is actually an evolution of the battery-free handheld game they developed around this time last year. While that project was used to raise awareness of how intermittent computing works, BFree is clearly a more flexible platform, and is better suited for wider experimentation.

We’ve seen a fair number of devices that store up small amounts of energy over the long term for quick bouts of activity, so we’re very interested to see what the community can come up with when that sort of hardware is combined with software that can be paused until its needed.

an image of the volume adjustment board

Is Your Movie Too Loud? Can’t Hear The Dialogue? This Circuit Can Help.

Everyone loves watching movies, that is, so long as you can hear what the characters on screen are saying. [GreatScott] found this second part difficult while watching through BladeRunner 2049, so he designed an automatic volume adjuster to assist.

At a high level, the solution is fairly straightforward; when there is loud music playing in a movie, turn the volume down. The challenge is how to actually achieve that. The first step was controlling the volume. To avoid having to modify or damage his sound system, [GreatScott] opted instead to mimic the volume up and down signals of his remote over IR. Using the very handy IRremote library for Arduino and its built-in decoding functionality, he was able to identify and replicate the signals with his own IR LED.

The second step in this process was measuring the volume of the movie. [GreatScott] achieved this with a microphone and amplifier circuit, that was then piped into one of the analog pins of the Arduino Pro Micro at the heart of the build. Since the audio being sampled could have a frequency as high as 20 kHz, the ADC Prescaler had to be adjusted from its standard value, which would have only permitted measurements at less than 5 kHz.

The third step was writing the algorithm to detect loud music and adjust the volume accordingly. The Arduino will measure the audio until a sound greater than the dead band value, set with one of the two onboard potentiometers, is detected. This then triggers the Arduino to start a timer, to see how frequently the upper limit is being surpassed. If it is just one or two occasionally loud noises (like a scream, a clap, whistling, etc.) the Arduino will not take any action, but multiple loud noises in rapid succession will then trigger the volume down command over the IR LED. A second potentiometer allows for adjustment of this timer’s critical value, so that you can make the system respond faster or slower depending on the movie.

Once the sound has been detected to have dropped down below a critical vaue, the Arduino assumes that the movie is back to dialog and will increase the volume by the number of times it decreased it before, leaving you back at the perfect volume.

Maybe you’re the type that cares more for the visuals of a movie, rather than the audio. In that case, this e-paper movie display will be perfect for giving you time to appreciate every frame!

Continue reading “Is Your Movie Too Loud? Can’t Hear The Dialogue? This Circuit Can Help.”

Taking A Deep Dive Into SPI

With the prevalence of libraries, it has never been easier to communicate with hundreds of different sensors, displays, and submodules. But what is really happening when you type SPI.begin() into the Arduino IDE? In his most recent video, [Ben Eater] explores the Serial Peripheral Interface (SPI) and how it really works.

Most Hackaday readers probably know [Ben] from his breadboard-based computers, such as the 6502 build we featured in 2019. Since then he has been hard at work, adding new and interesting additions to his breadboard computer, as well as diving into different communication protocols to better understand and implement them. For this video, [Ben] set the goal of connecting the BME280, a common pressure, temperature, and humidity sensor with an SPI interface, to his breadboard 6502 computer. Along the way, [Ben] discusses how exactly SPI works, and why there is so much conflicting nomenclature and operations when looking at different SPI devices.

If breadboard computers aren’t your thing, there are tons of other uses for the BME280, such as helping to modernize a Casio F-91W.

Continue reading “Taking A Deep Dive Into SPI”

vektorkollektor-deploy-familyInPark

Vektor Kollektor Inspector

With the world opening up again, [Niklas Roy] and [Kati Hyyppä] have been busy making a public and collaborative project. Meet the Vektor Kollektor, a portable drawing machine experience, complete with a chip-tune soundtrack. It’s great to see public art meet the maker community with zero pretension and a whole lot of fun!

The build started with an HP7475A pen plotter from the 80s, one that was DOA (or was fried during initial testing). [Niklas] and [Kati] kept the mechanism but rebuilt the controls allowing for easy integration with an Arduino Nano and to be powered with a motorcycle battery.

The magic seems to be less in the junk-bin build (which is great) and more in the way this team extended the project. Using a joystick with arcade buttons as an input, they carted Vektor Kollektor to public parks and streets where they invited others to make art. The Kollekted drawings are available on a gallery website in a very cool animated form, freely available for download, on t-shirts, 3D prints, and on coffee mugs because, why not?

Some select drawings are even spray-painted on walls using a large plotter, and we really hope [Niklas Roy] and [Kati Hyyppä] share details on that build soon. Of course this comes hot on the heels of the workshop window cyborg we saw from these two hardware artists.

Continue reading “Vektor Kollektor Inspector”

Spooky USB Baby Types Out Messages From Beyond

You might think it’s a bit early for us to be running Halloween hacks, but don’t worry. While this microcontroller-equipped doll that mimics a USB keyboard to type out messages in the creepiest way possible might seem like a gag gift you’d get after attending somebody’s bone-chilling holiday bash, creator [Jonathan] actually put it together for a friend’s wedding. So not only is it an interesting piece of hacked together hardware, but it’s also a great reminder about the importance of having a wedding registry.

Even if this seems like a rather unusual wedding gift from an outsider’s perspective (for the record, pranks involving this “haunted doll” have been a running gag between them since their school days), we can’t help but be impressed with the way [Jonathan] implemented it. An ATtiny85-powered Digispark is hidden inside the doll, along with a simple USB 2.0 hub that supposedly eases some teething issues the diminutive development board has with newer USB 3.0 ports. Through the use of V-USB, this lets the baby type out messages once plugged into the recipient’s computer.

Soldering the Digispark to a cheap USB hub keeps newer computers happy.

Now he could have just stopped there, but [Jonathan] wanted this to be an interactive experience. Specifically, he wanted the baby to present the newlyweds with a personally test of sorts, and that meant taking user input. He came up with the clever user interface demonstrated in the video below, which responds to changes in the system’s “Caps Lock” state.

This platform-agnostic solution lets the user navigate the doll’s menu system by tapping a single key, although the Chromebook users out there will have to break out the Alt key to play along. It’s a neat trick for getting two-way communication going between a MCU and a computer without any client-side software, and worth filing away mentally for future non-haunted projects. It’s also worth checking out the effort [Jonathan] put into optimizing everything to fit into the chip’s paltry 6012 bytes of flash.

Incidentally, this is a good a time as any to remind readers that our Halloween Hackfest contest is live right now and taking entries until October 11th. If you’ve got any cursed bar mitzvah gifts you’ve been putting the finishing touches on, we’d love to see them.

Continue reading “Spooky USB Baby Types Out Messages From Beyond”

One Man’s Quest To Build A Baby Book With Brains

Regular readers will know that Hackaday generally steers clear of active crowdfunding campaigns. But occasionally we do run across a project that’s unique enough that we feel compelled to dust off our stamp of approval. Especially if the campaign has already blasted past its funding goal, and we don’t have to feel bad about getting you fine folks excited over vaporware.

It’s with these caveats in mind that we present to you Computer Engineering for Babies, by [Chase Roberts]. The product of five years of research and development, this board book utilizes an internal microcontroller to help illustrate the functions of boolean logic operations like AND, OR, and XOR in an engaging way. Intended for toddlers but suitable for curious minds of all ages, the book has already surpassed 500% of its funding goal on Kickstarter at the time of this writing with no signs of slowing down.

The electronics as seen from the rear of the book.

Technical details are light on the Kickstarter page to keep things simple, but [Chase] was happy to talk specifics when we reached out to him. He explained that the original plan was to use discreet components, with early prototypes simply routing the button through the gates specified on the given page. This worked, but wasn’t quite as robust a solution as he’d like. So eventually the decision was made to move the book over to the low-power ATmega328PB microcontroller and leverage the MiniCore project so the books could be programmed with the Arduino IDE.

Obviously battery life was a major concern with the project, as a book that would go dead after sitting on the shelf for a couple weeks simply wouldn’t do. To that end, [Chase] says his code makes extensive use of the Arduino LowPower library. Essentially the firmware wakes up the ATmega every 15 ms to see if a button has been pressed or the page turned, and updates the LED state accordingly. If no changes have been observed after roughly two minutes, the chip will go into a deep sleep and won’t wake up again until an interrupt has been fired by the yellow button being pressed. He says there are some edge cases where this setup might misbehave, but in general, the book should be able to run for about a year on a coin cell.

[Chase] tells us the biggest problem was finding a reliable way to determine which page the book was currently turned to. In fact, he expects to keep tinkering with this aspect of the design until the books actually ship. The current solution uses five phototransistors attached to the the MCU’s ADC pins, which receive progressively more light as fewer pages are laying on top of them. The first sensor is exposed when the second page of the book is opened, so for example, if three of the sensors are seeing elevated light levels the code would assume the user is on page four.

Opening to the last page exposes all five light sensors.

The books and PCBs are being manufactured separately, since as you might expect, finding a single company that had experience with both proved difficult. [Chase] plans on doing the final assembly and programming of each copy in-house with the help of family members; given how many have already been sold this early in the campaign, we hope he’s got a lot of cousins.

So what do you do with an Arduino-compatible book when Junior gets tired of it? That’s what we’re particularly interested in finding out. [Chase] says he’s open to releasing the firmware as an open source project after the dust settles from the Kickstarter campaign, which would give owners a base to build from should they want to roll their own custom firmware. Obviously the peripheral hardware of the book is fairly limited, but nothing is stopping you from hanging some sensors on the I2C bus or hijacking the unused GPIO pins.

If you end up teaching your copy of Computer Engineering for Babies some new tricks, we’ve love to hear about it.

Continue reading “One Man’s Quest To Build A Baby Book With Brains”

Pandemic Gives Passersby A Window On Cyborg Control

What’s this? Another fabulous creation from [Niklas Roy] and [Kati Hyyppä] that combines art and electronics with our zeitgeist and a lot of recycled bits and bobs? You got it. Their workshop in eastern Berlin used to be a retail shop and has a large display window as a result. This seems perfect for a pair of artists in a pandemic, because they can communicate with the community through the things they display in the window. Most recently, it was this interactive cyborg baby we are choosing to call Cybaby.

You might recognize Cybaby as one of the very hackable Robosapien robots, but with a baby doll head. (It also has a single red eye that really pulls its look together.) In the window, Cybaby comes alive and toddles around against a backdrop that grew and evolved over several weeks this spring and summer. Passersby were able to join the network and control Cybaby from outside with their smartphone to make it walk around, press various buttons that change its environment, and trigger a few sensors here and there. Robosapien has been around for about 20 years, so there is already Arduino code out there that essentially simulates its R/C signals. [Niklas] and [Kati] used a NodeMCU (ESP12-E) to send pulses to the IR input of the robot.

Back on the zany zeitgeist front, there’s a hair salon, a convenience store, and a nightclub for dancing that requires a successful trip through the testing center first (naturally). Oh, and there’s a lab next door to the nightclub that can’t be accessed by Cybaby no matter what it tries or how it cries. Check it out after the break.

There’s a dearth of Robosapien posts for some reason, so here’s what [Niklas] and [Kati] had in their window before the World of Cybaby — a really cool pen plotter that prints out messages sent by people walking by.

Continue reading “Pandemic Gives Passersby A Window On Cyborg Control”