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.

Arduino And Pi Share Boardspace

A Raspberry Pi Zero (W) and Arduino are very different animals, the prior has processing power and connectivity while the latter has some analog to digital converters (ADCs) and nearly real-time reactions. You can connect them to one another with a USB cable and for many projects that will happily wed the two. Beyond that, we can interface this odd couple entirely through serial, SPI, I2C, and logic-level signaling. How? Through a device by [cburgess] that is being called an Arduino shield that supports a Pi0 (W). Maybe it is a cape which interfaces with Arduino. The distinction may be moot since each board has a familiar footprint and both of them are found here.

Depending on how they are set up and programmed, one can take control over the other, or they could happily do their own thing and just exchange a little information. This board is like a marriage counselor between a Raspberry Pi and an Arduino. It provides the level-shifting so they don’t blow each other up and libraries so they can speak nicely to one another. If you want to dig a bit deeper into this one, design files and code examples are on available.

Perhaps we’ll report on this board at the heart of a pinball machine retrofit, a vintage vending machine restoration, or maybe a working prop replica from the retro bar in Back to the Future II.

Arduino Gets A Command Line Interface

When using an Arduino, at least once you’ve made it past blinking LEDs, you might start making use of the serial connection to send and receive information from the microcontroller. Communicating with the board while it’s interacting with its environment is a crucial way to get information in real-time. Usually, that’s as far as it goes, but [Pieter] wanted to take it a step farther than that with his command line interpreter (CLI) for the Arduino.

The CLI allows the user to run Unix-like commands directly on the Arduino. This means control of GPIO and the rest of the features of the microcontroller via command line. The CLI communicates between the microcontroller and the ANSI/VT100 terminal emulator of your choosing on your computer, enabling a wealth of new methods of interacting with an Arduino.

The CLI requires a hex file to be loaded onto the Arduino that you can find at a separate site, also maintained by [Pieter]. Once that’s running, you can get all of that sweet command line goodness out of your Arduino. [Pieter] also has some examples on his project page, as well as the complete how-to to get this all set up and running. There’s a lot going on in the command line world, in Linux as well as windows. So there’s plenty to explore there as well.

Clock Plays A Game Of Pong With Itself To Pass The Time

Would you play a game of Pong where each set lasts exactly one minute and the right player is guaranteed to win 60 times more than the left player? Of course not, but if you were designing a clock that displays the time using a Pong motif, then perhaps it would make sense.

There are some neat design tips in [oliverb]’s Pong Clock that are worth taking a look at. Foremost is the case, which is a retasked jewelry box with a glass lid, procured on the cheap from eBay. It’s a good size for a clock meant to be seen from across the room, and already finished to fit into modern decor. The case holds all the goodies, from the 24×16 green LED matrix display to the Uno that runs the show, as well as an RTC module, a sound chip, a temperature sensor, and a PIR module to turn the display off when the room is unoccupied. To prevent disrupting the sleek lines of the case, all the controls are mounted in a remote panel, itself a clean and modern-looking device thanks to the chrome-plated duplex outlet cover used to house it. The clock has several display modes, from normal time and temperature to a word clock, as well as the Pong mode, where the machine plays itself and the score shows the time. It’s fascinating to watch, and we like everything about it, although we think the tick-tock would drive us nuts pretty quickly.

We recently covered the life and times of [Ted Dabney], one of Pong’s fathers and co-founder of Atari. We tend to think he’d like the design of this clock, both as a nod to his game and for its simple but functional design.

Continue reading “Clock Plays A Game Of Pong With Itself To Pass The Time”

Tracktorino Shields You From Poor Interfaces

On-screen controls in a digital audio workstation expand the power of a DJ or musician, but they are not intuitive for everyone. The tactility of buttons, knobs, sliders and real-world controls feels nothing like using a mouse, trackpad, or even a touchscreen. Unfortunately, devices meant to put control into a DJs hands can be unavailable due to location or cost. [Gustavo Silveira] took charge of the situation so he could help other DJs and musicians take control of their workstations with a customized MIDI interface for Traktor DJ software.

MIDI is a widely used serial protocol which has evolved from a DIN connector to USB, and now it is also wireless. This means that the Traktorino is not locked to Traktor despite the namesake. On the Hackaday.io page, there’s even a list of other workstations it will work with, but since many workstations, all the good ones anyway, accept MIDI hardware like this, the real list is a lot longer.

The custom circuit board is actually a shield. Using an Arduino UNO, the current poster child of the Arduino world, opens up the accessibility for many people who don’t know specialized software. A vector drawing for a lasercut enclosure is also included. This means that even the labeling on the buttons are not locked into English language.

Here’s another project which combined laser cutting and MIDI to make some very clever buttons or turn your DIN MIDI connector into USB.

Continue reading “Tracktorino Shields You From Poor Interfaces”

No, Cat, This Is Not The Litter Box

Hackaday.io user [peterquinn] has encountered a problem with his recently unruly cat peeing under the dining table. Recognizing that the household cat’s natural enemy is the spray bottle, he built an automatic cat sprayer to deter her antics.

The build is clear-cut: an Arduino Uno clone for a brain, an MG995 servo, PIR sensor, spray bottle, and assorted electronics components. [peterquinn] attached the servo to the spray bottle with a hose clamp — ensuring that the zero position is pointing at the trigger — and running a piece of cabling around the trigger that the servo will tug on. Adding a capacitor proved necessary after frying the first Uno clone, as the servo powering up would cause the Uno to reset.

The code is set up to trigger the servo — spraying the cat twice — once the PIR detects the cat for more than ten seconds. After toying with a few options, [peterquinn] is using a 9V, 2A power supply that works just fine. For now, he hopes the auto-sprayer should do the trick. If it somehow doesn’t work, [peterquinn] has mused that a drastic upgrade to the vacuum may be necessary.

Vintage Sewing Machine To Computerized Embroidery Machine

It is February of 2018. Do you remember what you were doing in December of 2012? If you’re [juppiter], you were starting your CNC Embroidery Machine which would not be completed for more than half of a decade. Results speak for themselves, but this may be the last time we see a first-generation Raspberry Pi without calling it retro.

The heart of the build is a vintage Borletti sewing machine, and if you like machinery porn, you’re going to enjoy the video after the break. The brains of the machine are an Arduino UNO filled with GRBL goodness and the Pi which is running CherryPy. For muscles, there are three Postep25 stepper drivers and corresponding NEMA 17 stepper motors.

The first two axes are for an X-Y table responsible for moving the fabric through the machine. The third axis is the flywheel. The rigidity of the fabric frame comes from its brass construction which may have been soldered at the kitchen table and supervised by a big orange cat. A rigid frame is the first ingredient in reliable results, but belt tension can’t be understated. His belt tensioning trick may not be new to you, but it was new to some of us. Italian translation may be necessary.

The skills brought together for this build were vast. There was structural soldering, part machining, a microcontroller, and motion control. The first time we heard from [juppiter] was December 2012, and it was the result of a Portable CNC Mill which likely had some influence on this creation. Between then, he also shared his quarter-gobbling arcade cabinet with us.

Continue reading “Vintage Sewing Machine To Computerized Embroidery Machine”