Beacon

The idea here is to send a balloon, but it would be worthless without any load. Thinking about this all for a while I came with a basket with flashing LED beacon. This device is planned to be hanging below the balloon, broadcasting a message in a Morse code and making it visible for some reasonable time .. hopefully hours.

Whole project has two parts – basket itself and electronics. Basket below is designed in a SCAD. Note sign “Sebik #3” – That is to commemorate Sebi’s 13th birthday and #3 stands for our 3rd balloon release.

For reference I am adding OpenScad source as well (my WordPress keeps complaining that adding a .scad file is a security risk so it is here like it is – long). There is obviously quite a space for optimisation, but leaving it for next time.

use <ShortCuts.scad>
use <blimp_parts.scad>

$fn=100;

module Ear() {
    T(0,0,-170)
    Rx(-90)
    difference() {
        linear_extrude(height=3,center=true,convexity=0,twist=0,slices=10)
        minkowski() {
            polygon( points=[[0,0],[0,40],[30,40],[50,20],[50,0]]);
            circle(r=2);
        }
    T(25,25,0)
       cylinder(3, 5, 5, center = true);
    }
}

module InnerFrame() {
    difference() {
        Tz(4)
        scale([1,1,1.2])
        difference() {
            cube(140, center=true);
            scale([1,1,1.2])
            cube(136, center=true);
        }
        Tz(-90)
        tube(0, 0, 0, 180,  100, 100, 10);
        Tz(65)
        tube(0, 0, 0,  50, 120,  58, 30);
    }
}

module Bottom(){
    InnerFrame();
    Tz(60)
    difference() {
        tube(0, 0, 0,  30, 100,  58, 10);
        tube(0, 0, 0, 110,  56,  56, 10);
        Tz(-10)
        tube(0, 0, 0, 100, 100, 100, 10);
    }
    Tz(90)
    tube(0, 0, 0,  30,  58, 58,  2);
    Tz(-80)
    tube(0, 0, 0,  140,  90, 90, 2);
}

module TopSupport(){
     T(89,0,-116.8)
     scale([0.15,0.8,4.9])
     cube(15, center=true);
}

//Top
module Top() {
    TopSupport();
    Rz(90)
    TopSupport();
    Rz(180)
    TopSupport();
    Rz(-90)
    TopSupport();
    Tz(-150) {
      tube(0, 0, 0, 90, 92, 92, 2);
      Tz(60)
      tube(0, 0, 0, 10, 90, 90, 2);
      Tz(0)
      tube(0, 0, 0, 10, 88, 92, 2);
      scale([1,1,0.3])
      difference() {
        sphere(92);
        sphere(88);
        Tz(9)
        tube(0, 0, -1.3, 90, 92, 92, 92);
      }
    }
}

//Ears
module Ears() {
    Ear();
    Rz(90)Ear();
    Rz(180)Ear();
    Rz(270)Ear();
}

//Cap
module Cap(){
    tube(0,0, 106, 10, 64, 64, 6.2);
    Tz(115)
    cylinder(5, 64, 64, center = false);
    Tz(145)
    Rx(180)
    cylinder(30,25,60,$fn=3);
}

module CapHollow() {
    difference() {
        Cap();
        Tz(142)
        Rx(180)
        cylinder(30,25,60,$fn=3);
    }
}

module BlimpyText() {
    radius = 15.6;
    slices = 100;

    text_depth = 0.5;

    circumference = 2 * 3.14159 * radius;
    slice_width = circumference / slices;

    circular_text (slices, text_depth, slice_width, circumference, txt = "Sebik #3", height = 30, radius = 15);
}

Tz(-40) {
  Ears();
  Top();
}
Bottom();
Tz(20)
Rx(180)
scale([6,6,6])
BlimpyText();

Tz(40) {
  CapHollow();
}

module circular_text (slices, text_depth, slice_width, circumference, txt, height, radius) {
    union () {
        for (i = [0:1:slices]) {
            rotate ([0,0,i*(360/slices)]) translate ([0,-radius,0]) intersection () {
                translate ([-slice_width/2 - (i*slice_width) ,0 ,0]) rotate ([90,0,0])
                linear_extrude(text_depth, center = true, convexity = 10)
                text(txt);
                cube ([slice_width+0.1, text_depth+0.1, height], true);
            }
        }
    }
}

Now the electronics part – I had several sessions with Risa on this topic where he finally came up with following diagram:

What you are seeing there is bit bigger than what I thought so please concentrate just on that triplet – set of LEDs on the right side (and relevant cabling. Parts needed:

I suppose some brief description of what’s going on is needed:

  • 1k Ohm resistor is for a the MOSFET jump-start – so it doesn’t gets crazy when NodeMCU boot ups.
  • 2.2 Ohm resistors are for lowering power into LEDs
  • MOSFET is for controlling higher currents – so those are not passing thought sensitive NodeMCU
  • NodeMCU is a low-cost open source IoT platform.

Then we started having a fun with Sebi. First was just a blink test.

Meanwhile the tetrahedron-shaped beacon tip have been printed.

Followed by the main body.

It comes together amazingly.

Ribs are in to provide better structural stability and also to have some platforms for hooking on internal devices at.

Meanwhile parts arrived, while I also bought set of Vera-boards to be able to solder these onto something.

Next was to drill holes in the beacon tip and install those LEDs. Final picture shows those also being glued in with a bit of silicone.

Meanwhile I really struggled with printing that Top part. It really took 3 attempts to do it properly and thanks to an advice from Andrew – the last one worked out as not being printed on a “raft”, but with a “skirt” option only. That finally allowed a separation between the print and scaffold.

Wiring went on and here is a Vera-board with all needed. Again it took me a while to get the proper technique about soldering on that Vera-board, but finally I’ve got it and I was reasonably happy with how that worked out. (Also Risa said that it is not too shabby 😉 )

Time for some testing!

And how that would all work without a proper paint job 🙂 Sebi did a red main colour and Oli highlighted letters.

Not that bad at all, what you think?! 🙂

2 thoughts on “Beacon

  1. That is wonderful!!! I love it that you are documenting this so well and that the boys get to learn and participate (including big boy Serge). The BBBlimp project is such a beautiful project for learning complex problem solving. How did you learn all this stuff?!?

    >

Leave a Reply