Community project

Dron Buscador de QRs

ESP32
Photo of Dron Buscador de QRs
Generated with AI

José Luis Martín (Joe Martin)

Last updated October 24, 2026

This QR code-seeking drone combines an ESP32 flight controller with onboard camera vision to autonomously detect and locate QR codes in flight. The drone uses motor controllers to manage propulsion while the ESP32 processes video frames in real-time, triggering audio feedback via a piezo buzzer when a QR code is successfully decoded.

This guide provides a complete wiring diagram, parts list, and step-by-step assembly instructions to build the drone frame, integrate the flight electronics, and install the camera module. Included firmware handles QR code detection, duplicate filtering, and buzzer alerts, with testing procedures to verify all systems before first flight.

Wiring diagram

Wiring diagram for Dron Buscador de QRs

Gather all the parts

QtyComponent
1

Piezo Buzzer

Small passive piezo buzzer (TDK PS1240) for beeps, tones and alerts. It has no built-in oscillator, so drive one lead with a 3-30 V square wave from a microcontroller pin using tone() or PWM and connect the other lead to ground. It is loudest around 4 kHz and works from about 2 to 10 kHz; driving both leads in antiphase roughly doubles the volume.

Assemble it in 6 steps

1. Monta la estructura y los motores

Atornilla cada motor 2212 a la punta de un brazo del bastidor de 450 mm. Deja las hélices fuera por ahora: los motores pueden arrancar de forma inesperada durante las primeras comprobaciones.

  • Marca cada brazo como delantero izquierdo, delantero derecho, trasero derecho y trasero izquierdo antes de conectar cables.
  • No pongas las hélices todavía; una hélice girando puede cortar la piel o salir despedida.

2. Conecta cada motor a su regulador

Conecta los tres cables del motor 1 a U, V y W del ESC 1; repite con cada motor y su ESC del mismo número. Si más adelante un motor gira al revés, con la batería desconectada intercambia dos de sus tres cables.

  • Mantén los tres cables de cada motor juntos y lejos de las hélices.
  • No conectes una batería mientras manipulas los tres cables del motor.

3. Fija el controlador de vuelo y el receptor

Sujeta el controlador F405 en el centro del bastidor usando separadores y material blando que reduzca vibraciones; la flecha de la placa debe mirar al frente. Conecta M1, M2, M3 y M4 a la entrada PWM de los ESC del mismo número. Conecta 5V y GND del controlador al receptor y une TX del receptor a RX del controlador.

  • Deja la antena del receptor alejada de los cables gruesos de batería y de los ESC.
  • Si el controlador queda girado respecto al frente del dron, el dron puede corregir en la dirección equivocada al despegar.

4. Cablea la batería y el regulador de cámara

Desde la batería LiPo 3S, lleva BAT+ a cada ESC, a VBAT del controlador de vuelo y a VIN del MP1584. Une todos los retornos a GND. Ajusta primero el MP1584 a exactamente 5 V con un multímetro y, solo entonces, conecta VOUT al pin 5V de la ESP32-CAM y GND a GND.

  • Usa cable grueso para batería y ESC; usa cable fino solo para señales y la cámara.
  • No conectes los 11.1 V de la batería directamente a la ESP32-CAM: puede dañarla de inmediato.
  • Las baterías LiPo pueden incendiarse si se cortocircuitan; trabaja sobre una superficie no inflamable y desconecta la batería cuando no estés probando.

5. Monta la cámara que busca QR

Fija la ESP32-CAM mirando hacia delante o ligeramente hacia abajo, sin tapar la lente ni la antena. Conecta una pata del zumbador a GPIO14 y la otra a GND. Alimenta la ESP32-CAM desde los 5 V ya ajustados del MP1584 y comparte su GND con el resto del dron.

  • GPIO14 es la patilla marcada IO14; el zumbador no tiene polaridad, por lo que cualquiera de sus dos patas puede ir a ese pin.
  • Asegúrate de no intercambiar 5V y GND en la cámara; invertirlos puede dañarla.

6. Prueba antes de poner las hélices

Con el dron elevado sobre una base y sin hélices, revisa que la cámara queda estable, que el zumbador hace dos pitidos al leer un QR y que cada motor corresponde a su brazo. Coloca las cuatro hélices solo después de confirmar el sentido de giro y la posición de cada motor.

  • Usa un QR grande, mate y bien iluminado para la primera prueba; la cámara necesita que el código ocupe una parte clara de la imagen.
  • Nunca sostengas el dron con la mano mientras pruebas motores o hélices.

Review all connections

1. Connections between "buzzer_alert" and "ESP32"

Functionbuzzer_alertESP32
pwmSIG → aviso sonoro al encontrar un QRGPIO 14
groundGND → retorno del avisadorGND

Deploy the firmware

#include <Arduino.h>
#include <ESP32QRCodeReader.h>

constexpr int BUZZER_PIN = 14;
ESP32QRCodeReader reader(CAMERA_MODEL_AI_THINKER);

void signalQrFound() {
  tone(BUZZER_PIN, 4000, 160);
  delay(190);
  tone(BUZZER_PIN, 4000, 160);
}

void qrTask(void *pvParameters) {
  QRCodeData qrCodeData;
  String lastPayload = "";

  for (;;) {
    if (reader.receiveQrCode(&qrCodeData, 250)) {
      if (qrCodeData.valid) {
        String payload = String(reinterpret_cast<const char *>(qrCodeData.payload));
        if (payload != lastPayload) {
          lastPayload = payload;
          Serial.print("QR encontrado: ");
          Serial.println(payload);
          signalQrFound();
        }
      } else {
        Serial.println("Se detectó una imagen, pero el QR no se pudo leer.");
      }
    }
    vTaskDelay(pdMS_TO_TICKS(20));
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(BUZZER_PIN, OUTPUT);
  noTone(BUZZER_PIN);

  Serial.println();
  Serial.println("Iniciando la cámara y el lector de QR...");
  reader.setup();
  reader.beginOnCore(1);
  xTaskCreate(qrTask, "qrTask", 6144, nullptr, 4, nullptr);
}

void loop() {
  delay(1000);
}

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik