Tabla de contenido:

Drone Arduino con GPS: 16 pasos
Drone Arduino con GPS: 16 pasos

Video: Drone Arduino con GPS: 16 pasos

Video: Drone Arduino con GPS: 16 pasos
Video: Quadcopter Arduino Drone with GPS and Live Video Feed 2024, Noviembre
Anonim
Drone Arduino con GPS
Drone Arduino con GPS

Nos propusimos construir un drone quadcopter con vista en primera persona (FPV) controlado por Arduino y estabilizado, habilitado para GPS, con funciones de retorno a casa, ir a coordenadas y retención de GPS. Asumimos ingenuamente que combinar los programas Arduino existentes y el cableado para un quadcopter sin GPS con los de un sistema de transmisión GPS sería relativamente sencillo y que podríamos pasar rápidamente a tareas de programación más complejas. Sin embargo, una cantidad sorprendente tuvo que cambiar para combinar estos dos proyectos y, por lo tanto, terminamos haciendo un quadcopter FPV habilitado para GPS, sin ninguna de las funciones adicionales.

Hemos incluido instrucciones sobre cómo replicar nuestro producto si está satisfecho con el quadcopter más limitado.

También hemos incluido todos los pasos que dimos en el camino hacia un quadcopter más autónomo. Si se siente cómodo profundizando en Arduino o si ya tiene mucha experiencia con Arduino y le gustaría tomar nuestro punto de parada como un punto de partida para su propia exploración, entonces este Instructable también es para usted.

Este es un gran proyecto para aprender algo sobre la construcción y codificación de Arduino, sin importar cuánta experiencia tenga. Además, es de esperar que te vayas con un dron.

La configuración es la siguiente:

En la lista de materiales, se requieren partes sin asterisco para ambos objetivos.

Las piezas con un asterisco son necesarias solo para el proyecto inconcluso de un quadcopter más autónomo.

Las piezas con dos asteriscos son necesarias solo para el cuadricóptero más limitado.

Los pasos comunes a ambos proyectos no tienen marcador después del título.

Los pasos que solo se requieren para los cuadricópteros no autónomos más limitados tienen "(Uno)" después del título.

Los pasos que solo se requieren para el quadcopter autónomo en progreso tienen "(Mega)" después del título.

Para construir el quad basado en Uno, siga los pasos en orden, omitiendo los pasos con "(Mega)" después del título.

Para trabajar en el quad basado en Mega, siga los pasos en orden, omitiendo los pasos con "(Uno)" después del título.

Paso 1: Reúna los materiales

Componentes:

1) Un marco de cuadricóptero (el marco exacto probablemente no importe) ($ 15)

2) Cuatro motores sin escobillas de 2830, 900kV (o similares) y cuatro paquetes de accesorios de montaje (4x $ 6 + 4x $ 4 = $ 40 en total)

3) Cuatro ESC UBEC 20A (4x $ 10 = $ 40 en total)

4) Una placa de distribución de energía (con conexión XT-60) ($ 20)

5) Una batería LiPo de 3 s, 3000-5000mAh con conexión XT-60 (3000mAh corresponde a aproximadamente 20 minutos de tiempo de vuelo) ($ 25)

6) Muchos propulsores (estos se rompen mucho) ($ 10)

7) Un Arduino Mega 2560 * ($ 40)

8) Un Arduino Uno R3 ($ 20)

9) Un segundo Arduino Uno R3 ** ($ 20)

10) Un protector de GPS Arduino Ultimate (no necesita el protector, pero usar un GPS diferente requerirá un cableado diferente) ($ 45)

11) Dos transceptores inalámbricos HC-12 (2x $ 5 = $ 10)

12) Un giroscopio / acelerómetro MPU-6050, 6DOF (grado de libertad) ($ 5)

13) Un Turnigy 9x 2.4GHz, par de transmisor / receptor de 9 canales ($ 70)

14) encabezados hembra Arduino (apilables) ($ 20)

15) Cargador de equilibrio de batería LiPo (y adaptador de CC de 12 V, no incluido) ($ 20)

17) Cable adaptador USB A a B macho a macho ($ 5)

17) cinta adhesiva

18) Tubo retráctil

Equipo:

1) Un soldador

2) soldadura

3) epoxi plástico

4) más ligero

5) pelacables

6) Un juego de llaves Allen

Componentes opcionales para la transmisión de video FPV (vista en primera persona) en tiempo real:

1) Una cámara FPV pequeña (esto se vincula a la bastante barata y de mala calidad que usamos, puede sustituirla por una mejor) ($ 20)

2) Par de transmisor / receptor de video de 5.6GHz (modelos 832 usados) ($ 30)

3) Batería LiPo de 500mAh, 3s (11.1V) ($ 7) (usamos con un conector banana, pero recomendamos en retrospectiva que use la batería vinculada, ya que tiene un conector compatible con el transmisor TS832 y, por lo tanto, no lo hace) no requiere soldadura).

4) 2 baterías LiPo de 1000mAh 2s (7.4V) o similar ($ 5). El número de mAh no es crítico siempre que sea superior a 1000 mAh o menos. La misma afirmación anterior se aplica al tipo de enchufe de una de las dos baterías. El otro se utilizará para alimentar el monitor, por lo que tendrá que soldar pase lo que pase. Probablemente sea mejor conseguir uno con un conector XT-60 para esto (eso es lo que hicimos). Un enlace para ese tipo está aquí: 1000mAh 2s (7.4V) LiPo con enchufe XT-60

5) Monitor LCD (opcional) ($ 15). También puede usar un adaptador AV-USB y un software de copia de DVD para ver directamente en una computadora portátil. Esto también brinda la opción de grabar videos y fotos, en lugar de solo verlos en tiempo real.

6) Si ha comprado baterías con enchufes diferentes de los vinculados, es posible que necesite adaptadores adecuados. De todos modos, obtenga un adaptador correspondiente al enchufe de la batería que alimenta el monitor. Aquí es donde conseguir adaptadores XT-60

* = solo para proyectos más avanzados

** = solo para proyecto más básico

Costos:

Si comienza desde cero (pero con un soldador, etc.), sin sistema FPV: ~ $ 370

Si ya tiene un transmisor / receptor RC, un cargador de batería LiPo y una batería LiPo: ~ $ 260

Costo del sistema FPV: $ 80

Paso 2: ensamble el marco

Ensamblar el marco
Ensamblar el marco
Ensamblar el marco
Ensamblar el marco
Ensamblar el marco
Ensamblar el marco

Este paso es bastante sencillo, especialmente si usamos el mismo marco prefabricado que usamos. Simplemente use los tornillos incluidos y junte el marco como se muestra, usando una llave Allen o un destornillador apropiado para su marco. Asegúrese de que los brazos del mismo color estén adyacentes entre sí (como en esta imagen), de modo que el dron tenga una parte delantera y trasera claras. Además, asegúrese de que la parte larga de la placa inferior sobresalga entre los brazos de colores opuestos. Esto se vuelve importante más adelante.

Paso 3: Monte los motores y conecte los Escs

Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs
Montar motores y conectar Escs

Ahora que el marco está ensamblado, saque los cuatro motores y los cuatro accesorios de montaje. Puede usar tornillos incluidos en los juegos de montaje o tornillos que sobraron del marco del cuadricóptero para atornillar los motores y los soportes en su lugar. Si compra los soportes a los que hemos vinculado, recibirá dos componentes adicionales, que se muestran en la imagen de arriba. Hemos tenido un buen rendimiento del motor sin estas piezas, por lo que las dejamos para reducir el peso.

Una vez que los motores estén atornillados en su lugar, coloque con epoxi el tablero de distribución de energía (PDB) en su lugar en la parte superior de la placa superior del marco del cuadricóptero. Asegúrese de orientarlo de manera que el conector de la batería apunte entre los brazos de diferentes colores (paralelos a una de las partes largas de la placa inferior), como se muestra en la imagen de arriba.

También debe tener cuatro conos de hélice con roscas hembra. Déjelos a un lado por ahora.

Ahora saque sus ESC. De un lado saldrán dos cables, uno rojo y otro negro. Para cada uno de los cuatro ESC, inserte el cable rojo en el conector positivo de la PDB y el negro en el negativo. Tenga en cuenta que si utiliza una PDB diferente, este paso puede requerir soldadura. Ahora conecte cada uno de los tres cables que salen de cada motor. En este punto, no importa qué cable ESC conecte con qué cable de motor (¡siempre que esté conectando todos los cables de un ESC con el mismo motor!) Corregirá cualquier polaridad inversa más adelante. No es peligroso si los cables están invertidos; solo da como resultado que el motor gire hacia atrás.

Paso 4: Prepare Arduino y Shield

Prepare Arduino y Shield
Prepare Arduino y Shield
Prepare Arduino y Shield
Prepare Arduino y Shield

Una nota antes de comenzar

Primero, puede optar por soldar todos los cables juntos directamente. Sin embargo, nos pareció invaluable usar encabezados de pines porque brindan mucha flexibilidad para solucionar problemas y adaptar el proyecto. Lo que sigue es una descripción de lo que hicimos (y recomendamos que otros hagan).

Prepara Arduino y shield

Saque su Arduino Mega (o un Uno si hace el quad no autónomo), protector de GPS y encabezados apilables. Suelde el extremo macho de los cabezales apilables en su lugar en el protector del GPS, en las filas de pines paralelos a los pines presoldados, como se muestra en la imagen de arriba. También suelde en encabezados apilables en la fila de pines etiquetada como 3V, CD,… RX. Use un cortador de alambre para recortar el exceso de longitud en los pasadores que sobresalen de la parte inferior. Coloque encabezados masculinos con la parte superior doblada en todos estos encabezados apilables. Estos son los cables a los que soldará los cables para el resto de los componentes.

Coloque el protector del GPS en la parte superior, asegurándose de que los pines coincidan con los del Arduino (Mega o Uno). Tenga en cuenta que si usa el Mega, gran parte del Arduino aún estará expuesto después de colocar el protector en su lugar.

Coloque cinta aislante en la parte inferior del Arduino, cubriendo todas las soldaduras de los pines expuestos, para evitar cualquier cortocircuito mientras el Arduino descansa sobre la PDB.

Paso 5: Conecte los componentes y coloque la batería (Uno)

Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)
Conecte los componentes y coloque la batería (Uno)

El esquema anterior es casi idéntico al realizado por Joop Brooking, ya que basamos en gran medida nuestro diseño en el suyo.

* Tenga en cuenta que este esquema asume un protector de GPS montado correctamente y, por lo tanto, el GPS no aparece en este esquema.

El esquema anterior se preparó utilizando el software Fritzing, que es muy recomendable, especialmente para esquemas que involucran a Arduino. Principalmente usamos partes genéricas que se pueden editar de manera flexible, ya que nuestras partes generalmente no estaban en la biblioteca de partes incluida de Fritzing.

-Asegúrese de que el interruptor del protector de GPS esté en "Escritura directa".

-Ahora conecte todos los componentes de acuerdo con el esquema anterior (¡excepto la batería!) (Nota importante sobre los cables de datos del GPS a continuación).

-Tenga en cuenta que ya conectó los ESC a los motores y la PDB, por lo que esta parte del esquema está lista.

-Además, tenga en cuenta que los datos del GPS (cables amarillos) salen de los pines 0 y 1 del Arduino (no de los pines separados Tx y Rx del GPS). Esto se debe a que, configurado para "Escritura directa" (ver más abajo), el GPS sale directamente a los puertos seriales de hardware en el uno (pines 0 y 1). Esto se muestra más claramente en la segunda imagen de arriba del cableado completo.

-Cuando cablee el receptor RC, consulte la imagen de arriba. Observe que los cables de datos van a la fila superior, mientras que Vin y Gnd están en la segunda y tercera filas, respectivamente (y en la segunda columna de pines más lejana).

-Para hacer el cableado para el transceptor HC-12, el receptor RC y 5V de la PDB a Vin del Arduino usamos encabezados apilables, mientras que para el giroscopio soldamos los cables directamente a la placa y usamos tubos termorretráctiles alrededor del soldar. Puede optar por hacer cualquiera de los componentes, sin embargo, se recomienda soldar directamente al giróscopo, ya que ahorra espacio, lo que hace que la pieza pequeña sea más fácil de montar. El uso de encabezados es un poco más de trabajo por adelantado, pero proporciona más flexibilidad. Soldar cables directamente es una conexión más segura a largo plazo, pero significa que usar ese componente en otro proyecto es más difícil. Tenga en cuenta que si ha utilizado encabezados en el escudo de GPS, todavía tiene una cantidad decente de flexibilidad independientemente de lo que haga. Fundamentalmente, asegúrese de que los cables de datos del GPS en los pines 0 y 1 del GPS sean fáciles de quitar y reemplazar.

Al final de nuestro proyecto, no pudimos diseñar un buen método para unir todos nuestros componentes al marco. Debido a la presión del tiempo de nuestra clase, nuestras soluciones generalmente giraban en torno a cinta de espuma de doble cara, cinta adhesiva, cinta aislante y bridas. Recomendamos encarecidamente que dedique más tiempo a diseñar estructuras de montaje estables si planea que este sea un proyecto a más largo plazo. Dicho todo esto, si solo desea hacer un prototipo rápido, no dude en seguir nuestro proceso. Sin embargo, asegúrese de que el giróscopo esté montado de forma segura. Esta es la única forma en que Arduino sabe lo que está haciendo el quadcopter, por lo que si se mueve en vuelo, tendrá problemas.

Con todo cableado y en su lugar, tome su batería LiPo y deslícela entre las placas superior e inferior del marco. Asegúrese de que su conector apunte en la misma dirección que el conector de la PDB y que de hecho puedan conectarse. Usamos cinta adhesiva para mantener la batería en su lugar (la cinta de velcro también funciona, pero es más molesta que la cinta adhesiva). La cinta adhesiva funciona bien porque se puede reemplazar fácilmente la batería o quitarla para cargarla. Sin embargo, debes asegurarte de pegar la batería con cinta FIRMEZA, ya que si la batería se moviera durante el vuelo, esto podría alterar seriamente el equilibrio del dron. NO conecte la batería a la PDB todavía.

Paso 6: Conecte los componentes y coloque la batería (Mega)

Conecte los componentes y coloque la batería (Mega)
Conecte los componentes y coloque la batería (Mega)
Conecte los componentes y coloque la batería (Mega)
Conecte los componentes y coloque la batería (Mega)
Conecte los componentes y coloque la batería (Mega)
Conecte los componentes y coloque la batería (Mega)

El esquema anterior se preparó utilizando el software Fritzing, que es muy recomendable, especialmente para esquemas que involucran arduino. Principalmente usamos partes genéricas, ya que nuestras partes generalmente no estaban en la biblioteca de partes incluida de Fritzing.

-Tenga en cuenta que este esquema asume un protector GPS correctamente montado y, por lo tanto, el GPS no aparece en este esquema.

-Deslice el interruptor de su Mega 2560 a "Soft Serial".

-Ahora conecte todos los componentes de acuerdo con el esquema anterior (¡excepto la batería!)

-Tenga en cuenta que ya conectó los ESC a los motores y la PDB, por lo que esta parte del esquema está lista.

-Los cables de puente de Pin 8 a Rx y Pin 7 a Tx están ahí porque (a diferencia del Uno, para el que se hizo este escudo), el mega carece de un receptor-transmisor asíncrono universal (UART) en los pines 7 y 8, y por lo tanto tenemos que usar pines seriales de hardware. Hay más razones por las que necesitamos pines seriales de hardware, que se comentarán más adelante.

-Al conectar el receptor RC, consulte la imagen de arriba. Observe que los cables de datos van a la fila superior, mientras que Vin y Gnd están en la segunda y tercera filas, respectivamente (y en la segunda columna de pines más lejana).

-Para hacer el cableado para el transceptor HC-12, el receptor RC y la salida de 5V desde el PDB al Vin del Arduino usamos encabezados apilables, mientras que para el giroscopio soldamos los cables directamente y usamos tubos termorretráctiles alrededor de la soldadura. Puede optar por hacer cualquiera de los componentes. El uso de encabezados es un poco más de trabajo por adelantado, pero proporciona más flexibilidad. Soldar cables directamente es una conexión más segura a largo plazo, pero significa que usar ese componente en otro proyecto es más difícil. Tenga en cuenta que si ha utilizado encabezados en el escudo de GPS, todavía tiene una cantidad decente de flexibilidad independientemente de lo que haga.

Al final de nuestro proyecto, no pudimos diseñar un buen método para unir todos nuestros componentes al marco. Debido a la presión del tiempo de nuestra clase, nuestras soluciones generalmente giraban en torno a cinta de espuma de doble cara, cinta adhesiva, cinta aislante y bridas. Recomendamos encarecidamente que dedique más tiempo a diseñar estructuras de montaje estables si planea que este sea un proyecto a más largo plazo. Dicho todo esto, si solo desea hacer un prototipo rápido, no dude en seguir nuestro proceso. Sin embargo, asegúrese de que el giróscopo esté montado de forma segura. Esta es la única forma en que Arduino sabe lo que está haciendo el quadcopter, por lo que si se mueve en vuelo, tendrá problemas.

Con todo cableado y en su lugar, tome su batería LiPo y deslícela entre las placas superior e inferior del marco. Asegúrese de que su conector apunte en la misma dirección que el conector de la PDB y que de hecho puedan conectarse. Usamos cinta adhesiva para mantener la batería en su lugar (la cinta de velcro también funciona, pero es más molesta que la cinta adhesiva). La cinta adhesiva funciona bien porque se puede reemplazar fácilmente la batería o quitarla para cargarla. Sin embargo, debes asegurarte de pegar la batería con cinta FIRMEZA, ya que si la batería se moviera durante el vuelo, esto podría alterar seriamente el equilibrio del dron. NO conecte todavía la batería a la PDB.

Paso 7: Vincular el receptor

Vincular receptor
Vincular receptor
Vincular receptor
Vincular receptor

Tome el receptor RC y conéctelo temporalmente a una fuente de alimentación de 5 V (ya sea encendiendo el Arduino con USB o alimentación de 9 V, o con una fuente de alimentación separada. No conecte el LiPo al Arduino todavía). Tome el pasador de enlace que viene con el receptor RC y colóquelo en los pines BIND del receptor. Alternativamente, acorte las clavijas superior e inferior en la columna BIND como se muestra en la foto de arriba. Una luz roja debe parpadear rápidamente en el receptor. Ahora tome el controlador y presione el botón en la parte posterior mientras está apagado, como se muestra arriba. Con el botón presionado, encienda el controlador. Ahora la luz parpadeante del receptor debería volverse fija. El receptor está atado. Retire el cable de unión. Si estaba utilizando una fuente de alimentación diferente, vuelva a conectar el receptor a la salida de 5 V del Arduino.

Paso 8: (Opcional) Conecte y monte el sistema de cámara FPV

(Opcional) Conecte y monte el sistema de cámara FPV
(Opcional) Conecte y monte el sistema de cámara FPV
(Opcional) Conecte y monte el sistema de cámara FPV
(Opcional) Conecte y monte el sistema de cámara FPV

Primero, suelde el adaptador XT-60 con los cables de alimentación y tierra del monitor. Estos pueden variar de un monitor a otro, pero la energía casi siempre será roja y el suelo casi siempre negro. Ahora inserte el adaptador con cables soldados en su LiPo de 1000mAh con el enchufe XT-60. El monitor debería encenderse con (normalmente) un fondo azul. ¡Ese es el paso más difícil!

Ahora atornille las antenas de su receptor y transmisor.

Conecte su pequeña Lipo de 500 mAh al transmisor. El pin más a la derecha (justo debajo de la antena) es tierra (V_) de la batería, el siguiente pin a la izquierda es V +. Vienen los tres cables que van a la cámara. Su cámara debe venir con un enchufe tres en uno que encaje en el transmisor. Asegúrese de tener el cable de datos amarillo en el medio. Si usó las baterías a las que nos vinculamos con enchufes diseñados para esto, este paso no debería requerir ninguna soldadura.

Finalmente, conecte su otra batería de 1000 mAh con el cable de salida de CC que vino con su receptor y, a su vez, conéctelo al puerto de entrada de CC de su receptor. Finalmente, conecte el extremo negro del cable AVin que vino con su receptor al puerto AVin de su receptor, y el otro extremo (amarillo, hembra) al extremo macho amarillo del cable AVin de su monitor.

En este punto, debería poder ver una vista de cámara en el monitor. Si no puede, asegúrese de que el receptor y el transmisor estén encendidos (debería ver números en sus pantallas pequeñas) y que estén en el mismo canal (usamos el canal 11 para ambos y tuvimos un buen éxito). Además, es posible que deba cambiar el canal en el monitor.

Monte los componentes en el marco.

Una vez que tenga la configuración funcionando, desenchufe las baterías hasta que esté listo para volar.

Paso 9: Configure la recepción de datos GPS

Configurar la recepción de datos GPS
Configurar la recepción de datos GPS
Configurar la recepción de datos GPS
Configurar la recepción de datos GPS

Conecte su segundo Arduino con su segundo transceptor HC-12 como se muestra en el esquema anterior, teniendo en cuenta que la configuración solo se alimentará como se muestra si se conecta a una computadora. Descargue el código del transceptor provisto, abra su monitor serial a 9600 baudios.

Si utiliza la configuración más básica, debe comenzar a recibir sentencias de GPS si su protector de GPS está encendido y correctamente conectado al otro transceptor HC-12 (y si el interruptor del protector está en "Escritura directa").

Con el Mega, asegúrese de que el interruptor esté en "Soft Serial".

Paso 10: Realice el código de configuración (Uno)

Este código es idéntico al utilizado por Joop Brokking en su tutorial de quadcopter Arduino, y merece todo el crédito por su escritura.

Con la batería desconectada, use el cable USB para conectar su computadora al Arduino y cargue el código de configuración adjunto. Encienda su transmisor RC. Abra su monitor serial a 57600 baudios y siga las instrucciones.

Errores comunes:

Si el código no se carga, asegúrese de que los pines 0 y 1 estén desconectados en el escudo UNO / GPS. Este es el mismo puerto de hardware que usa el dispositivo para comunicarse con la computadora, por lo que debe estar libre.

Si el código omite varios pasos a la vez, verifique que su interruptor de GPS esté en "Escritura directa".

Si no se detecta ningún receptor, asegúrese de que haya una luz roja fija (pero tenue) en su receptor cuando el transmisor esté encendido. Si es así, revise el cableado.

Si no se detecta ningún giroscopio, esto podría deberse a que el giróscopo está dañado o si tiene un tipo de giroscopio diferente al que está diseñado para escribir el código.

Paso 11: Realice el código de configuración (Mega)

Este código es idéntico al utilizado por Joop Brokking en su tutorial de quadcopter Arduino, y merece todo el crédito por su escritura. Simplemente adaptamos el cableado del Mega para que las entradas del receptor correspondieran a los pines correctos de interrupción de cambio de clavija.

Con la batería desconectada, use el cable USB para conectar su computadora al Arduino y cargue el código de configuración adjunto. Abra su monitor serial a 57600 baudios y siga las instrucciones.

Paso 12: calibre los ESC (Uno)

Una vez más, este código es idéntico al código de Joop Brokking. Todas las modificaciones se realizaron en un esfuerzo por integrar el GPS y Arduino y se pueden encontrar más adelante, en la descripción de la construcción del quadcopter más avanzado.

Cargue el código de calibración ESC adjunto. En el monitor de serie, escriba la letra 'r' y presione retorno. Debería comenzar a ver la lista de valores del controlador RC en tiempo real. Verifique que varíen de 1000 a 2000 en los extremos de aceleración, balanceo, cabeceo y guiñada. Luego escribe 'a' y presiona regresar. Deje que se realice la calibración del giróscopo y luego verifique que el giróscopo registre el movimiento del quad. Ahora desconecte el arduino de la computadora, presione el acelerador hasta el final en el controlador y conecte la batería. Los ESC deben realizar ciclos de diferentes tonos de pitidos (pero esto puede ser diferente según el ESC y su firmware). Empuje el acelerador hasta el fondo. Los ESC deben emitir pitidos más bajos y luego permanecer en silencio. Desenchufe la batería.

Opcionalmente, en este punto puede usar los conos que vienen con los paquetes de accesorios de montaje del motor para atornillar firmemente las hélices. Luego ingrese los números 1 - 4 en el monitor en serie para encender los motores 1 - 4 respectivamente, a la potencia más baja. El programa registrará la cantidad de temblores debidos al desequilibrio de los accesorios. Puede intentar remediar esto agregando pequeñas cantidades de cinta adhesiva a un lado o al otro de los accesorios. Descubrimos que podíamos hacer un buen vuelo sin este paso, pero quizás un poco menos eficiente y más ruidoso de lo que habíamos equilibrado los puntales.

Paso 13: Calibrar ESC (Mega)

Este código es muy similar al código de Brokking, sin embargo lo adaptamos (y el cableado correspondiente) para que funcione con Mega.

Cargue el código de calibración ESC adjunto. En el monitor de serie, escriba la letra 'r' y presione regresar. Debería comenzar a ver la lista de valores del controlador RC en tiempo real. Verifique que varíen de 1000 a 2000 en los extremos de aceleración, balanceo, cabeceo y guiñada.

Luego escribe 'a' y presiona regresar. Deje que se realice la calibración del giróscopo y luego verifique que el giróscopo registre el movimiento del quad.

Ahora desconecte el arduino de la computadora, presione el acelerador hasta el final en el controlador y conecte la batería. Los ESC deben emitir tres pitidos bajos seguidos de un pitido alto (pero esto puede ser diferente según el ESC y su firmware). Empuje el acelerador hasta el fondo. Desenchufe la batería.

Los cambios que hicimos a este código fueron cambiar de usar PORTD para los pines ESC a usar PORTA y luego cambiar los bytes escritos en estos puertos para que activemos los pines adecuados como se muestra en el esquema de cableado. Este cambio se debe a que los pines del registro PORTD no están en la misma ubicación en el Mega que en el Uno. No hemos podido probar este código por completo ya que estábamos trabajando con un viejo Mega sin marca que tenía la tienda de nuestra escuela. Esto significaba que, por alguna razón, no todos los pines del registro PORTA podían activar los ESC correctamente. También tuvimos problemas con el uso del operador o igual (| =) en algunos de nuestros códigos de prueba. No estamos seguros de por qué esto estaba causando problemas al escribir los bytes para establecer los voltajes de los pines ESC, por lo que modificamos el código de Brooking lo menos posible. Creemos que este código es muy funcional, pero su kilometraje puede variar.

Paso 14: ¡Vuela! (Uno)

Y de nuevo, este tercer fragmento de código genial es obra de Joop Brokking. Las alteraciones de estos tres códigos solo están presentes en nuestro intento de integración de los datos del GPS en el Arduino.

Con sus hélices firmemente montadas en el marco y todos los componentes atados, pegados con cinta o montados de otra manera, cargue el código del controlador de vuelo en su Arduino, luego desenchufe el Arduino de su computadora.

Saque su quadcopter afuera, conecte la batería y encienda su transmisor. Opcionalmente, lleve consigo una computadora portátil conectada a su configuración de recepción de GPS, así como su configuración de recepción de video y monitor. Cargue el código del transceptor en su Arduino terrestre, abra su monitor en serie a 9600 baudios y observe cómo llegan los datos del GPS.

Ahora estás listo para volar. Empuje el acelerador hacia abajo y gire a la izquierda para armar el quadcopter, luego suba suavemente el acelerador para flotar. Comience volando cerca del suelo y sobre superficies blandas como césped hasta que se sienta cómodo.

Vea el video incrustado de nosotros volando con entusiasmo el dron la primera vez que pudimos hacer que el dron y el GPS funcionaran simultáneamente.

Paso 15: ¡Vuela! (Mega)

Debido a nuestro bloqueo con el código de calibración ESC para el Mega, nunca pudimos crear un código de controlador de vuelo para esta placa. Si ha llegado a este punto, imagino que al menos ha manipulado el código de calibración ESC para que funcione para el Mega. Por lo tanto, es probable que deba realizar modificaciones similares al código del controlador de vuelo que realizó en el último paso. Si nuestro código de calibración ESC para el Mega funciona mágicamente sin ninguna otra modificación, entonces solo hay algunas cosas que tendrá que hacer con el código de existencias para que funcione en este paso. Primero deberá revisar y reemplazar todas las instancias de PORTD con PORTA. Además, no olvide cambiar DDRD a DDRA. Luego, deberá cambiar todos los bytes que se escriben en el registro PORTA para que activen los pines adecuados. Para hacer esto, use el byte B11000011 para configurar los pines en alto y B00111100 para configurar los pines en bajo. ¡Buena suerte, y háganos saber si ha volado con éxito con un Mega!

Paso 16: Cómo llegamos a donde estamos actualmente con el mega diseño

Este proyecto fue una inmensa experiencia de aprendizaje para nosotros, como principiantes en Arduino y aficionados a la electrónica. Por lo tanto, pensamos que incluiríamos la saga de todo lo que encontramos al intentar habilitar el código de Joop Brokking por GPS. Debido a que el código de Brokking es tan completo y mucho más complicado que todo lo que estábamos escribiendo, decidimos modificarlo lo menos posible. Intentamos que el protector de GPS enviara datos al Arduino y luego que el Arduino nos enviara esa información a través del transceptor HC12 sin modificar el código de vuelo o el cableado de ninguna manera. Después de mirar los esquemas y el cableado de nuestro Arduino Uno para averiguar qué pines estaban disponibles, cambiamos el código del transceptor GPS que estábamos usando para solucionar el diseño existente. Luego lo probamos para asegurarnos de que todo funcionara. En este punto, las cosas parecían prometedoras.

El siguiente paso fue integrar el código que acabábamos de modificar y probar con el controlador de vuelo de Brokking. Esto no fue demasiado difícil, pero rápidamente nos encontramos con un error. El controlador de vuelo de Brokking se basa en las bibliotecas Arduino Wire y EEPROM, mientras que nuestro código GPS utilizaba tanto la biblioteca de serie de software como la biblioteca de GPS Arduino. Debido a que Wire Library hace referencia a la biblioteca de Software Serial, nos encontramos con un error en el que el código no se compilaba porque había "múltiples definiciones para _vector 3_", sea lo que sea que eso signifique. Después de buscar en Google y buscar en las bibliotecas, finalmente nos dimos cuenta de que este conflicto de bibliotecas hacía imposible usar estas piezas de código juntas. Entonces, buscamos alternativas.

Lo que descubrimos es que la única combinación de bibliotecas que no nos arrojó ningún error fue cambiar la biblioteca GPS estándar a neoGPS y luego usar AltSoftSerial en lugar de Software Serial. Esta combinación funcionó, sin embargo, AltSoftSerial solo puede operar con pines específicos, que no estaban disponibles en nuestro diseño. Esto es lo que nos llevó a utilizar Mega. Arduino Megas tiene múltiples puertos seriales de hardware, lo que significaba que podíamos evitar este conflicto de biblioteca al no necesitar abrir puertos seriales de software en absoluto.

Sin embargo, cuando comenzamos a usar Mega, rápidamente nos dimos cuenta de que la configuración de los pines era diferente. Los pines en el Uno que tienen interrupciones son diferentes en el Mega. Del mismo modo, los pines SDA y SCL estaban en diferentes ubicaciones. Después de estudiar los diagramas de pines para cada tipo de Arduino y refrendar los registros llamados en el código, pudimos ejecutar el código de configuración de vuelo con solo un mínimo de cableado y sin cambios de software.

El código de calibración ESC es donde comenzamos a tener problemas. Tocamos esto brevemente antes, pero básicamente el código usa registros de pines para regular los pines usados para controlar los ESC. Esto hace que el código sea más difícil de leer que con la función estándar pinMode (); sin embargo, hace que el código se ejecute más rápido y active los pines simultáneamente. Esto es importante porque el código de vuelo se ejecuta en un ciclo cuidadosamente cronometrado. Debido a las diferencias de pines entre los Arduino, decidimos usar el registro de puerto A en el Mega. Sin embargo, en nuestras pruebas, no todos los pines nos dieron el mismo voltaje de salida cuando se les dijo que funcionaran alto. Algunos de los pines tenían una salida de alrededor de 4,90 V y otros nos dieron más cerca de 4,95 V. Aparentemente, los ESC que tenemos son algo delicados, por lo que solo funcionarían correctamente cuando usáramos los pines con el voltaje más alto. Esto luego nos obligó a cambiar los bytes que escribimos en el registro A para que estuviéramos hablando con los pines correctos. Hay más información sobre esto en la sección de calibración ESC.

Esto es lo más lejos que llegamos en esta parte del proyecto. Cuando fuimos a probar este código de calibración ESC modificado, algo falló y perdimos la comunicación con nuestro Arduino. Esto nos dejó muy perplejos porque no habíamos cambiado ninguno de los cables. Esto nos obligó a dar un paso atrás y darnos cuenta de que solo teníamos un par de días para conseguir un dron volador después de semanas de intentar encajar nuestras piezas incompatibles. Es por eso que retrocedimos y creamos el proyecto más simple con el Uno. Sin embargo, seguimos pensando que nuestro enfoque está cerca de trabajar con Mega con poco más de tiempo.

Nuestro objetivo es que esta explicación de los obstáculos que encontramos le resulte útil si está trabajando para modificar el código de Brokking. Tampoco tuvimos la oportunidad de intentar codificar ninguna función de control autónomo basada en el GPS. Esto es algo que deberá resolver después de crear un dron funcional con un Mega. Sin embargo, según algunas investigaciones preliminares de Google, parece que la implementación de un filtro de Kalman puede ser la forma más estable y precisa de determinar la posición en vuelo. Le sugerimos que investigue un poco sobre cómo este algoritmo optimiza las estimaciones de estado. Aparte de eso, ¡buena suerte y avísenos si llega más lejos de lo que pudimos!

Recomendado: