Drone Arduino Con GPS

Nos propusimos construir un dron quadcopter controlado por Arduino, estabilizado, con GPS, en primera persona, vista en primera persona (FPV) con regreso a casa, ir a coordinar y funciones de 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 así terminamos haciendo un quadcopter FPV con GPS, sin ninguna de las funcionalidades 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 tomamos en el camino hacia un quadcopter más autónomo. Si se siente cómodo cavando profundamente en Arduino o ya tiene mucha experiencia en Arduino y le gustaría tomar nuestro punto de parada como 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 la codificación de Arduino, sin importar la experiencia que tenga. Además, con suerte te alejarás con un dron.

La configuración es la siguiente:

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

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

Las piezas con dos asteriscos son necesarias solo para el quadcopter más limitado.

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

Los pasos que solo se requieren para el quadcopter no autónomo más limitado tienen "(Uno)" después del título.

Los pasos solo necesarios 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 cualquier paso con "(Mega)" después del título.

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

Paso 1: reunir materiales

Componentes:

1) Un cuadro de quadcopter (el cuadro exacto probablemente no importa) ($ 15)

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

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

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

5) Una batería de 3s, 3000-5000mAh LiPo con conexión XT-60 (3000mAh corresponde con 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 escudo GPS Arduino Ultimate (no necesita el escudo, 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 batería LiPo Balance (y adaptador de 12V CC, 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 transmisión de video FPV (vista en primera persona) en tiempo real:

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

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

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

4) 2 baterías de 1000mAh 2s (7.4V) LiPo, o similar ($ 5). Número de mAh no crítico siempre que sea más de 1000mAh más o menos. La misma declaración que la anterior se aplica al tipo de enchufe para una de las dos baterías. El otro se usará para alimentar el monitor, por lo que tendrá que soldar sin importar qué. Probablemente sea mejor obtener uno con un enchufe 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 ofrece la opción de grabar videos y fotos, en lugar de solo verlos en tiempo real.

6) Si ha comprado baterías con diferentes enchufes de los que están conectados, es posible que necesite adaptadores adecuados. En cualquier caso, obtenga un adaptador correspondiente al enchufe de la batería que alimenta el monitor. Aquí es donde obtener adaptadores XT-60

* = solo para proyectos más avanzados

** = solo para proyectos más básicos

Costos:

Si comienza desde cero (pero con un soldador, etc.), no hay 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: ensamblar el marco

Este paso es bastante sencillo, especialmente si usa 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 tarde.

Paso 3: Montar motores y conectar Escs

Ahora que el marco está ensamblado, saque los cuatro motores y los cuatro accesorios de montaje. Puede usar los tornillos incluidos en los juegos de montaje o los tornillos que quedan del marco del cuadricóptero para atornillar los motores y las monturas en su lugar. Si compra las monturas a las que nos hemos vinculado, recibirá dos componentes adicionales, como se muestra 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 la placa de distribución de energía (PDB) en la parte superior de la placa superior del marco del quadcopter. Asegúrese de orientarlo de manera que el conector de la batería apunte entre brazos de diferentes colores (paralelos a una de las porciones largas de la placa inferior), como en la imagen de arriba.

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

Ahora saca tus ESCs. Un lado tendrá dos cables saliendo, uno rojo y otro negro. Para cada uno de los cuatro ESC, inserte el cable rojo en el conector positivo del PDB y el negro en el negativo. Tenga en cuenta que si usa un 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 del motor (¡siempre y cuando conecte todos los cables de un ESC con el mismo motor!) Corregirá cualquier polaridad hacia atrás 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: Prepara Arduino y Shield

Una nota antes de comenzar

Primero, puede elegir soldar todos los cables juntos directamente. Sin embargo, nos pareció invaluable usar encabezados de clavija 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 escudo

Saque su Arduino Mega (o un Uno si está haciendo el quad no autónomo), el escudo GPS y los encabezados apilables. Suelde el extremo macho de los encabezados apilables en su lugar en el escudo del GPS, en las filas de pines paralelos a los pines pre-soldados, como se muestra en la imagen de arriba. También suelde en encabezados apilables en la fila de pines etiquetados 3V, CD, ... RX. Use un cortador de alambre para cortar el exceso de longitud en los pasadores que sobresalen de la parte inferior. Coloque encabezados macho con tapas dobladas en todos estos encabezados apilables. Esto es a lo que soldará los cables para el resto de los componentes.

Coloque el escudo 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 seguirá expuesto después de que coloque el escudo en su lugar.

Coloque cinta aislante en la parte inferior del Arduino, cubriendo todas las soldaduras de clavijas expuestas, para evitar cortocircuitos mientras el Arduino descansa en el PDB.

Paso 5: 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 escudo GPS correctamente montado y, por lo tanto, el GPS no aparece en este esquema.

El esquema anterior se preparó utilizando el software Fritzing, que se recomienda especialmente para esquemas que involucran a Arduino. En su mayoría, utilizamos 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 en el escudo del 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 GPS a continuación).

Tenga en cuenta que ya ha conectado los ESC a los motores y al 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 en el Arduino (no los pines Tx y Rx separados en el GPS). Eso es porque configurado para "Direct Write" (ver 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 fila, respectivamente (y en la columna de pines de la segunda a la más lejana).

-Para hacer el cableado del transceptor HC-12, el receptor RC y 5Vout desde el PDB hasta Vin del Arduino, usamos encabezados apilables, mientras que para el giroscopio soldamos los cables directamente a la placa y usamos tubos termocontraíbles alrededor del soldar. Puede elegir hacer cualquiera de los componentes, sin embargo, se recomienda soldar directamente al giroscopio ya que ahorra espacio, lo que hace que la parte pequeña sea más fácil de montar. El uso de encabezados es una pequeña cantidad 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 del GPS, todavía tiene una cantidad decente de flexibilidad, independientemente de lo que haga. Crucialmente, 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 la cinta de espuma de doble cara, cinta adhesiva, cinta eléctrica y bridas. Recomendamos que pase más tiempo diseñando estructuras de montaje estables si planea que este sea un proyecto a más largo plazo. Dicho todo esto, si solo quieres hacer un prototipo rápido, no dudes en seguir nuestro proceso. Sin embargo, asegúrese de que el giroscopio 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 conectado 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 esté apuntando en la misma dirección que el conector de la PDB y que de hecho puedan conectarse. Utilizamos cinta adhesiva para sostener 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 uno puede reemplazar fácilmente la batería o quitarla para cargarla. Sin embargo, debe asegurarse de pegar la batería APRETADAMENTE, ya que si la batería se mueve durante el vuelo, esto podría alterar gravemente el equilibrio del dron. NO conecte la batería al PDB todavía.

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

El esquema anterior se preparó utilizando el software Fritzing, que se recomienda especialmente para esquemas que involucran a arduino. En su mayoría utilizamos 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 escudo GPS correctamente montado y, por lo tanto, el GPS no aparece en este esquema.

- Cambie 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 ha conectado los ESC a los motores y al 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 serie de hardware. Hay más razones por las que necesitamos pines serie de hardware, que se analizarán más adelante.

-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 fila, respectivamente (y en la columna de pines de la segunda a la más lejana).

-Para hacer el cableado del transceptor HC-12, el receptor RC y 5Vout desde el PDB hasta Vin del Arduino, usamos encabezados apilables, mientras que para el giroscopio soldamos los cables directamente y usamos tubos termocontraíbles alrededor de la soldadura. Puede elegir hacer cualquiera de los componentes. El uso de encabezados es una pequeña cantidad 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 del 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 la cinta de espuma de doble cara, cinta adhesiva, cinta eléctrica y bridas. Recomendamos que pase más tiempo diseñando estructuras de montaje estables si planea que este sea un proyecto a más largo plazo. Dicho todo esto, si solo quieres hacer un prototipo rápido, no dudes en seguir nuestro proceso. Sin embargo, asegúrese de que el giroscopio 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 conectado 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 esté apuntando en la misma dirección que el conector de la PDB y que de hecho puedan conectarse. Utilizamos cinta adhesiva para sostener 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 uno puede reemplazar fácilmente la batería o quitarla para cargarla. Sin embargo, debe asegurarse de pegar la batería APRETADAMENTE, ya que si la batería se mueve durante el vuelo, esto podría alterar gravemente el equilibrio del dron. NO conecte la batería al PDB todavía.

Paso 7: enlace receptor

Tome el receptor RC y conéctelo temporalmente a una fuente de alimentación de 5V (ya sea encendiendo el Arduino con USB o 9V, o con una fuente de alimentación separada. No conecte el LiPo al Arduino todavía). Tome el pin de enlace que viene con el receptor RC y colóquelo en los pines BIND del receptor. Alternativamente, acorte los pines superior e inferior en la columna BIND como se muestra en la foto de arriba. Una luz roja debería 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 en el receptor debería volverse sólida. 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 los 5 V del Arduino.

Paso 8: (Opcional) Conecte juntos 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, el suelo casi siempre negro. Ahora inserte el adaptador con cables soldados en su LiPo de 1000 mAh con el enchufe XT-60. El monitor debe encenderse con (generalmente) fondo azul. ¡Ese es el paso más difícil!

Ahora atornille las antenas en 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) está conectado a 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 de 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 viene 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 los números en sus pantallas pequeñas) y que estén en el mismo canal (utilizamos el canal 11 para ambos y tuvimos un buen éxito). Además, es posible que deba cambiar el canal en el monitor.

Montar los componentes en el marco.

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

Paso 9: 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 activará como se muestra si se conecta a una computadora. Descargue el código del transceptor proporcionado, abra su monitor en serie a 9600 baudios.

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

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

Archivos adjuntos

  • Transceiver_Uno.ino Descargar

Paso 10: Ejecute 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 en serie a 57600 baudios y siga las indicaciones.

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 utiliza el dispositivo para comunicarse con la computadora, por lo que debe ser 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 sólida (pero tenue) en su receptor cuando el transmisor esté encendido. Si es así, verifique el cableado.

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

Archivos adjuntos

  • YMFC-AL_setup.ino Descargar

Paso 11: Realizar 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 para el Mega de modo que las entradas del receptor correspondieran a los pines de interrupción de cambio de pin correctos.

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 en serie a 57600 baudios y siga las indicaciones.

Archivos adjuntos

  • YMFC-AL_setup.ino Descargar

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 en serie, escriba la letra 'r' y presione regresar. Debería comenzar a ver los valores del controlador RC en tiempo real enumerados. Verifique que varían de 1000 a 2000 en los extremos de aceleración, balanceo, cabeceo y guiñada. Luego escribe 'a' y presiona regresar. Deje pasar la calibración del giroscopio y luego verifique que el giroscopio registre el movimiento del quad. Ahora desconecte el arduino de la computadora, acelere completamente el controlador y conecte la batería. Los ESC deben alternar diferentes pitidos (pero esto puede ser diferente dependiendo del ESC y su firmware). Empuje el acelerador hasta el fondo. Los ESC deben emitir pitidos más bajos y luego callar. 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 debido al desequilibrio de los accesorios. Puede intentar remediar esto agregando pequeñas cantidades de cinta adhesiva a un lado u otro de los accesorios. Descubrimos que podíamos obtener un buen vuelo sin este paso, pero tal vez un poco menos eficiente y más fuerte que si hubiéramos equilibrado los accesorios.

Archivos adjuntos

  • YMFC-AL_esc_calibrate.ino Descargar

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 trabajar con el Mega.

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

Luego escribe 'a' y presiona regresar. Deje pasar la calibración del giroscopio y luego verifique que el giroscopio registre el movimiento del quad.

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

Los cambios que hicimos en 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 de registro PORTD no están en la misma ubicación en el Mega que en el Uno. No hemos podido probar completamente este código ya que estábamos trabajando con un viejo Mega fuera de marca que tenía la tienda de nuestra escuela. Esto significó que, por alguna razón, no todos los pines de registro de PORTA pudieron 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 está muy cerca de ser funcional, pero su kilometraje puede variar.

Archivos adjuntos

  • YMFC-AL_esc_calibrateMEGA.ino Descargar

Paso 14: ¡Ponte en el aire! (Uno)

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

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

Lleve su quadcopter al exterior, conecte la batería y encienda su transmisor. Opcionalmente, traiga una computadora portátil conectada a su configuración de recepción de GPS, así como su configuración y monitor de recepción de video. Cargue el código del transceptor en su Arduino terrestre, abra su monitor en serie a 9600 baudios y observe cómo se introducen 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 levante suavemente el acelerador para desplazarse. Comience volando bajo sobre el suelo y sobre superficies suaves como la hierba 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 funcionen simultáneamente.

Archivos adjuntos

  • YMFC-AL_Flight_controller.ino Descargar

Paso 15: ¡Hazte a bordo! (Mega)

Debido a nuestro bloqueo con el código de calibración ESC para el Mega, nunca pudimos crear el código del controlador de vuelo para esta placa. Si has llegado a este punto, entonces imagino que al menos has manipulado el código de calibración ESC para que funcione para el Mega. Por lo tanto, es probable que tenga que hacer modificaciones similares al código del controlador de vuelo como lo hizo 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 stock 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 establecer los pines en alto y B00111100 para establecer los pines en bajo. ¡Buena suerte y avísanos si vuelas con éxito usando 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 de Arduino y de la electrónica. Por lo tanto, pensamos que incluiríamos la saga de todo lo que encontramos al intentar habilitar el código GPS de Joop Brokking. Debido a que el código de Brokking es tan completo y mucho más complicado que cualquier cosa que estábamos escribiendo, decidimos modificarlo lo menos posible. Intentamos obtener el escudo GPS para enviar datos al Arduino y luego hacer que el Arduino nos envíe 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 descubrir 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 estaba utilizando tanto la biblioteca de software en serie como la biblioteca Arduino GPS. Debido a que la Biblioteca Wire hace referencia a la biblioteca Software Serial, encontramos un error en el que el código no se compilaba porque había "definiciones múltiples para _vector 3_", 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 la biblioteca hacía imposible utilizar estos códigos juntos. Entonces, fuimos a buscar alternativas.

Lo que descubrimos es que la única combinación de bibliotecas que no 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 lleva a usar el Mega. Arduino Megas tiene múltiples puertos serie de hardware, lo que significa que podríamos evitar este conflicto de la biblioteca al no tener que abrir ningún puerto serie de software.

Sin embargo, cuando comenzamos a usar el Mega, nos dimos cuenta rápidamente de que la configuración del pin 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 lugares. Después de estudiar los diagramas de clavijas para cada tipo de Arduino, y de hacer referencia a los registros llamados en el código, pudimos ejecutar el código de configuración del vuelo con solo un cableado mínimo 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 utilizados para controlar los ESC. Esto hace que el código sea más difícil de leer que usar la función pinMode () estándar; 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 bucle cuidadosamente cronometrado. Debido a las diferencias de pin entre los Arduinos, 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.90V y otros nos dieron más cerca de 4.95V. 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 nos obligó a cambiar los bytes que escribimos para registrar 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 se acortó y perdimos la comunicación con nuestro Arduino. Estábamos extremadamente perplejos por esto porque no habíamos cambiado ninguno de los cables. Esto nos obligó a retroceder y darnos cuenta de que solo teníamos un par de días para obtener un avión no tripulado volador después de semanas de intentar unir nuestras piezas incompatibles. Es por eso que retrocedimos y creamos el proyecto más simple con el Uno. Sin embargo, todavía creemos que nuestro enfoque está cerca de trabajar con Mega con poco más tiempo.

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

Artículos Relacionados