Elegant Drum Machine From Teensy

Playing the drums is pretty hard, especially for the uncoordinated. Doing four things at the same time, all while keeping an even tempo, isn’t reasonable for most of us. Rather than hiring a drummer for your band who is well versed in this art, though, you might opt instead to outsource this job to a machine instead. It’s cheaper and also less likely to result in spontaneous combustion.

This drum machine is actually a MIDI Euclidean sequencer. Euclidean rhythms are interesting in their own regard, but the basics are that a common denominator between two beats is found in order to automatically generate complicated beats. This particular unit is running on a Teensy 3.5 and consists of four RGB rotary encoders, an SSD1306 LCD, four momentary buttons, and four 16 LED Neopixel rings. Setting each of the dials increases the number of beats for that particular channel, and it can be configured for an almost limitless combination of beats and patterns.

To really get a feel of what’s going on here, it’s worth it to check out the video after the break. MIDI is also a fascinating standard, beyond the fact that it’s one of the few remaining standards created in the 80s that still enjoys active use, it can also be used to build all kinds of interesting instruments like one that whacks wine glasses with mallets or custom synthesizers.

Thanks to [baldpower] for the tip!

Continue reading “Elegant Drum Machine From Teensy”

Simple Quadcopter Testbed Clears The Air For Easy Algorithm Development

We don’t have to tell you that drones are all the rage. But while new commercial models are being released all the time, and new parts get released for the makers, the basic technology used in the hardware hasn’t changed in the last few years. Sure, we’ve added more sensors, increased computing power, and improved the efficiency, but the key developments come in the software: you only have to look at the latest models on the market, or the frequency of Git commits to Betaflight, Butterflight, Cleanflight, etc.

With this in mind, for a Hackaday prize entry [int-smart] is working on a quadcopter testbed for developing algorithms, specifically localization and mapping. The aim of the project is to eventually make it as easy as possible to get off the ground and start writing code, as well as to integrate mapping algorithms with Ardupilot through ROS.

The initial idea was to use a Beaglebone Blue and some cheap hobby hardware which is fairly standard for a drone of this size: 1250 kv motors and SimonK ESCs, mounted on an f450 flame wheel style frame. However, it looks like an off-the-shelf solution might be even simpler if it can be made to work with ROS. A Scanse Sweep LIDAR sensor provides point cloud data, which is then munched with some Iterative Closest Point (ICP) processing. If you like math then it’s definitely worth reading the project logs, as some of the algorithms are explained there.

It might be fun to add FPV to this system to see how the mapping algorithms are performing from the perspective of the drone. And just because it’s awesome. FPV is also a fertile area for hacking: we particularly love this FPV tracker which rotates itself to get the best signal, and this 3D FPV setup using two cameras.

Traction Control Gets More Power To The Road For Tot-Sized Lamborghini

We’ve all heard the complaints from oldsters: “Cars used to be so simple that all you needed to fix them was a couple of wrenches and a rag. Now, you need a computer science degree to even pop the hood!” It’s true to some extent, but such complexity is the cost of progress in the name of safety and efficiency. And now it seems this complexity is coming way down-market, with this traction control system for a Power Wheels Lamborghini.

While not exactly an entry-level model from the Power Wheels line of toddler transportation, the pint-sized Lamborghini Aventador [Jason] bought for his son had a few issues. Straight from the factory, its 6-volt drivetrain was a little anemic, with little of the neck-snapping acceleration characteristic of an electric drive. [Jason] opted to replace the existing 6-volt drive with a 12-volt motor and battery while keeping the original 6-volt controller in place. The resulting rat’s nest of relays was unsightly but sufficient to see a four-fold increase in top speed.

With all that raw power sent to only one wheel, though, the Lambo was prone to spinouts. [Jason] countered this with a traction control system using optical encoders on each of the rear wheels. A NodeMCU senses speed differences between the wheels and controls the motor through an H-bridge to limit slipping. As a bonus, a smartphone app can connect to the Node for in-flight telemetry. Check out the build and the car being put through its paces by the young [Mr. Steal Your Girl] in the video below.

The Power Wheels platform is infinitely hackable – from repairs to restorations to enhancements of questionable sanity, it seems like there’s nothing you can’t do with these little electric vehicles.

Continue reading “Traction Control Gets More Power To The Road For Tot-Sized Lamborghini”

Peer Review In The Age Of Viral Video

Recently, a YouTube video has been making the rounds online which shows a rather astounding comparison between two printed models of the US Capitol. Starting with the line “3-D PRINTERS CAN NOW PRINT TWICE AS FAST”, the video shows that one print took four hours to complete, and the other finished in just two hours by virtue of vibration reducing algorithms developed at the University of Michigan. The excitement around this video is understandable; one of the biggest limitations of current 3D printer technology is how long it takes to produce a model of acceptable quality, and if improvements to the software that drives these machines could cut total print time in half, the ramifications would be immense.

In only a few weeks the video racked up tens of thousands of views, and glowing articles popped up with headlines such as: “How to cut 3D print times in half by the University of Michigan” and “University of Michigan professor doubles 3D printing speeds using vibration-mitigating algorithm“. Predictably, our tips line lit up with 3D printer owners who wanted to hear more about the incredible research that promised to double their print speed with nothing more than a firmware update.

The only problem is, the video shows nothing of the sort. What’s more, when pushed for details, the creators of the video are now claiming the same thing.

Continue reading “Peer Review In The Age Of Viral Video”

Chess Robot’s Got The Moves

[RoboAvatar]’s Chess Robot consists of a gantry-mounted arm that picks up chess pieces and places them in their new location, as directed by the software. The game begins when the human, playing white, makes a move. When a play has been made, the human player presses a button to let the robot to take its turn. You can see it in action in the videos we’ve posted below the break.

Running the robot is an Arduino UNO with a MUX shield as well as a pair of MCP23017 I/O expander chips — a total of 93 pins available! Thanks to all those pins, the Arduino is able to listen to 64 reed switches, one for every square.

The robot detects the human’s move by listening to its reed switches and identifying when there is a change. The gantry consists of X and Y tracks made out of PVC slabs, with half-inch lead screws turned by NEMA-23s and powered by ST-6600 stepper drivers.

Unlike some chess robots that rely on pre-existing software, this one features a custom minimax chess algorithm that [RoboAvatar] coded himself. It consists of Python scripts run on a computer, which interacts with the Arduino via a serial connection. In the second video, he explains how his algorithm works. You can also download the Arduino and Python files from [RoboAvatar]’s GitHub repository.

You’d be surprised how many chess-playing robots we’ve published, like the ChessM8 robot and this voice-controlled chess robot.

Continue reading “Chess Robot’s Got The Moves”

Ask Hackaday: Computing Square Roots On FPGA?

Hackaday reader [nats.fr] wrote in with some code from a project that resizes a video stream on the fly using an FPGA. Doing this right means undoing whatever gamma correction has been applied to the original stream, resizing, and then re-applying the gamma. Making life simpler, [nats.fr] settled on a gamma of two, which means taking a bunch of square roots, which isn’t fast on an FPGA.

[nats]’s algorithm is pretty neat: it uses a first-stage lookup to figure out in which broad range the value lies, and then one step of Hero’s algorithm to refine from there. (We think this is equivalent to saying he does a piecewise linear interpolation, but we’re not 100% sure.) Anyway, it works decently.

Of course, when you start looking into the abyss that is special function calculation, you risk falling in. Wikipedia lists more methods of calculating square roots than we have fingers. One of them, CORDIC, avoids even using multiplication by resorting to clever bitshifts and a lookup table. Our go-to in these type of situations, Chebyshev polynomial approximation, didn’t even make the cut. (Although we suspect it would be a contender in the gamma=1.8 or gamma=2.2 cases, especially if combined with range-reduction in a first stage like [nats.fr] does.)

So what’s the best/fastest approximation for sqrt(x) for 16-bit integers on an FPGA? [nats.fr] is using a Spartan 6, so you can use a multiplier, but division is probably best avoided. What about arbitrary, possibly fractional, roots?

A Spreadsheet For Guesswork

Ever wish you could guess more precisely? Or maybe just make your guesses look confusingly legitimate? Guesstimate could help.

It uses Monte Carlo simulations to add some legitimacy to the ranges given to it. For example, if you say the cost of lumber for your next project could be between 2 and 8 dollars a piece, you don’t typically mean that it’s equally likely to be any of those numbers. Most people mean that the boards are most likely to be around 3-5 dollars and everything lower or higher is less probable. Using different shaped distributions, Guesstimate can help include this discrepancy of thought into your pseudo-calculations.

It’s a neat bit of code with a nice interface. There is a commercial side to the project for those who want to collaborate openly or pay someone to host it privately. It has a few neat example models for those interested.

Does anyone use anything like this in their daily lives? Is there another similar project out there? This kind of thing is pretty cool!