Introduction: Beatfly : Make an Illuminating Blimp and Control It With Your Voice, Keyboard, MIDI Controller, Garageband File, IPhone, Flash, and More! [Mac OSX]

I have worked on several projects using blimps and balloons, and here I would like to share one of them, Beatfly. This is an illuminating blimp controlled with various interfaces such as voice, Keyboard, MIDI Controller, Garageband MIDI file, iPhone&iPod Touch, and Flash application. I implemented the core functions in Quartz Composer plug-ins, an easy-to-use visual programming environment from Apple, so that you do not have to write any source code to connect your interfaces and the blimp.

[Mac OSX Only]
Because I use Quartz Composer, my program works only on Mac OSX. I am now extending and improving it toward cross-platform. If you have knowledge of computer programming, you can make your own system that connects to the blimp. The communication protocol between the blimp and the computer is simple. Read the step 19.

Step 1: Materials and Tools

1x Funnel IO
2x XBee
1x Xbee Explorer USB
1x TLC5940 LED Driver
1x IC socket
5x Full-Color Flux LED [Anode Common]
3x LB1638 Motor Driver
3x DC Motor (e.g., MK07-3.3 Orange Motor)
3x Propeller (e.g., EP2510)
1x LiPo Battery
1x 2kΩ Register (for LEDs)
3x 0~30Ω Register (for Motors)

Circuit board
Pin socket (2x 14pin, 8x2pin)
Pin header (2x 14pin)
Heat shrink tube

Plastic sheet (0.5mm thick)
Plastic film for the balloon**

Wire stripper
Solder & Soldering iron

Helium tank

I use Heptax plastic film. I think you can use other transparent plastic film. If you cannot find any good film, please contact me. I give you my film.

Step 2: Circuit Overview

Before placing and soldering parts, check the circuit diagram and plan your layout of the parts on the circuit board.

Step 3: Prepare the Funnel IO

Solder the pin sockets (2x 14pin and 1x2pin) to the Funnel IO pins.
Solder the pin headers (2x 14pin) at the edge of your circuit board to attach the Funnel IO. 

Step 4: Place and Solder the Parts

Place and solder the LEDs, TLC5940 socket, LB1638s, registers, and pin sockets for motors.
LB1638's pins do not fit an ordinary 0.1inch (2.54mm) pitch circuit board, so bend the pins by hand. We do not use the Non-Connection pin (pin6 & pin10) of the LB1638, so you can cut off these pins.

Step 5: Wire the Parts

Wire the parts according to the pictures in the Step 2.

Step 6: Download the Beatfly Programs

Download the Beatfly_Version1_Build001 program here. Unzip it and place it anywhere you like.

Step 7: Upload the Program to the Funnel IO

1. To upload the program to the Funnel IO, you need Arduino software. Download it here. Copy the Arduino software into your Application folder.

2. Install the FTDIUSBSerialDriver, which you can find in the downloaded dmg.

3. If there is no Arduino folder in your Documents folder, create it.

4. Copy the Beatfly_v1_001/Funnel_IO/Beatfly_v1_001 folder into your Documents/Arduino.

5. Create libraries folder in your Documents/Arduino folder.

6. Copy the Beatfly_v1_001/Funnel_IO/Tlc5940 folder into your Documents/Arduino/libraries.

7. Open the Arduino software.

8. In the menu bar, choose File>Sketchbook>Beatfly_v1_001.

9. Click the Verify button.

10. Download XBeeConfigTool here.

11. Open the XBeeConfigTool/application.macosx/XBeeConfigTool.

12. According to this instruction, setup your XBee modems, close the solder jumper on the Funnel IO and the XBeeExplorerUSB, and upload the Beatfly_v1_001 sketch (program) to the Funnel IO. 

Step 8: Quartz Composer

1. If there is no Macintosh HD/Developer/Applications/Quartz Composer, install it from your Mac OSX install disk (DVD). Quartz Composer is included in Option Install/Xcode.

2. Copy the Beatfly_v1_001/Quartz_Composer_Plugin/Blimp_Sender.plugin into your Username/Library/Graphics/Quartz Composer Plug-Ins. If there is no such a folder, create it.

Step 9: Test Your Circuit

1. Attach the Funnel IO with XBee to the circuit board. Connect a motor to the circuit board roughly. Do not solder the motors yet.

2. Connect the XBee to your computer via USB.

3. Open the Quartz Composer. In the templates, choose Blank Composition.

4. In the Patch Creator, choose Beatfly_v1_001 patch and double click it.

5. Choose the Beatfly_v1_001 patch on the canvas. In the Patch Inspector's Input Parameters tab, input 0.5 for Vertical Motor, Right Motor, and Left Motor value.

6. In the Patch Inspector's Setting tab, set the Number of LEDs to 5 and select the serial port of XBee. It should be "/dev/tty.usb-serial...."

7. Now your Quartz Composer Patch communicates with the circuit. In the Patch Inspector's Input Parameters tab, change the value of each motor and LED. A motor drives forward when its value is 1.0, stops when the value is 0.5, and drives reverse when the value is 0. If the motor drives otherwise (forward at 0 and reverse at 1.0), reverse the +/- pins of the motor.

Step 10: Make the Structure

Cut the plastic sheet into the structure parts, bend them, and put them together with screws. My sketch of the structure is included in the Beatfly_v1_001/Structure_Design/Structure_v1_001.jpg. Make your own design to fit your circuit board.

When you decide your design, measure the distance between motors and the circuit board, and cut the wire in this length. Solder the wire to the motors and solder pin sockets to these motor-wires. 

Step 11: Make the Balloon

1. Make the balloon pattern using cardboard. My design of the balloon pattern is included in Beatfly_v1_001/Balloon_Pattern/Balloon_v1_001.jpg.

2. Cut the plastic film along your pattern. Make 2 pieces.

3. Lay one piece of the film on the other. 

4. Seal the edge of the two pieces with iron. Set the temperature of the iron Low. Too hot iron will melt the film. Test the temperature before you begin sealing. Leave about 10 cm unsealed to insert the helium valve.

5. Make the valve. The valve is just a small tube made of the same film as the balloon. Valve length should be 8 ~ 10 cm, and the diameter of the inner tube should be about 1 cm. When you attach the valve to the balloon using iron, insert a cardboard stick into the tube to avoid the tube being sealed. 

Step 12: Finish

1. Fill 20% of the balloon with helium.

2. Attach the structure including the circuit board and the motors to the balloon with tape.

3. Add helium to balance the weight with buoyancy. 

4. Once the blimp float, stop helium and fill the balloon with air.

[!! CAUTION !!] 
Canned helium gas in toy shops used to change voice is very thin. Thickness of the helium gas we use here is 99.9%. It is too dangerous to breath in it. It replaces the air in your lungs with helium and cuts off oxygen-supply. 

5. Finish!! Enjoy performing with your illuminating blimp!!

Step 13: Example 1: Keyboard

Control the blimp with your computer's keyboard. 

1. Open the Beatfly_v1_001/Examples/Keyboard/Keyboard_demo.qtz.

2. Select the proper serial port for the Beatfly_v1_001 patch in the Patch Inspector.

3. Click somewhere in the Viewer window to activate the keyboard input.

4. Play!!

'a' key -- Vertical Motor Forward
'z' key -- Vertical Motor Reverse
's' key -- Right Motor Forward
'x' key -- Right Motor Reverse
'd' key -- Left Motor Forward
'c' key -- Left Motor Reverse

'j' key -- Red LED
'k' key -- Green LED
'l' key -- Blue LED

Step 14: Example 2: Voice

Control the blimp with your voice.

1. Open the Beatfly_v1_001/Examples/Voice/Voice_demo.qtz.

2. Select the proper serial port.

3. Play!!

This patch calculates the volume of incoming audio via mic. 
The Hue value of the HSL Color Patch changes the color of the LED light. You can change the value in the Patch Inspector.

Step 15: Example 3: MIDI Controller

Control the blimp with your MIDI controller.

1. Connect your MIDI controller to your Mac.

2. Open the Beatfly_v1_001/Examples/MIDI Controller/MIDIController_demo.qtz.

3. Choose the MIDI Controllers Receiver Patch, and open the Patch Inspector's Settings tab.

4. Click the "Learn Controller To Observe" button and move one slider, button, or knob on your MIDI controller. The controller will be added.

5. Connect the MIDI Controllers Receiver Patch and the Beatfly_v1_001 Patch as you like.

6. Select the proper serial port.

7. Play!!

Step 16: Example 4: Garage Band

Control the blimp with your Garage Band file.

1. We use midiO component by Retroware in this example, but the latest version of midiO did not communicate properly with Quartz Composer in my environment. In this example, I used the old version of midiO. Copy the Beatfly_v1_001/Examples/GarageBand/midiO.component into the Macintosh HD/Library/Audio/Plug-Ins/Components folder.

2. Open the Beatfly_v1_001/Examples/GarageBand/GarageBand_demo.qtz.

3. Select the proper serial port.

4. Open the Bearfly_v1_001/Examples/GarageBand/

5. In the Garage Band, select the Beatfly LED Track and click the pencil mark in Details>Instrument Generator. Set the MIDI Out parameters as shown in the picture.

6. Select the Dummy Track.

7. Play the song. LEDs on the blimp will synchronize with music.

In this example, the velocity of MIDI notes in Garage Band represents the brightness of each color of LEDs. 
C3 note -- Red LED
C#3 note -- Green LED
D3 note -- Blue LED

Step 17: Example 5: IPhone

Control the blimp with your iPhone or iPod Touch. 

1. We use Mrmr app for iPhone & iPod interface. Get it. It's free!

2. Open the System Preferences>Network>AirPort. Check the IP address of your mac. 

3. Open the Mrmr's preferences on your iPhone or iPod. Change the Player Name as you like.

4. In the Mrmr's preferences, set the OSC Server with the IP address of your mac and set the Port Number 50002. 

5. In the Mrmr, choose the "Open" tab and select the Performance.mmr.

6. Open the Bank 2 with many sliders.

7. On mac, open the Beatfly_v1_001/Examples/iPod/iPod_demo.qtz.

8. Choose the OSC Receiver Patch and add proper keys. The upper 3 sliders in the Bank 2 will talk to /mrmr/slider/horizontal/24or25or26/[Player Name] keys.

9. Connect the OSC Receiver Patch and the Beatfly_v1_001 Patch as you like.

10. Select the proper serial port.

11. Play!!

Step 18: Example 6: Flash

If you have Adobe Flash later than CS3, control the blimp with your Flash application.

1. Open the Terminal application. Terminal is placed in Application/Utilities.

2. In the Terminal, type "cd [Beatfly_v1_001 path]/Examples/Flash/flosc-0.3.1". For example, type "cd /Users/Hideki/Desktop/Beatfly_v1_001/Examples/Flash/flosc-0.3.1". Press the Enter key.

3. Type "java Gateway 60002 30000". Press the Enter key.

4. Open the Beatfly_v1_001/Examples/Flash/Flash_Blimp/Flash_Blimp.fla.

5. Run the program. (Command + Enter)

6. Open the Beatfly_v1_001/Examples/Flash/Flash_demo.qtz.

7. Check that your Flash interface communicates with the Quartz Composer.

8. Select the proper serial port.

9. Play!!

Step 19: Communication Protocol

The beatfly program uses Firmata library and its communication protocol is very simple.

****LED Controls****
1st byte : 0xF0  (Start SysEx)
2nd byte : 0x51  (LED command)
3rd ~ 17th byte : 0 ~ 127 (Red1, Green1, Blue1, Red2, Green2, ...... Green5, Blue5)
18th byte : 0xF7  (End SysEx)

****Motor Controls****
1st byte : 0xF0  (Start SysEx)
2nd byte : 0x52  (Motor Command)
3rd ~ 8th byte : 0 ~ 127 (Vertical+, Vertical-, Right+, Right-, Left+, Left-) 
9th byte : 0xF7  (End SysEx)

Any programs that send this message set can connect to the blimp.