Remote Control Mini Blimp!

Mini blimp flies through hoops! Features 3 DC motors/ propellers, battery charging, and wireless communication.

Similar projects worth following
This project contains some DC motors, battery charging, sensors and data. I liter of helium lifts 1 gram, so there is a weight constraint in the circuitry. Exciting!

This is a remote control blimp which is controlled by joystick. 

Thanks to @oshpark for supporting this project.

One of the things I'll use this for is a blimp obstacle course. 

BlimpLi controller PCB measures approximately 110mm x 35mm and has 4 circuit modules.

  • Wireless communications using WiFi/ ESP8266 
  • Voltage regulator: VBatt (4.2V -3.7V) to 3.3V
  • Motor driver circuit for 3 motors 3.3V, 20mA
  • Battery charging circuit for 1-cell Li-Ion Polymer battery

Blimp controller v2.stl

This piece holds the joystick

Standard Tesselated Geometry - 248.13 kB - 07/06/2019 at 20:22



Download with Blimpy_Server4.ino

ino - 9.80 kB - 04/07/2019 at 14:55



Download with Blimpy_Server4.ino

ino - 1.12 kB - 04/07/2019 at 14:55



Current main

ino - 2.37 kB - 04/07/2019 at 14:55



Download with Blimpy_Server4.ino

ino - 2.54 kB - 04/07/2019 at 14:55


View all 23 files

  • 1 × MCP73812 Power Management ICs / Power Supply Support
  • 4 × capacitor 1uF
  • 3 × DC motors
  • 1 × Tag connect cable 1x TC2030-FTDI-TTL-232R USB to TC2030

  • Hello World

    Sophi Kravitz07/06/2019 at 17:40 0 comments

    I'm so excited that Blue Stamp Engineering is using this design for their engineering summer camp in NYC.

    This is how to program the ESP8266 on the blimp PCB (note that the joystick uses an Adafruit Feather ESP32):

    Shown here is the pinout for the ESP8266. To program it, the process is to hold D0 low, while hitting reset. D0 stays low while programming. I use a tag-connect cable PN TC2030-FTDI-TTL-232R to program the ESP8266.

    Adafruit builds the programming circuit into their ESP8266 Feather board with a latching circuit (transistor). Their Huzzah board has two switches that go to Reset and D0 which you manually toggle in order to program.

    These examples are excellent, and useful. However, the blimp has weight constraints so there is no room for switches or transistor circuits.

    To program the board, I solder temporary wires onto the reset pin (pin1), and D0 (pin 12).

    It also helps to have an extra ground wire dangling from somewhere- you can use an alligator clip from BGND to D0. Sometimes I desolder the battery and use the benchtop power supply to power the board (sometimes called the target) while programming. 

    There's a lot going on in the above image. This is how to connect the board:

    • Benchtop power supply to anywhere between 3.4 and 4.2 V is connected to BV and BGND (B stands for battery).
    • Alligator clip from BGND to D0.
    • Tag-connect cable from USB on computer to tag-connect pins on board. 

    On the image below, I'll show you how the tag-connect jig works. You don't need a jig at all, but the holes in the white acrylic that line up with the tag-connect holes works quite nicely. A second person to hold the cable works quite nicely too ;) 

    Now that you're connected, here are the programming steps.

    • Attach D0 to GND (alligator cable)
    • Touch reset to ground. The black wire on pin 1 should be long enough to touch either the alligator cable or GND somewhere else. There is only one GND on the board (no separated GND planes). 

    When you touch reset, you should see the blue light on the ESP8266 blink. If you do not see a blue light, make sure that you've turned the switch located at the top of the board on. 

    • Open the Arduino IDE and load in the blimp server file. Your Arduino folder should look like this:

    If your folder is organized like the above, when you open the Arduino file Blimpy_Server4.ino, it will look like this:

    You can also put the file into one long thing rather than breaking it up. I find it easier to stay organized with tabs for different sections of code, but YMMV.

    Please note: you will need to add in your own SSID (line 8) and password (line 9). I use a local router which isn't connected to the internet (best) but you can use any router. 


    Tools > module > board: Generic ESP8266 module

    Port > tag-connect, will have a few numbers

    Programmer >Arduino as ISP

    Once you've got all of that set up, you can upload! You'll see a line of dots appearing on the bottom of the Arduino IDE until it reaches 100%.

    That's it! 

    The above directions are just for the blimp board itself (server). You'll need to upload the client to an Adafruit Feather ESP32, but that's quite straightforward.

  • Optimized layout + proportional controls

    Sophi Kravitz10/06/2018 at 00:10 0 comments

    When I last left this project the great things were:

    1. It flies and the weight issues are over
    2. Up/ Down/ forward controls perfectly and the blimp moves clean
    3. It flies! It flies It flies!

    The bad things were:

    1. There's a power issue. When the motors turn on, they suck power, causing the regulator's output to sag. This should be fine, because regulators are supposed to REGULATE, but this one takes too long to recover (like 5 uS) and the ESP loses connection. I had added a large capacitor at the regulator input which helped a lot, but didn't cure the problem entirely.
    2.  Left/ right do not control nicely at all, and after a number of experiments with          rudders, I think it's because of the overshoot with on/off controls.


    I made a new board, changing the layout slightly so that the power traces are closer to the source (battery). I'm hoping that this results in more stability. 

    I also added a PWM output on GPIO0 and GPIO2. For those unfamiliar with the ESP8266, GPIO0, 2, and 15 need to be in a high or low state on boot in order for the program to run. It's actually really easy to make these GPIO work and on the bench this works very well. I anticipate challenges when rebooting while in the air.

    Motors can now move more slowly with PWM.

    This weekend's task is to test out these cute proportional joysticks I got from Adafruit. 

  • Great disappoint and voltage sag

    Sophi Kravitz06/27/2018 at 16:00 3 comments

    I presented on this project at Hackaday Belgrade (I'm at 1:44:32) and had it working just enough to talk about :)

    I still have a couple of issues to work out, and one of them turned out to be a huge bummer.

    • Two of the motors (both on same driver #1) spun at slower rpms than the one (on second driver #2). 
      • I looked at the driver chip under the microscope and noticed that I'd soldered it slightly off the pad so that the junction provided half a trace-width (6 mil not 12 mil). Side note: I cannot find where the trace units are in Eagle. I assume since my board is in inches, the traces are too...
      • Fixed this by removing and re-soldering the chip
    • Now that all the motors draw the same current (about 350mA max each at 3.8V - 4.0V), new power problems arose. I noticed that the ESP kept resetting which indicated that the voltage was dropping below 3.0V for some short length of time (5us). 

    Last night I worked with Ed Nisley, a great friend and an engineer with better tools than I, to discover what exactly was going on.  Ed has a Tectronic device from the 70s which coupled with a hall effect sensor converts the signal to a current value to be viewed on a scope. We looked at the current (in yellow), which fortunately doesn't dip under load. However, at the point of reset, with all three motors running (one shown here in purple) + the ESP8226 reaching out to WiFi (1.2A) we observed a voltage dip down to 2.6V at the ESP8266 supply/ buck-boost output (green). 

    This could be because the back emf is going back into the voltage supply due to such long traces on the board. A little hard to see, but the highlighted trace is the battery supply trace.

    I'll recreate some of this test and post scope pictures later. My plan to troubleshoot is to solder three fat wire paths over the board: a path directly from battery supply to buck boost converter + battery supply to each driver.

    For now, this is a pretty big bummer as if this is the case, I'll need to redo my layout to put the buck-boost (top left) converter much closer to the supply (bottom middle).

    Stay tuned...

  • Second Flight!

    Sophi Kravitz05/21/2018 at 18:35 2 comments

  • Blimp User Controls (part 1)

    Sophi Kravitz05/18/2018 at 16:22 0 comments

    I'm going with a joystick for the main controls because everyone knows how to use one. A joystick is primarily used for direction and speed, it should be received well as a participant interface.

    I need 6 commands minimum (up/ down/ left/ right/ forward/ back) and the joystick that I chose is made up of 4 microswitches, so only 4 controls. I love arcade buttons, so I decided to add 2 of those.

    Inside of the controller is an Adafruit Feather (has an ESP8266 on it) and a battery.

    I used Inventor to model this. Already realized that this rev 1 is missing holes for the battery charging and a reset switch. I also should have added screw holes on the bosses to make them less hollow. 

    I can fix these post print though :D

    and started printing last night. It looks good so far!

  • It flies, now what?

    Sophi Kravitz04/23/2018 at 02:36 4 comments

    I'm pretty excited. The blimp flies and is as controllable as a large envelope full of helium in a drafty house can be ;)

    The blimp shown here is 24" diameter, 8" high.

    So what's different about this revision and why does it fly?

    • Motors are spinning super fast and drawing about 200mA each.
    • New motor drivers provide motors with battery voltage, but control voltage is separate, allowing for motors to get maximum power.
    • Board is 0.8mm thick and cut the weight of the PCB in half - thank you @oshpark!
    • Buck boost converter is slightly on the edge with allowing 1.3A, but is much more capable than the voltage regulator in earlier revisions.
    • Code has been revised so that there is no lag between control switch and motor.


    I had a memory leak in which the ram was spinning down and causing the connection to drop. Turns out the libraries (2.4.1) provided for ESP8266WiFi have a bug. A down rev (2.4.0) fixed that problem, but it still took me a day to figure it out.

    Still todos

    • Evaluate battery draw with special wattmeter designed to look at single cell draw
    • The hardware is there to measure battery levels, add this to code and send signal when low.
    • There are still connection loss issues, hopefully adding error handling to code will address this.
    • FUN! Design controller for joystick and buttons. I'm envisioning a figure eight so that it fits nicely in the hand.
    • Test with 24" blimp when that arrives
    • Add ESP reset switch or button to gondola hardware
    • Add ESP reset switch of button to joystick hardware

    I found these docs helpful

    ESP8266 Modes + configuring

    ESP8266WiFi library definitions for Arduino

    ESP8266 libraries on github

  • Tiny motor thrust

    Sophi Kravitz04/05/2018 at 17:06 1 comment

    Forgot to mention that I measured thrust the other day. This is a 3.7V motor at 40,000 rpm.

    Nontechnical way to describe thrust is the amount of force (unit grams) it takes to move the mass (blimp gondola) out of the way. 

    The real definition is the perpendicular force to the load measured in newtons, or the amount needed to accelerate 1 kilogram of mass at the rate of 1 meter per second per second. Source: wikipedia

    For later:

  • Blimp rev 3

    Sophi Kravitz04/05/2018 at 01:01 4 comments

    Putting this PCB together has been quite a journey.

    While soldering QFNs I broke down and purchased a microscope and a hot air tool. The hot air tool was really cheap and is already loudly rattling after only a month in the shop. 

    I just received a board back from @oshpark that has some new accoutrements:

    • 0.8mm thickness
    • Tag Connect connections! (working!)
    • ADP2504 buck boost 
    • SOIC footprint motor drivers 

    It is all working well and it is the correct weight.

    Things to fix in next rev:

    • Connect PGND (pin 9) on motor drivers to ground (FACEPALM)
    • Connecting points for the motors are covered in solder mask (??)
    • Fix lag in comms between joystick and blimp (code? power problems? idk)
    • Measure current accurately with Astro Flight Wattmeter to get sense of battery curve

  • Gotchas WTF

    Sophi Kravitz02/09/2018 at 17:50 7 comments

    I designed an intermediary board to test out a new buck-boost voltage regulator, new motor driver, and a tag connect cable. For those of you in the ESPxxx forum, this is v2 intermediary board with EN tied to VBATT.

    Here's the schematic, and the layout.

    I intend to run the board with a single cell Lithium battery no less than 3.6V.

    For testing, I am using a benchtop power supply (adjustable V, 3A) or a wallwart (5V, 1.6A).

    The new voltage regulator, ADP2504, can provide a current output (see diagram on page 6) of over 800mA at VIN 3.6V. The inductor is rated for 700mA. Capacitors are X5R type.

    Screenshot of ADP2504 schematic::

    So far, I have populated the board with the ADP and the ESP-12S.

    These two weird things are happening:

    With power input from benchtop > 4.6V, ESP is able to program and hold the program. Under 4.6V, it is iffy, meaning that the program does not run all the time. Same (expected) results with wallwart at 5V. 

    Current draw after ESP reset is less than 60mA, but sometimes (often at lower voltage) the current draw jumps up to as much as 210mA.

    Does anyone have an idea why this could be happening? 

    UPDATE: benchtop power supply is wonky and gives inconsistent readings, shuts off randomly, and probably puts out  inconsistent power. My best guess is that its constant current output is stuck on something not desirable. I've had it for over 8 years, so....

    To add to the gotchas:

    • New Macbook Pro is incompatible with anything FTDI (seriously WTF)
    • Fluke 16 measures a full 0.1V higher than the benchtop - no clue what is accurate now. 
    • 3VDC wall wart with indecipherable 2008 cell phone end now chopped off puts out something definitely not 3V!
    • Brand new air gun is making a horrible death rattle.


    The ESP8266 can source 12mA on each GPIO pin. Maximum Drive Capability spec page 15.

    Grabbed this from the forums:

    12mA per pin source

    20mA per pin sink

    Total: 12mA x 16 GPIO

  • Intermediate Step:: PCB to test Tag-connect, motor driver, and new buck-boost

    Sophi Kravitz01/15/2018 at 15:02 0 comments

    I decided to go the route of a redesign on a couple of components. It was obvious that the voltage drop in the original voltage regulator was causing the regulator to be a steady 3.3V, especially as the single cell battery dropped below 3.7V. This caused the the ESP to reset occasionally. 

    I've chosen an Analog Devices buck-boost regulator to replace the AP2112. Yes it costs $1.57 more than something else, but this one has a lot of documentation, and is more likely to work the first time.

    After @Ted Yapo commented on my last log, I also realized that the fan motor driver I chose has a high voltage saturation need on the two outputs, limiting the power actually available to the motor itself. I've used fan drivers for other projects and like the simplicity of the part, but I redesigned the board to include an actual brushed motor driver.

    I made a square, somewhat spread-out PCB to test the new features, it's an intermediate step before putting all these new parts on the board and having no space to probe. 

    I sent it off last night to @oshpark's super swift service. It includes:

    • Tag Connect layout! >> this one I'm really excited about
    • New buck-boost >> already realized I forgot to put the thermal vias in
    • New motor driver >> only one, so the the buck-boost won't be getting that hot anyway :)
    • On-off linear switch (replaces annoying momentary)

View all 21 project logs

Enjoy this project?



Frank Buss wrote 11/28/2018 at 23:56 point

Maybe interesting for you:
Looks like it flies a bit more stable than your blimp :-)

  Are you sure? yes | no

Xasin wrote 10/06/2018 at 08:56 point

D'aww, this is such a nice project. The controller you have there certainly looks cool, and the joystick from adafruit has style!

I see you're using a ESP-12 though, with a somewhat heavy metal casing. There's always the ESP-Pico, a ESP32 SIP without metal casing, and it might reduce weight and PCB footprint by a bit. It is a ESP32 though >.<

What protocol will you use to communicate? HTTP with the ESP acting as server or client?
I've had some success using MQTT for such systems, if you're still looking!

  Are you sure? yes | no

GB Clark II wrote 10/04/2018 at 22:17 point

I see no answer to your question regarding trace units in Eagle, they are what ever your have your grid set to.   Mils, mm, inches, etc.  They change each time you change your grid units.  Let's say you have a grid of 100 mils, and a trace of 100 mils, and you change to inches, you'll have a trace of 0.1 inches.

  Are you sure? yes | no

Sophi Kravitz wrote 10/05/2018 at 14:21 point

Thanks GB!

  Are you sure? yes | no

AVR wrote 04/05/2018 at 17:08 point

I already want one even though its not finished yet!!!!

  Are you sure? yes | no

Sophi Kravitz wrote 12/11/2017 at 03:55 point

I KNOW! Aren't they cool? :)

  Are you sure? yes | no

Anool Mahidharia wrote 12/04/2017 at 05:57 point

The battery charging circuit is dead weight to carry. Why not keep it separate/external ?

  Are you sure? yes | no

Sophi Kravitz wrote 12/04/2017 at 20:33 point

Hey Anool! I anticipate a lot of quick changes, so I want the battery to stay on the board. 

  Are you sure? yes | no

Anool Mahidharia wrote 12/05/2017 at 06:42 point


  Are you sure? yes | no

Sophi Kravitz wrote 10/22/2017 at 22:05 point

:) I'm excited too, I think making the circuit light enough to float is going to be tough!

  Are you sure? yes | no

Anil Pattni wrote 10/22/2017 at 20:35 point

This is so cool, I've been wanting to make a R/C blimp for the longest time. :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates