Posts with «arduino» label

Massive mechanical music box plays ever-changing melodies

When you think of a music box, chances are that tiny trinket sitting atop your dresser or nightstand comes to mind. Well, that’s not the case with Niklas Roy. The artist has developed what he calls the Music Construction Machine–a super-sized music box that uses a giant hand crank to move various mechanisms inside, producing melodies and rhythmic patterns with an electric guitar, a keyboard, and a drum set.

The installation is housed inside a large transparent glass case, which enables visitors at the Goethe-Institut Pop Up Pavillion in Wroclaw, Poland to observe its inner mechanical workings as it performs. Although the hardware–consisting of ropes, pulleys, springs, levers, and weights—uses an algorithm to determine what’s being played, visitors still have a strong influence on the interpretation and expression of the sounds as they can decide how fast they crank and where they interrupt the flow of music.

Unlike more conventional music boxes that repeat the same melody over and over, this machine has been designed to constantly create ever-changing beats and tones. In an interview with Deutsche Welle, Roy says that he was going for a sound that was somewhere between a “drunk punk band and an avant-garde trio.”

Although the mechanisms follow a simple inherent logic, which determines the sequence of tones that will be played, the overall behavior of the system is so complex that the sequence appears to be unpredictable for a listener. The result is a melody which is sometimes harmonic, sometimes not, but it definitely has a lot of variation.

In order to refrain from annoying the neighbors during the night, Roy is also using an Arduino Uno with a RTC to control the volume on the mixer via a servo.

Pretty cool, right? For those not in Wroclaw, you can see it in action below and read more about how it works here.

Listen to a computer hardware orchestra rock out to Nirvana

What do you get when you combine 64 floppy drives, eight hard disks, and two scanners? An incredible computer hardware orchestra that can rock out like Kurt Cobain. Created by Pawel Zadrozniak, the Floppotron is not only capable of covering ‘90s hits like Nirvana’s “Smells Like Teen Spirt,” but can play other tunes ranging from Darth Vader’s Imperial March to the theme song of the TV series “Hawaii Five-O.”

As for how the old-school tech synthesizes such tunes, Zadrozniak explains:

Every device with an electric motor is able to generate a sound. Scanners and floppy drives use stepper motors to move the head with sensors which scans the image or performs read/write operations on a magnetic disk. The sound generated by a motor depends on driving speed. The higher the frequency, the greater the pitch. Hard disks use a magnet and a coil to tilt the head. When voltage is supplied for long enough, the head speeds up and hits the bound making the “drum hit” sound. The disk head coil can also be used as a speaker to play tones or even music, but… that would be too easy and too obvious.

Every column of eight floppy drives is connected to one 8-channel controller built on ATmega16 microcontroller. One controller acts as one voice with envelope simulation – the higher the volume, the more drives are playing. This allows to make ADSR-like shape and simulate a musical instrument, like a piano (exponential decay) or string instrument (sine, “vibrato”). The boards which were made a few years ago, were designed as a standalone “players” with optional USB-to-UART bridge and was not intended to be chained. My goal was to re-use old stuff and get the job done as fast as possible, so I used the on-board ISP (which in fact is a SPI interface) connector to link 8 drivers in a SPI chain. Long SPI chain with unidirectional communication is not an example good and reliable design, but it did not require any hardware modification and took a minute to build a controller network, so let’s call it… good enough for this kind of project.

Scanner and disk head controllers share the same base with floppy controllers, but have a different “instrument interface.” For driving the coils, I used two push-pull outputs (H-bridge) built with discrete SMD MOSFETs. Scanner head controllers were built using of-the-shelf boards – an Arduino Uno (firmware also builds for ATmega328) and L298 breakout to save time needed to draw and etch the boards. PC interface (another Arduino board) receives the data over UART (USB-UART), buffers the messages and keeps the timings while passing packets to “musical instruments” over SPI interface, so a Windows hiccup will not affect the playback. It can also be driven by anything else like Raspberry Pi, Android smartphone (with USB-UART or UART-over-Bluetooth adapter) or another microcontroller.

You can read all about the Floppotron here, or check out its latest jam session below!

This handheld gadget will scan and identify fonts

Fiona O’Leary, a design student at the Royal College of Art, has developed a handheld device that enables her to capture any font and color she sees in the real world, and magically imports them into Adobe’s InDesign. The gadget, called Spector, was born out of her own frustrations with designing for print on-screen and never actually knowing how the fonts and colors would appear in their physical form.

The tool, which was prototyped using an Arduino Pro Mini, works essentially like a “physical eyedropper” or a “Shazam for fonts.” Simply place Spector on a certain typeface and watch it change to that exact typeface right on your computer screen, all with the press of a button.

A built-in camera captures the media you’re looking at–whether that’s a billboard, a subway map, or text in a book–and an algorithm converts the image into data that detects the shape and color in CMYK/RGB values. That data is then sent to a font and color database, where the sample is further identified.

Additionally, Spector can store up to 20 fonts and colors so you can collect your favorite typography on the go and upload it later. The device is currently capable of recognizing seven different typefaces and IDs type size, kerning, and leading, although O’Leary says she is working to integrate it with a much larger database.

Creating an automatic targeting frisbee launcher with Arduino

A few years ago, Jordan Réjaud and a team of his fellow Carnegie Mellon classmates built a robotic frisbee launcher. Based on an Arduino, the machine used a camera to detect colored targets, and a powerful DC motor to induce linear and rotational motion of the discs before propelling them at the selected bullseye several feet away.

A servo motor was tasked with pushing the frisbees out of a hopper made from a tin coffee can and towards the DC motor, while a planetary gear and linear actuator positioned the launcher horizontally and vertically, respectively.

You can see the entire system in action below!

Hackaday Prize Entry: Open Source FFT Spectrum Analyzer

Every machine has its own way of communicating with its operator. Some send status emails, some illuminate, but most of them vibrate and make noise. If it hums happily, that’s usually a good sign, but if it complains loudly, maintenance is overdue. [Ariel Quezada] wants to make sense of machine vibrations and draw conclusions about their overall mechanical condition from them. With his project, a 3-axis Open Source FFT Spectrum Analyzer he is not only entering the Hackaday Prize 2016 but also the highly contested field of acoustic defect recognition.

For the hardware side of the spectrum analyzer, [Ariel] equipped an Arduino Nano with an ADXL335 accelerometer, which is able to pick up vibrations within a frequency range of 0 to 1600 Hz on the X and Y axis. A film container, equipped with a strong magnet for easy installation, serves as an enclosure for the sensor. The firmware [Ariel] wrote is an efficient piece of code that samples the analog signals from the accelerometer in a free running loop at about 5000 Hz. It streams the digitized waveforms to a host computer over the serial port, where they are captured and stored by a Python script for further processing.

From there, another Python script filters the captured waveform, applies a window function, calculates the Fourier transform and plots the spectrum into a graph. With the analyzer up and running, [Ariel] went on testing the device on a large bearing of an arbitrary rotating machine he had access to. A series of tests that involved adding eccentric weights to the rotating shaft shows that the analyzer already makes it possible to discriminate between different grades of imbalance.

The HackadayPrize2016 is Sponsored by:

Filed under: The Hackaday Prize

Building a water collection vessel with an Arduino Mega

As part of an electrical and electronic engineering course at Singapore Polytechnic, a group of students were challenged to build an aquatic vehicle that could collect samples from one and two meters underwater. After three months of hard work, the Imp Bot was brought to life!

Imp Bot is controlled by a mobile application made using the MIT App Inventor. Communication is achieved via a Bluetooth module hooked up to an Arduino Mega, while an onboard GPS sensor is used to log sampling locations in the app. Power is provided by a LiPo battery, which supplies high current to the two DC motors responsible for moving the 11-pound vessel around.

The sampler is actually a simplified Van Dorn Water Sampler, an ingenious method of water collection based upon elasticity and a quick-release mechanism. The main body of the vessel was initially made using laser-cut acrylic pieces assembled with PVC pipes, but the structure was too weak so they decided to use aluminium L-brackets instead.

Want to learn more? Check out the team’s video below, as well as read the story on one of the student’s blogs here. The code is also available on GitHub.

A Pi Robot Without a Hat

Daughter boards for microcontroller systems, whether they are shields, hats, feathers, capes, or whatever, are a convenient way to add sensors and controllers. Well, most of the time they are until challenges arise trying to stack multiple boards. Then you find the board you want to be mid-stack doesn’t have stackable headers, the top LCD board blocks the RF from a lower board, and extra headers are needed to provide clearance for the cabling to the servos, motors, and inputs. Then you find some boards try to use the pins for different purposes. Software gets into the act when support libraries want to use the same timer or other resources for different purposes. It can become a mess.

The alternative is to unstack the stack and use external boards. I took this approach in 2013 for a robotics competition. The computer on the robots was an ITX system which precluded using daughter boards, and USB ports were my interface of choice. I used a servo controller and two motor controllers from Pololu. They are still available and I’m using them on a rebuild, this time using the Raspberry Pi as the brain. USB isn’t the only option, though. A quick search found boards at Adafruit, Robotshop, and Sparkfun that use I2C.

This approach has challenges and benefits. A stack of daughter boards makes a neat package, where external boards makes a tangle of wires. Random sizes can make mounting a challenge. Providing power can also be a hassle because of the random placement of power pins. You can’t rely on USB power, especially from a Raspberry Pi whose USB is power limited.

On the other hand, external boards can offload processing from your main processor. Once a command is sent, these boards handle all the details including refresh requirements. They are likely to provide capabilities beyond the microcontroller software libraries since their processors are dedicated to the task.

I am using an 18-channel board from the Pololu Maestro Servo Controller family of boards that control from 6 to 24 servos using a single board. You might find the Adafruit 16 channel I2C board a useful alternative. For motor control I turned to the Pololu Simple Motor Controller family using one that will handle 18 amps. Others will handle from 7 to 25 amps. Or consider the Sparkfun Serial Controlled Motor Driver. Another source for USB controllers is Phidgets. I experimented with one of their spatial devices for the original robot. I should have used it to measure the tilt since one of my robots rolled over on a hill. Ooops!

Servo Control

The board currently installed on my robot is the Mini Maestro 18. The Maestro provides control over the servo speed, acceleration and movement limits. A home position can be set for startup or when errors occur. You can even do scripting or set movement sequences to play on command.

On the hardware side, the Maestro also allows channels to be used for digital input or output, and some channels for analog input. On some there is one channel for pulse width modulation output. An onboard regulator converts the servo power input to the voltage needed by the processor, simplifying part of the power distribution challenge.

My previous robot used the Maestro to control pan and tilt servos for camera positioning, a servo to lift samples from the ground, and a safety LED. Two analog inputs from current sensors on the motors helped avoid burnout during stalls, and four inputs from a simple RF key fob transmitter provided control. The latter came in handy for testing. I’d program a test sequence such as starting a 360° camera scan for landmarks or drive onto the starting platform and drop the sample. A button press on the key fob would initiate the activity. One button was always set up as an emergency halt to stop a rampaging robot. The rebuild is following this pattern with some additions.

Motor Controller

The two Simple Motor Controllers (SMC) each handled the three motors on either side of the Wild Thumper chassis. The SMC does more than just control the motor speed and direction. You can set acceleration, braking, and whether forward and reverse operate at the same or different speeds. The board monitors a number of error conditions for safety. These stop the motor and prohibit movement until cleared. Such blocking errors include lost communications, low input voltage, or drivers overheating.

An additional capability I found extremely helpful is the ability to read signals from a radio control (RC) receiver. These signals can be used to control the motor and, with some cross wiring between two controllers, provide differential drive control. This is useful for driving the robot to a new location using an RC transmitter. I didn’t use the RC inputs directly. Instead I read the RC inputs and issued the control commands from my program. This let me monitor the speed in my program logs for correlation with the other logged data. I also used an input to command the robot into autonomous or RC control operations. There are also two analog inputs that can be used to directly control the motor and can be read through commands.

Serial Communications

USB ports were my choice for communications but there is also a TTL level serial port with the standard RX and TX pins. This port can be used by the Raspberry Pi, Arduino, or any other microcontroller that has a TTL serial port.

The Maestro boards using USB appear as two serial ports. One is the command port that communications with the Maestro processor. The other is a TTL port. This port can serve as simply a USB to TTL serial port converter to allow communications with other boards, even from another vendor. Another use of the TTL port is to daisy chain Pololu boards. I could attach the SMC boards in this manner and save two USB ports for other devices. These boards support this by having a TXIN pin that ANDs the TX signal from the connected board with the TX on the board.

Both of these controllers support a few different communications protocols. I use the one Pololu created and is available on some of their other products. The command details are different between the boards, but the basic command structure is the same. They call it their binary protocol, and the basic format follows:

0xAA, <device address>, <command>, <optional data>, <crc>

All the fields are single bytes except for the data field which is frequently 2 bytes to transmit 16-bit data. The returned data is only one or two bytes with no additional formatting. Note they provide for detecting errors in the message by using a CRC (cyclical redundancy check). This is probably not critical over USB but a TTL line might receive noise from motors, servos, and other devices. A CRC error sets a bit in the error register that can be read if the command is critical.

I wrote my own code, C++ of course, for the PC and converted it just now to the Raspberry Pi. The main change is the different serial port code needed by Linux and Windows. Pololu now provides Arduino source for the protocol making it easy to use these boards with that family of controller boards.

Wrap Up

The chassis, Pi, and these boards are now installed on the Wild Thumper chassis along with a pan and tilt controlled by servos. A safety LED is on when power is applied and flashes when the robot is actively controlling the system. A LiPo battery powers all but the Pi because I need to configure a battery eliminator circuit to provide five volts. I’m powering it temporarily using a USB battery pack.

A test program, cross compiled from my desktop, moves the robot forward, pivots left than right, and then reverses. The pan / tilt moves and the LED flashes. I originally used a web camera for vision processing but will switch to the Pi camera since it is better. The Neato lidar discussed in a previous article will soon find a place onboard, along with an accelerometer to detect possible rollovers.

I’m sure I could have done this using Pi daughter boards despite the challenges I mentioned earlier. There are trade-offs to both approaches that need to be considered when working on a project. But there is one final advantage to the external boards: they have a lot of twinkly LEDs.

Product photos from Pololu.


Filed under: Arduino Hacks, Raspberry Pi, robots hacks

The World’s Largest Maker Survey Results Are Out

Over the last few weeks, our friends at Hackster.io conducted the world’s largest Maker survey–and now they’ve made the results accessible to everyone. With the help of 25 of today’s top tech companies, including Arduino, no less than 3,139 self-identified Makers and IoT developers spanning across 104 countries submitted their responses.

Gain insight into the community’s favorite tools, boards, programing languages, operating systems, cloud platforms, and more by downloading your copy of the report. In the meantime, check out their nifty infographic below!

Get your DDR on with an Arduino dance pad

Alex of the YouTube channel “Super Make Something” is a huge fan of Dance Dance Revolution (DDR), and still has to play the game whenever he steps foot into an arcade. However, with the number of arcades slowly declining, the Maker has decided to bring that experience into his living room with a USB DDR dance pad.

And yes, you could always buy a metal dance pad but rather than spend $300, why not build your own? That is exactly what Alex has done using some easy-to-find materials: a 35″ x 35” slab of plywood for the base, four 1” x 35” pieces of wood for the border, five 11” x 11” pieces of MDF for the stationary panels, four 9″ x 9” pieces of cardboard for the riser panels, 12 metal button contacts out of aluminum, four 11” x 11” MDF button pads, acrylic sheets for the dance surface, and plenty of paint and graphics for the finishing touch.

The dance pad itself is based on pull-up resistors and an Arduino Leonardo, which is housed inside a 3D-printed enclosure. The Arduino includes an ATmega32U4 chip that can be programmed to act as a USB input device. The working principle here is that the MCU sends out a keystroke every time a button panel is stepped on. Alex provides a more in-depth breakdown of how it works in the video below! Meanwhile, the Arduino code can be downloaded here.

Hackaday Prize Entry: Cheap, Open LiDAR

[adam] is a caver, meaning that he likes to explore caves and map their inner structure. This is still commonly done using traditional tools, such as notebooks (the paper ones), tape measure, compasses, and inclinometers. [adam] wanted to upgrade his equipment, but found that industrial LiDAR 3D scanners are quite expensive. His Hackaday Prize entry, the Open LIDAR, is an affordable alternative to the expensive industrial 3D scanning solutions out there.

The 3D scan of a small cave near Louisville from [caver.adam’s] Sketchfab repository
LiDAR — Light Detection And Ranging —  is the technology that senses the distance between a sensor and an object by reflectively measuring the time of flight of a light beam between the two. By acquiring a two-dimensional array of multiple distance readings, this can be used for 3D scanning. Looking at how the industrial LiDAR scanners capture the environment using fast spinning mirrors, [adam] realized that he could basically achieve the same by using a cheap laser range finder strapped to a pan and tilt gimbal.

The gimbal he designed for this task uses stepper motors to aim an SF30-B laser rangefinder. An Arduino controls the movement and lets the eye of the sensor scan an object or an entire environment. By sampling the distance readings returned by the sensor, a point cloud is created which then can be converted into a 3D model. [adam] plans to drive the stepper motors in microstepping mode to increase the resolution of his scanner. We’re looking forwards to see the first renderings of 3D cave maps captured with the Open LIDAR.

The HackadayPrize2016 is Sponsored by:

Filed under: The Hackaday Prize