Tabla de contenido:

Controle el gesto de su dron en $ 10: 4 pasos
Controle el gesto de su dron en $ 10: 4 pasos

Video: Controle el gesto de su dron en $ 10: 4 pasos

Video: Controle el gesto de su dron en $ 10: 4 pasos
Video: Por eso no compren un Drone sin antes saber usarlo 😂 2024, Noviembre
Anonim
Image
Image
Controle el gesto de su dron en $ 10
Controle el gesto de su dron en $ 10
Controle el gesto de su dron en $ 10
Controle el gesto de su dron en $ 10

¡Este instructivo es una guía para transformar su Drone R / C en un Drone controlado por gestos en menos de $ 10!

Soy una persona que está muy inspirada por las películas de ciencia ficción y trato de hacer que la tecnología mostrada en la película en la vida real. Este proyecto es una inspiración de dos de esas películas: "STAR WARS: El Imperio Contraataca" y "Proyecto Almanaque". En ambas películas, ves un objeto volador (nave estelar X-wing y un dron R / C) que fueron controlados solo con movimientos de la mano. Esto me inspiró a hacer algo similar …

Obviamente, no soy dueño del X-wing, así que, desafortunadamente, tengo que trabajar con mi Mini R / C Quadcopter.

Entonces, el plan es: habrá un script de procesamiento de imágenes ejecutándose en mi computadora portátil que buscará continuamente mi mano y rastreará su posición en el cuadro de video. Una vez que obtenga las coordenadas de la mano, enviará la señal respectiva al dron y esto se hará usando Arduino conectado a la computadora portátil junto con un Módulo Transceptor NRF24L01 de 2.4GHz que puede comunicarse directamente con la placa receptora de cualquier Dron R / C.

Suministros

  • Computadora portátil / de escritorio con cámara web y Python instalados. (Estoy usando mi computadora portátil W indows con su cámara web incorporada y ejecutando Python 2.7.14)
  • Cualquier Drone R / C que funcione con una frecuencia de 2,4 Ghz. (JJRC H36 en mi caso)
  • Arduino UNO junto con su cable de programación. (Estoy usando su clon porque es más barato)
  • NRF24L01 Módulo transceptor inalámbrico de antena de 2,4 GHz. (Compré esto desde aquí por solo ₹ 99 ($ 1.38))
  • Placa adaptadora de 3,3 V para módulo inalámbrico 24L01. (Compré esto desde aquí por solo ₹ 49 ($ 0,68))
  • Cables de puente macho a hembra x7

Paso 1: ¡Reúna los suministros

¡Reúna los suministros!
¡Reúna los suministros!

Paso 2: Conexión del módulo NRF con Arduino

Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino
Conexión del módulo NRF con Arduino

Ahora que tiene todas las partes, comencemos con el cableado del módulo NRF con el Arduino.

  1. En primer lugar, inserte el módulo NRF en la ranura proporcionada en el adaptador. Puede consultar la imagen de arriba.
  2. Después de eso, tome los cables macho a hembra y conecte el adaptador NRF a Arduino de la siguiente manera: (consulte el diagrama de circuito anterior)

    • Pin adaptador NRF - Pin Arduino
    • VCC - 5v
    • GND - GND
    • CE - Pin digital 5
    • CSN - Pin analógico 1
    • SCK - Pin digital 4
    • MO - Pin digital 3
    • MI - Pin analógico 0
    • IRQ: no se utiliza
  3. Una vez realizada la conexión, conecte el Arduino a su PC usando el cable USB de programación Arduino y ya casi ha terminado.

Paso 3: ¡Empecemos a programar

¡Empecemos a programar!
¡Empecemos a programar!
¡Empecemos a programar!
¡Empecemos a programar!

¡¡¡Ahora aquí comienza la parte difícil… !!!

No he hecho todo el código por mí mismo. En su lugar, he tomado partes y bits de código de diferentes desarrolladores y los he integrado a todos en uno con algunos ajustes. Por lo tanto, se otorgan los créditos correspondientes a todos los creadores originales.

Puede descargar todos los códigos adjuntos aquí y hacer que funcione. O bien, puede ir a mi Repositorio de Github, donde actualizaré constantemente el último código para un mejor seguimiento.

Seguimiento de la mano:

El clasificador Haar Cascade se utiliza para el seguimiento manual en este proyecto. La cascada de Haar se entrena superponiendo la imagen positiva sobre un conjunto de imágenes negativas. Y estos datos entrenados generalmente se almacenan en archivos ".xml". Puede obtener archivos de clasificador de casi cualquier cosa en Internet o incluso puede crear uno propio como este. Para este proyecto, ya que necesitábamos hacerlo controlado por gestos con las manos, utilicé un clasificador de puño llamado "closed_frontal_palm.xml" hecho por Aravind Nambissan para la detección de mi mano. Puede probar este código ejecutando el código "hand_live.py" en mi repositorio.

Elegir el código NRF24 para que coincida con su dron:

Entonces, de acuerdo con el fabricante y el modelo de su dron, puede consultar el repositorio de Github - "nrf24_cx10_pc" hecho por Perry Tsao para seleccionar el código Arduino apropiado para ejecutar que coincidirá con su frecuencia. Ha hecho un buen tutorial para controlar su CX10 Drone en PC.

Mientras usaba el dron JJRC H36, me referí a otro repositorio de Github, "nrf24_JJRC_H36_pc", que era una bifurcación del repositorio de Perry Tsao creado por Lewis Cornick para controlar su JJRC H36 sobre PC.

Preparando Arduino:

Bifurqué el repositorio de Lewis en mi Github, que puedes clonar si estás trabajando en el mismo dron. Necesita cargar el código "nRF24_multipro.ino" una vez en su Arduino Uno para emparejarlo con su Drone cada vez que ejecutamos nuestro script Python.

Prueba de la comunicación en serie:

En el mismo repositorio, también puede encontrar un código "serial_test.py" que se puede usar para probar la comunicación serial del script Python con Arduino y si su dron se empareja o no. No olvide cambiar el puerto COM en el código de acuerdo con el puerto COM de su placa Arduino.

Integrando todo en un código:

Así que integré todos estos códigos de diferentes desarrolladores e hice mi propio código "handserial.py". Si estás haciendo exactamente lo mismo que yo con exactamente el mismo dron, entonces puedes ejecutar este código directamente y luego puedes controlar tu dron simplemente moviendo tu puño en el aire. El código primero rastrea un puño en el cuadro de video. Dependiendo de la coordenada Y del puño, el código envía el valor del acelerador al dron haciendo que suba o baje y, de manera similar, dependiendo de la coordenada X del puño, el código envía el valor del alerón al dron para que vaya hacia la izquierda o hacia la derecha..

Paso 4: Nota del autor

Hay 4 puntos que me gustaría mencionar especialmente con respecto a este proyecto:

  1. Como se especificó anteriormente, este código no está completamente hecho por mí, pero estoy trabajando en él continuamente y estaría actualizando el código para un mejor seguimiento en mi Repositorio de Github. Entonces, para cualquier consulta o actualización, puede visitar el repositorio o enviarme un ping en Instagram.
  2. Actualmente, estamos usando la cámara web de la computadora portátil que no permite tener la perspectiva de la vista del dron, pero si es necesario, las cámaras montadas en el dron también se pueden usar para el propósito de seguimiento. Esto ayudará a tener una mejor vista y, en última instancia, un mejor control.
  3. Para este proyecto, estoy usando un dron JJRC H36, que es uno de los drones más baratos disponibles en el mercado, por lo que carece de estabilidad giroscópica. Esa es la razón por la que puede sentir que el movimiento en el video es inestable, pero si está utilizando un dron de calidad decente con buena estabilidad, no enfrentará este problema.
  4. Quería jugar con la Visión por Computadora y el control de drones, por eso comencé con este proyecto. Pero después de trabajar en visión artificial, siento que no es la solución óptima para controlar el dron. Por lo tanto, estoy planeando hacer algún tipo de dispositivo tipo guante con sensor Gyro para controlar el dron en el futuro. Así que estad atentos a las actualizaciones …

Si le gustó este tutorial, por favor, comparta y vote por él.

Eso es todo por ahora … Nos vemos pronto la próxima …

Recomendado: