I host some drone races at times and I make gates with hula-hops. I fit some led stripes in there and they glow nicely.

We ONLY run micro drones, F36, tinny whoop and those. And mostly indoors (although something that works outdoors would be nice)

I use small nodeMCU boards for lots of projects and I was wondering what would be the best approach to detect the drone.
I'd like to get some advice before starting my tests.

Some of my ideas are:

  • Infrared emitter and receiver at the other side of the circle: I have the impression that the drone can pass by without being noticed, maybe two pairs of emitter / sensors but.. sounds fiddly. And not sure about its performance outdoors.
  • Ultrasounds: I think the drone will pass too fast for it to see it
  • Hall effect: Gluing an small magnet to the drone but ... runners will hate it.

What do you think guys?
Are there any better alternatives?

  • \$\begingroup\$ I think there are already magnets in the drone motors. You could try if a coil works. Have you considered RFID? \$\endgroup\$
    – Jeroen3
    Commented Sep 28, 2018 at 8:36
  • 3
    \$\begingroup\$ You only want to count objects (drones, birds...) or also identify the drone? \$\endgroup\$
    – Andy
    Commented Sep 28, 2018 at 8:49
  • \$\begingroup\$ It's not trivial... normal rfids have a very short range (you should connect an aerial to extend the range) and they are too slow for this purpose \$\endgroup\$ Commented Sep 28, 2018 at 9:23
  • \$\begingroup\$ I also thing that RFID has to stay in the sensor, not just pass by. Identifying would be perfect but at least knowing it passed is Ok \$\endgroup\$
    – javirs
    Commented Sep 28, 2018 at 10:11
  • 1
    \$\begingroup\$ Please share your test result with the suggested answers later on. Thanks. \$\endgroup\$
    – Zy Gan
    Commented Sep 28, 2018 at 15:34

3 Answers 3


Detecting the drone by having it break a light beam sounds like the way to go. It should be easy enough to build emitters and detectors into the hoop. If the drones are small relative to the size of the hoop, then you need multiple light beams so that any drone within the hoop will break at least one of them.

Three emitters might be enough with sufficient detectors spaced around. You blip each emitter for a short time, then look for the signal from the detectors immediately before each blip, during, and after. There needs to be enough of a rise during the blip relative to before and after to consider the particular beam unbroken.

Each blip shouldn't need to be more than a microsecond or maybe a few, depending on the settling time and therefore noise immunity you want from the detectors. Let's say doing a complete blip with before, after, and during measurements takes 20 µs. Actually I think it could easily be half that, but I'm tyring to start with pessimistic values to see where this is at. With 3 emitters, that means you can check all light beams every 60 µs, or 17 kHz rate. That should be good enough.

To do a sanity check on that, let's see how fast a drone would have to be going to move 10 mm during one scan cycle. (10 mm)/(60 µs) = 167 m/s. That sounds quite fast for a drone, and they should occlude a beam over more than just 10 mm. Note that at the speed of sound, a drone would only move about 20 mm during one scan cycle.


It sounds as if you want something simple, maybe as simple as possible even.

Here's my take on it:

  • Attach a piezo speaker on every drone, say one of these or these, these particular ones in the links have wrong frequency range... I might have to edit the links.
    • I'd go with the first link because it takes less space.
  • Make an oscillator for every drone in the 20-30 kHz range
    • If you got N drones, then you'll need N different frequencies
  • Place a microphone near every hula-hops
    • A typical microphone might be able to record up to 30 kHz, I don't know. I'm no audiophile.
    • The reason for why I say 30 kHz is so you won't hear it, if you're okay with hearing beeps then you can lower it to 10-20 kHz which all microphones should be able to detect.
  • Add some cardboard around the hula-hops so the drones are forced to go through the hula-hops.

If you do have the setup above, then you can, for an example, place a µC on every hula-hop with a battery and simply run FFT on the µC. When it detects a beep, say 25 kHz becoming louder and then becoming fainter, then it must've passed through the hula-hop, right? It's very easy to set up.

A simple setup for the FFT would be to sample the microphone at 64 kHz and then do a 64 point FFT and throw away the upper 31 values. Then you will be able to see every amplitude (and phase) for every kHz, so 1 kHz, 2 khz .... and up to 32 kHz. With 10 drones then one can make a beeping sound at 20 kHz, another at 21 kHz, another at 22 kHz and etc.

Another simple setup would be to use a Goertzel filter for every channel, this would be easier to implement and more efficient to execute on whatever µC you'd use. The basic equation you'd use would be G = x + wG where G and w are complex and x is your sampled voltage of the microphone. w would be equal to the rotational frequency. The magnitude of G would increase as a particular drone would come closer to the hula-hop, and then decrease as it passed. Look in the link above for more info about the value for w. Keep in mind that the magnitude of w should be slightly less than 1. Then you'd use another G and another w for another channel for some other drone. Very easy to set up.

Problems that could arise from this audible solution is the Doppler effect. In other words, the frequency of the beeps will shift as the drones move towards and away from the microphones. This means that their bins in the FFT or Goertzel filter will seep through to each other. But I don't think it will be a major problem.

  • 3
    \$\begingroup\$ This sounds like a nice setup, but won't it trigger if the drone merely flies near the microphone (and not necessarily through the hula hoop)? \$\endgroup\$ Commented Sep 28, 2018 at 13:34
  • \$\begingroup\$ also ambient get noisy with drones around, and we have to solder stuff to the droens ... dunno.. Im reluctant to this \$\endgroup\$
    – javirs
    Commented Sep 28, 2018 at 14:35
  • \$\begingroup\$ In addition to not being specific as to "through" the pwm motor drives may already be making noise in this range - those that aren't ultrasonic have an audible whine. This will depend on the flight controller and firmware, possibly customized. And then there's prop noise. \$\endgroup\$ Commented Sep 28, 2018 at 15:32
  • \$\begingroup\$ @JohnGo-Soco That's correct, hence why I said "Add some cardboard around the hula-hops so the drones are forced to go through the hula-hops.". - A crude solution attempt at detecting if it flies through the hula-hop would be to make sure that the beep from the piezo speaker goes above some threshold and then add a cone around the microphone where the cone is directed towards the center of the hula-hop. \$\endgroup\$ Commented Sep 28, 2018 at 15:33
  • \$\begingroup\$ @javirs I don't follow you. Or rather, I don't think there's a problem with what you think is a problem. \$\endgroup\$ Commented Sep 28, 2018 at 15:52

I assume that there will be enough ambient light, or better, leds on the hula is facing to hula's closed area. Put 2 visible light sensor on the hula by placing them facing themselves 180° and their seeing angle is parallel to hula's closed area. When a drone passes through, pattern of output of sensors will be a well defined pattern: They will have the lowest measurement at the same time.

  • \$\begingroup\$ that sounds actually nice \$\endgroup\$
    – javirs
    Commented Sep 28, 2018 at 14:36
  • \$\begingroup\$ That's unlikely to work in the real world, especially without a defined light source also inside the hoop (better a coordinated one as Olin proposed). \$\endgroup\$ Commented Sep 28, 2018 at 15:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.