Blisteringly Fast Machine Learning On An Arduino Uno

Even though machine learning AKA ‘deep learning’ / ‘artificial intelligence’ has been around for several decades now, it’s only recently that computing power has become fast enough to do anything useful with the science.

However, to fully understand how a neural network (NN) works, [Dimitris Tassopoulos] has stripped the concept down to pretty much the simplest example possible – a 3 input, 1 output network – and run inference on a number of MCUs, including the humble Arduino Uno. Miraculously, the Uno processed the network in an impressively fast prediction time of 114.4 μsec!

Whilst we did not test the code on an MCU, we just happened to have Jupyter Notebook installed so ran the same code on a Raspberry Pi directly from [Dimitris’s] bitbucket repo.

He explains in the project pages that now that the hype about AI has died down a bit that it’s the right time for engineers to get into the nitty-gritty of the theory and start using some of the ‘tools’ such as Keras, which have now matured into something fairly useful.

In part 2 of the project, we get to see the guts of a more complicated NN with 3-inputs, a hidden layer with 32 nodes and 1-output, which runs on an Uno at a much slower speed of 5600 μsec.

This exploration of ML in the embedded world is NOT ‘high level’ research stuff that tends to be inaccessible and hard to understand. We have covered Machine Learning On Tiny Platforms Like Raspberry Pi And Arduino before, but not with such an easy and thoroughly practical example.

A Doom-esque Port To The ATmega328

Doom holds a special place as one of the biggest games of the 1990s, as well as being one of the foundational blocks of the FPS genre. Long before 3D accelerators hit the market, iD Software’s hit was being played on computers worldwide, and later spread to all manner of other platforms. [David Ruiz] decided to build a cutdown version for everyone’s favourite, the ATmega328.

Due to the limited resources available, it’s not a direct port of Doom. [David] instead took some sprites and map data from the original game, and built a raycasting engine similar to that of Wolfenstein 3D. Despite the limited memory and CPU cycles, the basic game can run at between 8-11 FPS. There are fancy dithering tricks to help improve the sense of depth, a simplified enemy AI, and even a custom text library for generating the UI.

It’s a great example of what can be done with a seemingly underpowered part. We’ve seen similar work before, with Star Fox replicated on the Arduboy. A hacker’s ingenuity truly knows no bounds.

 

Magnetic Attraction Of Microduino MCookie Modules

We’ve seen countless different robot kits promoted for STEM education, every one of which can perform the robotic “Hello World” task of line following. Many were in attendance at Maker Faire Bay Area 2019 toiling in their endless loops. Walking past one such display by Microduino, Inc. our attention was caught by a demonstration of their mCookie modules in action: installing a peripheral module took less than a second with a “click” of magnets finding each other.

Many Arduino projects draw from an ecosystem of Arduino shields. Following that established path, Microduino had offered tiny Arduino-compatible boards and peripherals which connected with pins and headers just like their full-sized counterparts. Unfortunately their tiny size also meant their risk of pin misalignment and corresponding damage would be higher as well. mCookie addresses this challenge by using pogo pins for electrical contacts, and magnets to ensure proper alignment. Now even children with not-quite-there-yet dexterity can assemble these modules, opening up a market to a younger audience.

Spring loaded electric connections are a popular choice for programming jigs, and we’ve seen them combined with magnets for ideas like modular keyboards, and there are also LittleBits for building simple circuits. When packaged with bright colorful LEGO-compatible plastic mounts, we have the foundation of an interesting option for introductory electronics and programming. Microduino’s focus at Maker Faire was promoting their Itty Bitty Buggy, which at $60 USD is a significantly more affordable entry point to intelligent LEGO creations than LEGO’s own $300 USD Mindstorm EV3. It’ll be interesting to see if these nifty mCookie modules will help Microduino differentiate themselves from other LEGO compatible electronic kits following a similar playbook.

Custom Machined Pump Keeps CNC Lubrication Under Control

Rub two pieces of metal against each other hard enough, and it won’t be long before they heat up sufficiently to cause problems. That’s especially true when one is a workpiece and one is a tool edge, and the problems that arise from failing to manage the heat produced by friction can cost you dearly.

The traditional way of dealing with this is by pumping heavy streams of liquid coolant at the workpiece, but while that works, it creates problems of its own. That’s where minimum quantity lubrication comes in. MQL uses a fine mist of lubricant atomized in a stream of compressed air, which saves on lube and keeps swarf cleaner for easier recycling. The gear needed for MQL can be pricey though, so [brockard] decided to add homebrew MQL to his CNC router, with great results.

The video below shows the whole process, from raw metal to finished system – skip ahead to about 12 minutes if you just want to see final testing, but be warned that you’ll be missing some high-quality machining. The finished pump is a double-piston design, with each side driven by a cam rotated by a servo. An Arduino controls the speed of the motor based on the current settings; the pump is turned on and off through G-code control of a relay.

The lubricant stream is barely visible in the video, as opposed to the sloshing mess of traditional flood coolants, and seems much more suitable for a hobbyist-grade CNC setup. Need to build a CNC router before you build this? You can do much worse than this one.

Continue reading “Custom Machined Pump Keeps CNC Lubrication Under Control”

Trick Shot Bot Flings Balls Into Wine Glass Every Time

We’ve heard of beer pong, but we’re not sure we’ve heard of wine pong. And certainly never wine pong automated with a ping pong ball throwing robot like this one.

There’s not a huge amount of detail available in the video below, and no build log per se. But [Electron Dust] has a few shots in the video that explain what’s going on, as well as a brief description in a reddit thread about the device. The idea is to spin a ball up to a steady speed and release it the same way every time. The rig itself is made of wood and spun by plain brushed DC motors – [Electron Dust] explains that he chose them over PWM servos to simplify things and eliminate uncertainty in the release point. The ball is retained by a pair of arms, each controlled by a pair of hobby servos. An Arduino spins along with everything else and counts 50 revolutions before triggering the servos to retract and release the ball. A glass positioned at the landing spot captures the ball perfectly once everything is dialed in.

Here’s hoping that build details end up on his blog soon, as they did for this audio-feedback juggling machine. And while we certainly like this project, it might be cool if it could aim the ball into the glass. Or it could always reposition the target on the fly.

Continue reading “Trick Shot Bot Flings Balls Into Wine Glass Every Time”

Plasma Globe Reveals Your Next Clue

If you like solving puzzles out in the real world, you’ve probably been to an escape room before, or are at least familiar with its concept of getting (voluntarily) locked inside a place and searching for clues that will eventually lead to a key or door lock combination that gets you out again. And while there are plenty of analog options available to implement this, the chances are you will come across more and more electronics-infused puzzles nowadays, especially if it fits the escape room’s theme itself. [Alastair Aitchison] likes to create such puzzles and recently discovered how he can utilize a USB powered plasma globe as a momentary switch in one of his installations.

The concept is pretty straightforward, [Alastair] noticed the plasma globe will draw significantly more current when it’s being touched compared to its idle state, which he measures using an INA219 current shunt connected to an Arduino. As a demo setup in his video, he uses two globes that will trigger a linear actuator when touched at the same time, making it an ideal multiplayer installation. Whether the amount of fingers, their position on the globe, or movement make enough of a reliable difference in the current consumption to implement a more-dimensional switch is unfortunately not clear, but definitely something worth experimenting with.

In case you’re planning to build your own escape room and are going for the Mad Scientist Laboratory theme, you’ll obviously need at least one of those plasma globes sparking in a corner anyway, so this will definitely come in handy — maybe even accompanied by something slightly larger? And for all other themes, you can always resort to an RFID-based solution instead.

Continue reading “Plasma Globe Reveals Your Next Clue”

Enforce Speed Limits With A Rusty Bike

They say you can’t manage what you can’t measure, and that certainly held true in the case of this bicycle that was used to measure the speed of cars in one Belgian neighborhood. If we understand the translation from Dutch correctly, the police were not enforcing the speed limit despite complaints. As a solution, the local citizenry built a bicycle with a radar gun that collected data which was then used to convince the police to enforce the speed limit on this road.

The bike isn’t the functional part of this build, as it doesn’t seem to have been intended to move. Rather, it was chosen because it is inconspicuous (read: rusty and not valuable) and simply housed the radar unit and electronics in a rear luggage case. The radar was specially calibrated to have less than 1% error, and ran on a deep cycle lead acid battery for around eight days. Fitting it with an Arduino-compatible shield and running some software (provided on the github page) is enough to get it up and running.

This is an impressive feat of citizen activism to provide the local police with accurate data to change a problem in a neighborhood. Not only was the technology put to good use, but the social engineering involved with hiding expensive electronics in plain sight with a rusty bicycle is a step beyond what we might have thought of as well.

Thanks to [Jo_elektro] for the tip!