Press button, wait, press button again, repeat. There must be a better way! If that kind of interaction drives you nuts, you’ll probably appreciate [Tommy]’s buttonpusher, which has only one job: automate away some of the more boring parts of Nintendo’s Animal Crossing. On one hand the job the device does is very simple: press a button on the Nintendo joy-con in a preprogrammed pattern. There’s no feedback loop, it just dumbly presses and waits. But there are still quite a few interesting bits to this build.
For one thing, [Tommy] discovered that the little 9g RC servo can reliably exert enough force to press the button on the joy-con with the right adapter. He had assumed the servo would be too weak to do the job without a greater mechanical advantage, but a simple hammer-style actuator that attaches to the servo horn easily does the job. Well, it does as long as the servo and joy-con are held rigidly; his first version allowed a little too much wiggle in how well the parts were held, and button presses didn’t quite register. With a 3D-printed fixture to rigidly mount both the servo and the joy-con, things were fine.
In the process of making buttonpusher, which uses CircuitPython, [Tommy] created a tool to automate away another pesky task he was running into: circuitpython_tools was created to automatically watch for code changes, convert the .py files into (smaller) MicroPython bytecode .mpy files, then automatically deploy to the board. This saved [Tommy] a lot of time and hassle during development, but it was only necessary because he quickly ran out of memory on his M0 Metro Express board, and couldn’t fit his code in any other way.
Still, it’s a good example of how one project can sometimes spawn others, and lead to all kinds of lessons learned. You can see buttonpusher automate the crafting process in Animal Crossing in the video, embedded below.
Light painting: there’s something that never gets old about waving lights around in a long exposure photo. Whilst most light paintings are single shots, some artists painstakingly create frame-by-frame animations. This is pretty hard to do when moving a light around by hand: it’s mostly guesswork, as it’s difficult to see the results of your efforts until after the photo has been taken. But what if you could make the patterns really precise? What if you could model them in 3D?
[Josh Sheldon] has done just that, by creating a process which allows animations formed in Blender to be traced out in 3D as light paintings. An animation is created in Blender then each frame is automatically exported and traced out by an RGB LED on a 3D gantry. This project is the culmination of a lot of software, electronic and mechanical work, all coming together under tight tolerances, and [Josh]’s skill really shines.
The first step was to export the animations out of Blender. Thanks to its open source nature, Python Blender add-ons were written to create light paths and convert them into an efficient sequence that could be executed by the hardware. To accommodate smooth sliding camera movements during the animation, a motion controller add-on was also written.
The gantry which carried the main LED was hand-made. We’d have been tempted to buy a 3D printer and hack it for this purpose, but [Josh] did a fantastic job on the mechanical build, gaining a solidly constructed gantry with a large range. The driver electronics were also slickly executed, with custom rack-mount units created to integrate with the DragonFrame controller used for the animation.
Every self-respecting hacker has an automation hack somewhere in his/her bag of tricks. There are a lot of modern-day technologies that facilitate the functionality like GPS, scripting apps, and even IFTTT. In an interesting hack, [Nick Lee] has combined iBeacons and a reverse engineered Starbucks API to create an automated morning routine.
By creating a mobile app that scans for iBeacons, [Nick Lee] was able to reduce the effort made every morning while heading to his office. When the app encounters a relevant beacon, a NodeJS app sitting in the cloud is triggered. This consequently leads to desired actions like ordering an Uber ride and placing an order for an iced latte.
[Nick Lee] shares the code for the Starbucks application on GitHub for anyone who wants to order their favorite cup of joe automatically. This project can be easily expanded to work with GPS or even RFID tags and if you feel like adding IoT to a coffee machine, you could automate all of your beverage requirements in one go.