Posts with «arduino» label

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

Grow Crystals That Glow with Magnetic Induction

You can grow a crystal around an LED light that's powered by magnetic induction.

Read more on MAKE

The post Grow Crystals That Glow with Magnetic Induction appeared first on Make: DIY Projects and Ideas for Makers.

The Oculus Cardboard Project: DIY Virtual Reality Gun with Tracking

I always wanted to shoot things in virtual reality but I'm broke so I did what I could. This is my attempt at an Oculus Rift style experience with Google Cardboard. This is actually a really fun project and its extremely easy to replicate. The parts cost around $15 total and will take about 45 minutes if you are new to Arduino.

read more

Hackaday Prize Entry: Dtto Modular Robot

A robot to explore the unknown and automate tomorrow’s tasks and the ones after them needs to be extremely versatile. Ideally, it was capable of being any size, any shape, and any functionality, shapeless like water, flexible and smart. For his Hackaday Prize entry, [Alberto] is building such a modular, self-reconfiguring robot: Dtto.

To achieve the highest possible reconfigurability, [Alberto’s] robot is designed to be the building block of a larger, mechanical organism. Inspired by the similar MTRAN III, individual robots feature two actuated hinges that give them flexibility and the ability to move on their own. A coupling mechanism on both ends of the robot allows the little crawlers to self-assemble in various configurations and carry out complex tasks together. They can chain together to form a snake, turn into a wheel and even become four (or more) legged walkers. With six coupling faces on each robot, that allow for connections in four orientations, virtually any topology is possible.

Each robot contains two strong servos for the hinges and three smaller ones for the coupling mechanism. Alignment magnets help the robots to index against each other before a latch locks them in place. The clever mechanism doubles as an ejector, so connections can be undone against the force of the alignment magnets. Most of the electronics, including an Arduino Nano, a Bluetooth and a NRF24L01+ module, are densely mounted inside one end of the robot, while the other end can be used to add additional features, such as a camera module, an accelerometer and more. The following video shows four Dtto robots in a snake configuration crawling through a tube.

The HackadayPrize2016 is Sponsored by:

Filed under: robots hacks, The Hackaday Prize