Ollie - a DIY Autonomous Robotic Blimp
Intro: Ollie - a DIY Autonomous Robotic Blimp
Ollie is an open source blimp-based autonomous and ambient robot that dwells in human habitats. Ollie is observant, often flying in a manner suggesting curiosity for the world around him. Ollie reacts to voices by excitedly flapping his wings, communicating his friendliness and eagerness to be noticed. Ollie wants to know about humans and yearns for their attention.
Ollie is available to DIYers, hobbyists, artists, designers and students under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Ollie has an Arduino brain, wings to fly and a microphone to listen. In this instructable I will teach you how to make Ollie so you can meet him too. Please contribute suggestions, experiments, tweaks, hacks and discoveries of your own process here and comment on ollie.nilaratna.com. Thank you!
STEP 1: Parts List
* 1 Arduino Pro Mini 328 – 5V/16 Mhz
* 1 FTDI cable or breakout board to charge Arduino Pro Mini
* 1 Electret Microphone
* 1 Polymer Lithium Ion Battery 850 – 900 mAh
* 2 Blue Arrow 3.6 Gram Micro Servos
* 1 36″ Mylar balloon envelope
* 1 30 guage wire/ wire-wrapping wire in 2-3 colors
* 1 LED
* 1 Sheet of Mylar or foil for wings
* 1 Spool of sculpture wire for wings
* 1 Helium tank or access to a party store
* 1 Switch
* 1 3.9 KΩ resistor
* 1 4.7 KΩ resistor
Additional items
* Arduino Uno or other (for testing)
* Breadboard
* 22 or 24 guage wire
* Lightweight tape
* Small weighing scale
* Soldering iron and solder
* Quick-setting Epoxy
* Glue gun
* Playdoh or clay
* Small cups
* Cutter
* Wire stripper
* Wire wrapping tool
STEP 2: Circuit
STEP 3: Making the Wings
Attach servo accessory to the ends of the wings keeping check of orientation and secure with epoxy. Secure with small pieces of tape if necessary.
Cut out identical pieces of Mylar or foil and attach to wire shapes using a glue gun. Leave the foil loose when attaching so it takes a hemispherical shape when wing is flapped.
Attach wings to the servo.
Wire up the servos using wire-wrapping wire.
STEP 4: Wiring Up the Servo
Upload a basic servo program to check wiring making sure that both wings exhibit identical motion.
If wings are not moving check continuity in circuit, secure connections and try again. If circuit works, disconnect and prepare wiring for Arduino Mini Pro.
Insert servos through 2 small identical plastic cups and glue to secure in place. Make sure wings move without any obstructions. Cups are useful in attaching wings to the balloon and hiding wires.
STEP 5: Attaching Wings to Blimp
Cover the cups with Mylar foil using glue gun.
Fill up 36" Mylar envelope with Helium.
Attach servo cups to the balloon using small pieces of tape. Let wires hang loose.
Cover the tape with pieces of Mylar or foil. Silver metal tape can also be used.
STEP 6: Setting Up Electret Mic
Connect LED to digital pin 13 on Arduino Uno.
Make sure all connections are secure.
Resistors are used to increase the amplification of the signal received from the Electret mic and should be wired correctly.
Run this simple program to make sure input is being received. LED will light up whenever a certain threshold of volume is reached. This threshold should be set to a normal or loud talking volume.
int buffer = 0;
//Sound variables
int potPin = 1; // select the input pin for sound sensor
int ledPin = 13; // select the pin for the LED
int soundVal = 0;
void setup()
{
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop()
{
//Sound
soundVal = analogRead(potPin);
//Serial.println("Listening............");
if( soundVal>1020 ){
Serial.println("VERY LOUD!");
digitalWrite(ledPin,HIGH);
}
else if (soundVal<450 || soundVal >750){
if (buffer == 0){
Serial.println(soundVal);
buffer = 15;
digitalWrite(ledPin,HIGH);
}else{
buffer--;
}
}
else{
digitalWrite(ledPin,LOW);
}
}
If the circuit is not working play with the values in the program and make sure resistors are wired correctly.
STEP 7: Connecting Everything
Upload the final Arduino sketch given below to the Pro Mini using FTDI cable or breakout board.
Solder connections to the Arduino Pro Mini very carefully according to the circuit diagram.
Attach circuit to bottom of balloon using small amount of foil or tape.
At this point circuit will be light enough to be lifted by the balloon or just the right weight to keep it in equilibrium. Adjust with a small amount of clay if circuit is too light.
#include <SoftwareServo.h>
SoftwareServo myservo; // create servo object to control a servo
SoftwareServo myservo2;
int goUp = 0;
int val = 0;
int wait = 0;
int flyFor = 0;
long flapTime = 0;
int angleMin = 0;
int angleMax = 120;
int upSpeed = 20;
int downSpeed = 1;
int buffer = 0;
//Sound variables
int potPin = 1; // select the input pin for sound sensor
int ledPin = 13; // select the pin for the LED
int soundVal = 0;
void setup()
{
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
myservo.attach(2); // attaches the servo on pin 2
myservo2.attach(4);
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop()
{
// Servo
if (flyFor < flapTime){
if (wait == 5){
if (val < angleMin){
goUp = 1;
digitalWrite(ledPin,HIGH);
}
else if (val >angleMax){
goUp = 0;
digitalWrite(ledPin,LOW);
}
if (goUp == 0){
val-=upSpeed;
}else {
val+=downSpeed;
}
}
wait++;
if (wait > 200)
wait = 0;
myservo.write(val);
// sets the servo position according to the scaled value
myservo2.write(120-val);
SoftwareServo::refresh();
flyFor++;
}else{
//Sound
soundVal = analogRead(potPin);
Serial.println("Listening............");
if( soundVal>1020 ){
Serial.println("FREEAK OUT!");
upSpeed = 15;
downSpeed = 15;
angleMax = 45;
angleMin = 10;
flapTime = 6000;
}
else if (soundVal<450 || soundVal >750){
if (buffer == 0){
Serial.println(soundVal);
upSpeed = random (1, 20); //1 to 30
downSpeed = random (1, 30);// 1 to 30
angleMax = random (110, 120);
angleMin = random (30, 45);
flapTime = 10000 + random (5000 , 10000);
flyFor = 0;
buffer = 15;
}else{
buffer--;
}
}
}
}
STEP 8: Ollie Can Fly!
Please submit your experiments, tweaks, hacks and suggestions here and comment on www.meandollie.com . Ollie would love some friends.
STEP 9: Helpful Tips
If LiPo battery 900mAh is unavailable, replacement battery should be ~18.5g (0.65oz) or less.
Helium runs out of Mylar slowly, Ollie will fly for at least 1.5-2 days before it needs refilling.
Check entire circuit on breadboard or Arduino Uno before wiring or soldering to the Arduino Pro Mini.
Be very, very careful while soldering to Arduino Pro Mini, the chip can get burned easily.
Test servos and make sure wings are oriented correctly and moving in mirrored direction.
Make adjustments to the code as is fitting to your environment.
64 Comments
harshitm13 7 years ago
goldenshuttle 7 years ago
nice project. can be a concept for many more ideas. thumbs up
utkarshdvd 10 years ago
How could I save this data in a .wav or any other format for playback?
drewcours 11 years ago
U456 11 years ago
emdarcher 11 years ago
alidurrani 12 years ago
The World is unsafe
neologik 12 years ago
i really want to make mine!...
i wonder... if you make his wings a little bigger, and plane.... it would gain some altitude when hear sound. i mean, for it not to touch the ground...
anyway, maybe i will try...
greets
R.A.T.M 12 years ago
pritika.16 12 years ago
gettingbored 12 years ago
1 Arduino Pro Mini 328 – 5V/16 Mhz - $18.95
1 FTDI cable or breakout board to charge Arduino Pro Mini
--- FTDI cable - $17.95
--- Breakout board ...? - $4.95 (is this what you were talking about?)
1 Electret Microphone - $7.95
1 Polymer Lithium Ion Battery 850 – 900 mAh - $8.95
2 Blue Arrow 3.6 Gram Micro Servos - $21.90 (2 x 10.95)
1 36-inch Mylar Balloon Envelope
--- www.rctoys.com - $10.95
--- Local San Francisco Party Store - $6 (Will this work as well or do I need to get it from the site you listed?)
1 30 guage wire/ wire-wrapping wire in 2-3 colors - $4.19
--- I figure I can just mark the wires with sharpie or something similar to save money
1 LED - $1.50
--- Probably too expensive to order online, better to find it at a local store (at-RadioShack)
1 Sheet of Mylar or foil for wings
--- Do you think this mylar-like paper work? - $3
--- I chose Blicks because it has locations close to me and thought it wouldn't be cost effective to ship.
Sculpting Wire
--- What about Galvanized Wire, 18 gauge? - $3 Blick
--- What gauge was your wire?
1 Switch
--- Will this switch work? - $3
--- What switch did you get? (I'm concerned about weight)
1 3.9 KΩ resistor
--- 1/8-Watt 4.7K Ohm Carbon-Film Resistor - $1.19
--- Will this resistor work?
1 4.7 KΩ resistor
--- 3.9K ohm 1/2W 5% Carbon Film Resistor - $1.19
--- Will this work?
I didn't want to get into the Additional Items, since I'm low budget. I just wanted to create a list of where I can get the components, and where everybody else can, and roughly how much it would cost.
Total (without shipping/tax) = 86.39
**This is if I can get the cheaper parts I listed above. Also without tax and shipping on some parts.
Anybody know where to get stuff cheaper? Or do I just have to gather the parts slowly?
gettingbored 12 years ago
3.7 Gram Micro Servos ~$9 for 4 of them
Arduino Pro Mini w/ Convenient breakaway headers ~$14
pnilaratna 12 years ago
gettingbored 12 years ago
R.A.T.M 12 years ago
pritika.16 12 years ago
R.A.T.M 12 years ago
https://www.instructables.com/id/Mousebot-Revisited/
look at this you colud take the brais out of this bot put it on the bottom of the baloon insted of the mortors you could use fans for the wings but so it gose back and forith not up and down put the light snsers ot the front of the ballon and the momantary swich on the front and and have a momantary switch on the top hooked upto a capasater and a fan so if it hit the roof it would come back down
R.A.T.M 12 years ago
pritika.16 12 years ago
samin1 12 years ago
i already bought all the parts and started assembling them, but am facing a problem, hoping you can help me out.
When i connect the board with usb directly everything works fine & seems programed very well, but when i connect the 3.7 lipo battery i feel its very low voltage for it, and none of the servos work, but if i disconnected one of the servos the other one work but kinda slowly !!
what do you think the problem ?