Mark your Quad like the "Big boys"

ArmyVet

Well-Known Member
Says the FAA.

New FAA rule on registration location

Your numbers now have to be externally displayed.

Federal Register – 13 Feb 19
External Marking Requirement for Small Unmanned Aircraft

This interim final rule requires small unmanned aircraft owners to display the unique identifier assigned by the FAA upon completion of the registration process (registration number) on an external surface of the aircraft. Small unmanned aircraft...

SO GET THE FANCY CALLIGRAPHY GOING
 
I've been registered for a year now. Who's gonna stand over my shoulder to make sure I 'mark' my quads? Donald? McConnell? Anyone? How about no one! Maybe Homeland Security using TSA officers or maybe The Secret Service or FBI or CIA or NSA? They are all with nothing to do but see that I put my number n my quads. The best advice? Don't fly your quads near an airport and you should be fine!
 
Labeling it inside seemed silly, so Sylvester has always had his on the outside.

sylvestersticker.jpg


I always figured on taking a bigger drone to a graphics place with the number written down and saying, "Let's make this think look REALLY COOL and incorporate the number."
 
Yah mildly annoying, but guess it gives me another thing to use the 3d printer for will post it here once I come up with quad plate :) . Just need to find that registration paper and make sure that's current.
 
Below is OpenSCAD code for making a simple block with the text extruded from it probably just going to try and find a flat spot to double side tape this down.

To use grab openscad here http://www.openscad.org/ paste the text below into a new file and update the registration code at the top to match your FAA registration number, refresh the model with F5 and if it looks good render to an STL with F6 then hit the STL button near top of the interface to get your file (pass it through a slicer from there like any other STL for printing).

Code:
// LetterBlock.scad - Basic usage of text() and linear_extrude()
FAARegistration = "FA3P4FRKKY";

// Module instantiation
LetterBlock(FAARegistration);

// Module definition.
// size=30 defines an optional parameter with a default value.
module LetterBlock(letter, size=30) {
    difference() {
        translate([0,0,size/4]) roundedcube([size*7,size,size/4], center=true, radius=2, apply_to="zmax");
        translate([0,0,8]) {
            // convexity is needed for correct preview
            // since characters can be highly concave
            linear_extrude(height=20, convexity=8)
                text(letter,
                     size=size*22/30,
                     font="Bitstream Vera Sans",
                     halign="center",
                     valign="center");
        }
    }
}

echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.


// Higher definition curves
$fs = 0.01;

module roundedcube(size = [1, 1, 1], center = false, radius = 0.5, apply_to = "all") {
    // If single value, convert to [x, y, z] vector
    size = (size[0] == undef) ? [size, size, size] : size;

    translate_min = radius;
    translate_xmax = size[0] - radius;
    translate_ymax = size[1] - radius;
    translate_zmax = size[2] - radius;

    diameter = radius * 2;

    module build_point(type = "sphere", rotate = [0, 0, 0]) {
        if (type == "sphere") {
            sphere(r = radius);
        } else if (type == "cylinder") {
            rotate(a = rotate)
            cylinder(h = diameter, r = radius, center = true);
        }
    }

    obj_translate = (center == false) ?
        [0, 0, 0] : [
            -(size[0] / 2),
            -(size[1] / 2),
            -(size[2] / 2)
        ];

    translate(v = obj_translate) {
        hull() {
            for (translate_x = [translate_min, translate_xmax]) {
                x_at = (translate_x == translate_min) ? "min" : "max";
                for (translate_y = [translate_min, translate_ymax]) {
                    y_at = (translate_y == translate_min) ? "min" : "max";
                    for (translate_z = [translate_min, translate_zmax]) {
                        z_at = (translate_z == translate_min) ? "min" : "max";

                        translate(v = [translate_x, translate_y, translate_z])
                        if (
                            (apply_to == "all") ||
                            (apply_to == "xmin" && x_at == "min") || (apply_to == "xmax" && x_at == "max") ||
                            (apply_to == "ymin" && y_at == "min") || (apply_to == "ymax" && y_at == "max") ||
                            (apply_to == "zmin" && z_at == "min") || (apply_to == "zmax" && z_at == "max")
                        ) {
                            build_point("sphere");
                        } else {
                            rotate =
                                (apply_to == "xmin" || apply_to == "xmax" || apply_to == "x") ? [0, 90, 0] : (
                                (apply_to == "ymin" || apply_to == "ymax" || apply_to == "y") ? [90, 90, 0] :
                                [0, 0, 0]
                            );
                            build_point("cylinder", rotate);
                        }
                    }
                }
            }
        }
    }
}

IMG_20190218_234116_crop_604x604.jpg

Easier to read in real life but can get some idea from the photo. Maybe will make one with the letters fully cut out
 
Last edited:
I just typed it up on my DYMO machine and printed out as many strips as I needed.
I have one of those around here somewhere but seems like I can never find the tape and always running out, certainly works if you have it. It's only about a 10 minute print though for such a small flat thing so not too terrible on the 3d printer either.
 
I use openscad, so I personalized wafflejock's label. His label is bigger than my build plate, and when I tried using a smaller "size" parameter, the letters moved off the block. So, instead, I put "scale([.5,.5,.5])."

It's still way too big for a spark, so I think I'll stick to the label it already has. Maybe it can go on the case.

fa3fc9pkmx.jpg


Code:
// LetterBlock.scad - Basic usage of text() and linear_extrude()
FAARegistration = "FA3FC9PKMX";

// Module instantiation
scale([.5,.5,.5]) LetterBlock(FAARegistration);

// Module definition.
// size=30 defines an optional parameter with a default value.
module LetterBlock(letter, size=30) {
    difference() {
        translate([0,0,size/4]) roundedcube([size*8,size,size/4], center=true, radius=2, apply_to="zmax");
        translate([-4,0,8]) {
            // convexity is needed for correct preview
            // since characters can be highly concave
            linear_extrude(height=20, convexity=8)
                text(letter,
                     size=size*22/30,
                     font="Bitstream Vera Sans",
                     halign="center",
                     valign="center");

        }
                    translate([100,0,12]) scale([0.27,0.27,1])surface(file="BFEFootprint50x63.png", invert=true, center=true);
    }
}

echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.


// Higher definition curves
$fs = 0.01;

module roundedcube(size = [1, 1, 1], center = false, radius = 0.5, apply_to = "all") {
    // If single value, convert to [x, y, z] vector
    size = (size[0] == undef) ? [size, size, size] : size;

    translate_min = radius;
    translate_xmax = size[0] - radius;
    translate_ymax = size[1] - radius;
    translate_zmax = size[2] - radius;

    diameter = radius * 2;

    module build_point(type = "sphere", rotate = [0, 0, 0]) {
        if (type == "sphere") {
            sphere(r = radius);
        } else if (type == "cylinder") {
            rotate(a = rotate)
            cylinder(h = diameter, r = radius, center = true);
        }
    }

    obj_translate = (center == false) ?
        [0, 0, 0] : [
            -(size[0] / 2),
            -(size[1] / 2),
            -(size[2] / 2)
        ];

    translate(v = obj_translate) {
        hull() {
            for (translate_x = [translate_min, translate_xmax]) {
                x_at = (translate_x == translate_min) ? "min" : "max";
                for (translate_y = [translate_min, translate_ymax]) {
                    y_at = (translate_y == translate_min) ? "min" : "max";
                    for (translate_z = [translate_min, translate_zmax]) {
                        z_at = (translate_z == translate_min) ? "min" : "max";

                        translate(v = [translate_x, translate_y, translate_z])
                        if (
                            (apply_to == "all") ||
                            (apply_to == "xmin" && x_at == "min") || (apply_to == "xmax" && x_at == "max") ||
                            (apply_to == "ymin" && y_at == "min") || (apply_to == "ymax" && y_at == "max") ||
                            (apply_to == "zmin" && z_at == "min") || (apply_to == "zmax" && z_at == "max")
                        ) {
                            build_point("sphere");
                        } else {
                            rotate =
                                (apply_to == "xmin" || apply_to == "xmax" || apply_to == "x") ? [0, 90, 0] : (
                                (apply_to == "ymin" || apply_to == "ymax" || apply_to == "y") ? [90, 90, 0] :
                                [0, 0, 0]
                            );
                            build_point("cylinder", rotate);
                        }
                    }
                }
            }
        }
    }
}
 
Yah there is a trade off in how fine you can print these things (keeping the text big enough to be legible but small enough to not make it a big honking part). Think the arm is actually the only flat long space without something else already strapped to it on my quad at this point too. Was thinking of maybe doing one that's split line so half the code up top and half the code on bottom then would be more of a square instead of a stripe. (or can get really crazy and just write the letters/numbers all over a cube :) ) . Glad to see you gave it a shot though.
 
I would have thought that further explanation would not be required. Nothing "Draconian" here.

Be that as it may:

Excerpt from FAA.
According to the agency's posting of the rule change on FAA.gov:

Law enforcement officials and the FAA's interagency security partners have expressed concerns about the risk a concealed explosive device might pose to first responders upon opening a compartment to find a drone's registration number.

Protecting first responders should always be a responsibility all citizens share. Those brave individuals put their lives on the line regularly for all of us. As I mentioned above, it's certainly not a hardship to make a new label and put it outside on the aircraft.

Fini.
 
Sorry I just fail to see how having a number stamped on the outside of this thing is going to help anyone, if I saw a major issue with it I just wouldn't comply, it's a minor annoyance but the justification seems pretty silly to me. If a first responder is in a situation where a concealed explosive is in a quadcopter what stops a bad actor from remote triggering the device with a trigger/switch instead of with something on board that happens on removal... how has any of this changed from before people had quadcopters to now? People could presumably remotely detonate a bomb with a cell phone since cell phones have been a thing.

It's not really that the rule causes me any hardship it just seems like another silly rule to slap someone with when you catch them doing something you really don't want them doing, but why waste everyones time with that why not just make the punishment match the crime. Also I just don't understand the "justification".

---

To clarify too appreciate you posting it I realize this isn't your rule and you're just informing us all.

---

After --- after thought don't these people know we cut centimeters off of wire to save weight, where is this magical quadcopter packed with C4 that flies for days.
 
Yea. If I was going to put an explosive device in a drone, you wouldn't need to open the battery compartment to set it off. Besides, where on even something like a phantom would you put a bomb?

This is just some bureaucrat trying to look like he is doing something constructive.
 
Last edited:
I try to think in "percentages or degrees" If it helps 10% of the time and does not infringe on anyone's rights. Then what is the harm. Sure, we can come up with scenarios that the numbers wont help and some that it will.

I kind of like the idea of having a "tail number" on my quads:)

With the amount of idiots out there doing stupid things. We have to try something. Those same idiots will force the gubment to legislate the hobby onto oblivion. Then we can all reminisce about having to number our quads back in the day:oops:
 
I suppose if an official sees the number they can relax and know this is somebody who knows what they're doing. Good thing I don't have a (very big) evil streak!
 
Back
Top