In this Instructable I will walk you through the process of creating an autonomous helium balloon that documents the space. Have a look at the video: https://www.youtube.com/watch?v=NwzptoiYJdU
The balloon and the casing are self-made, the electronics comprise an arduino pro mini, three motors with props, ultra-sonic sensors for obstacle detection, gyroscope for stabilization and a GoPro camera to take pictures/videos.
These are the steps:
1. Get the materials
2. Create the balloon
3. Make a case for the electronics and attach it to the balloon
4. Add the electronics
5. The code!
6. Some challenges when working with helium balloons
This instructables is based on a research project by Diana Nowacka (https://openlab.ncl.ac.uk/people/diana/ - email@example.com) and David Kirk (https://openlab.ncl.ac.uk/people/ndk37/ - firstname.lastname@example.org) - published at the Ubicomp conference 2015 (http://dl.acm.org/citation.cfm?id=2750858.2805825&coll=DL&dl=ACM). A special thank you goes to Nils Hammerla (https://openlab.ncl.ac.uk/people/nnh25/ - email@example.com) for his help.
Feel free to email us if you have any questions or feedback!
Step 1: Materials
Materials for the balloon
- 2 x Mylar blankets (search for "mylar rescue blanket", should be easy to find and just costs a few pounds)
- 1 x Mylar ballon
- 1 x Hair straightener (at least 200 °C)
For the Casing
- 2 x Balsa wood strips
- a laser cutter or a crafting scalpel
- 1 wooden dowel of ca. 50cm length (to attach the motors)
- Some glue, I really like Epoxy
The electronic components
- Arduino pro mini (could be nano as well I guess or something equally small)
- 2 x H-Bridges
- 3 x motors with props (from e.g. little quadcopters)
- GoPro Hero (ideally WiFi capable)
- Gyro + Accelerometer - ITG3200/ADXL345 (I got this one:https://www.sparkfun.com/products/10121)
- 3 x Ultrasonic sensors - Ultrasonic Range Finder - LV-MaxSonar-EZ0 (this one good https://www.sparkfun.com/products/8502)
Step 2: Making the Balloon
Making the balloon
Depending on how much stuff you want to attach to the balloon, you have to carefully choose the size of the balloon. As balloons over a size of 90 cm (~30 in.) are hard to get, I decided to make my own one out of Mylar. You can choose whichever shape you would like to, but I reckoned that a spherical balloon will turn easier. A balloon of a diameter of 130 cm can carry around 360 g.
NB How much a helium balloon can carry also depends on your location's altitude (sea level), because the lifting capabilities of the helium depend on its own density and the density of air.
What to do:
Take two sheets of Mylar Blanket and cut a circle of 130 cm (~ 51 in.) out of each.
Heating up the mylar makes it very fragile and thin. Therefore we will use the additional, thick mylar from a normal mylar balloon for the border.
Cut out little strips, around 5 cm x 10 cm (2 inches x 4 inches) out of your thick Mylar balloon. Ideally, they should be slightly wider than your straightening iron.
Put the two circles on top of each other, wrap the thick strips around the border and press them together with the hair straightener. Usually, after already 5 seconds the Mylar melts. I clamped the hair straightener with a rubber band and let it in this state for 30-60 seconds. This way you can be pretty sure, that the Mylar melts all over and there are no gaps. Enjoy this procedure for the whole circumference of the balloon (this takes approximately forever), apart from one section, where you have to leave a gap to be able to fill the balloon. As you don't really want to have a plain opening to the balloon, you should use the opening of the thick mylar envelope, which has a one-way opening that easily allows filling.
Now you're done with your envelope!
Next crafty thing will be the casing. The most advisable material is balsa wood, because of its light weight.
Step 3: Making the Case
Balsa wood is the perfect material for a casing, as it looks nice and is very very light! That comes with one drawback though, it is not extremely robust. I managed not to break too many cases, it is pretty reliable, it just needs a bit of caution. The easiest way to handle balsa is to cut it with a scalpel.
Just be creative and see what you like! I experimented with many different shapes, and living hinges look very cool (see https://www.instructables.com/id/Laser-cut-enclosu... You can also just go for the standard box, it doesn't really matter, as long as you can place everything inside and attach the dowel for the motors.
I decided to bend the balsa wood strip to an arc. You can do that by taking a big round bowl of freshly boiled water and slowly bending the strip inside of it. If you put a heavy object like a mug on top and leave it for 1-2 hours in the water the balsa should bend nicely. once it's bend, take it out and let it dry (Sorry that I don't have any pictures of that, I was probably too lazy to take some). Cut two half-circles out of the balsa wood for the sides.
You can just glue the dowel to the case with Epoxy. Make sure the motors face to the front, that way they are the strongest. For the up/down motor, make two small holes at the bottom of the box, attach the motor to two dowels and put them through the holes. Adding another plate and putting the through that as well makes it much more stable (see picture with the electronics).
Step 4: The Electonics
I thought that it would be cool to have a balloon that is taking pictures and videos. I also wanted some obstacle detection and stabilization.
Therefore I added three ultra sonic sensors (1) ; two to detect everything at the front left and right and one to measure the distance to the ceiling. I havn't had problems with interference (although it is mentioned in the data sheet, then you need to use chaining see http://www.maxbotix.com/documents/LV-MaxSonar-EZ_Datasheet.pdf The only important thing was that the sensors have to point sufficiently apart, the cones must not overlap as the sonar coming from the sensors do interfere with each other. That makes a sensor detect an obstacle when in fact it is just another sensor firing sound to do it's job.
The gyrsocope (2) stabilizes the movement after turning. Important is (unlike shown in the Picture where everything is just thrown into the casing), that you chose one axis (in my case it was Z) and align it as much as possible so it's parallel to the ground. So rotation of the balloon will result in the gyroscope measuring change on the Z-value only. Obviously you can use some fancy math otherwise, but this worked great for me. I just stuck the sensor to the balsa wood board and that was already enough to make it work.
The GoPro (3) is great for initializing pictures remotely and finally the H-Bridges (L293D) for the motors+props (4). The H-Bridge's power lines must be connected directly to the battery, don't go over the arduino because the motors produce a lot of noise! This can make the readings from the sensors unusable. But remember to connect ground of the H-Bridges to the arduino though. Furthermore, H-Bridges must be connected to PMW Pins to work properly.
If you're brave you can take a Mini-USB cable apart and add the GoPro over the USB connector to your circuit by connecting + to VCC on your adruino and the ground. That way you can take out the battery of the GoPro and you save quite some weight! This will results in less operating time though. As the balloon doesn't need any battery power to keep up in the air, the battery (3.7 V, 1000mAh is good) lasts about 2h with occasional picture taking. Weirdly the same batteries from different companies can have different weights, so try to get one with as much mAh as possible but which is also lightest.
Connect (Component -> Arduino)
Power+Ground -> Arduino VCC and Ground
BW -> A0,A1,A3 (don't remember why I skipped A2, probably no reason)
Power+Ground -> Arduino VCC and Ground
SDA (Pin over GND) -> Arduino SDA (A4)
SCL (Pin over SDA) -> Arduino SCL (A5)
Pin 4,5,12,13 -> Arduino GND
Pin 1,8,9,16 -> Arduino RAW
Pin 2 -> Arduino Pin 11
Pin 3 -> Motor 1.a
Pin 6 -> Motor 1.b
Pin 7 -> Arduino Pin 10
(same goes for the other H-Bridge with Motor 2+3)
Next the code!
Step 5: Programming
- Initialize all the PINs and the sensors.
- First, if the balloon didn't move for a while, it makes a forward movement (no movement is boring),
randommove = 1, will check that at the end of the loop
- Then check if the height is still ok (KeepHeight()) and potentially go up or down, I set it to 1m under the ceiling
- If there is something closer than 150cm than it's an obstacle to avoid, so initialize turning
- if both sensors detect something at the front, the balloon shall go backwards
- after turning, to avoid drifting, countersteer with the motors to keep the orientation and not rotate anymore
- Finally execute the forward movement and use the Gyro to keep straight while flying for 5 seconds
I'm pretty sure there are better ways to achieve these things, if you have a suggestion please let me know!
Step 6: Final Notes
There are a few things that you need to know about helium balloons, here are
CHALLENGES WHEN WORKING WITH HELIUM BALLOONS
Although I love my Diris, helium balloons are far from perfect. The first challenge is to obtain a balloon that has the right size to lift all the components. The volume of a balloon determines how much helium it can hold, which is proportional to the upward force. This significantly constrains the choice of components. The greatest constraint is the battery; the lighter it is, the shorter it will last. To be able to carry at least the microcontroller, a battery and some motors, a helium balloon needs a minimum diameter of 90cm.
Secondly, balloons filled with helium are very sensitive to any air-flow and temperature changes in the room. As helium balloons always drift (i.e. there is no way to be completely still), they are strongly affected by any air currents and drafts. I don't have very good experiences with using my balloons in air-conditioned rooms.
Thirdly, because displacing a helium balloon consists of changing the inertia by actuating the propellers to create a thrust, a few seconds pass between the initialization of a movement and the actual change in position. As a result, the balloon cannot react to outer influences that well and it is also very challenging to quickly avoid obstacles.
Finally, since helium is lighter than air it escapes slowly from any kind of casing. As a consequence the balloon has to be refilled daily or every other day depending on how air-proof the casing is. It can also be quite challenging to fill a balloon with the right amount of helium to make it fully floating, i.e. neither dropping nor rising in height. It is advisable to fill the balloon so that it is too light and equilibrate it with an additional weight, which can be taken off again easily.