Arduino + Radiocontrol = Diversión !!

Bueno, como todos saben, soy un «poquitín» fan del Radio Control (fan si, pero exageradamente fan no…. este es un hobby que puede quebrar bancos si no se lo lleva con mesura).

En lo que respecta a aviones de control remoto, soy bastante «cheap» (con los carros, es otra historia jeje). Hace un par de años, compré un radio de 6 canales en hobbyking, un manojo de servos, motores y baterías, todo por $100 incluido el envío. Con eso me ha bastado para, a través del tiempo y de las pruebas, armar un par de avioncitos decentes de espumaflex (si, la misma de los platos desechables) que han resistido el abuso y el aprendizaje del vuelo por radio control.

Pero este post no es sobre aviones o carros, sino sobre arduinos y transmisores. Yo uso este transmisor de hobbyking.

HK-T6XV2-M1(2)

que la verdad, para el precio, dudo que se pueda conseguir algo mejor. 6 canales, 2.4Ghz, 1 receptor super liviano; para iniciarse, los $50 mejor invertidos jejeje. El único pero de este radio es su relativa falta de programación. Digo relativa, porque usando la aplicación para PC y el cable de conexión USB, podemos programarlo como queramos (incluso tiene un modo para helicóptero CCPM), pero cuando tienes 2 aviones, con configuraciones de servo diferentes, se vuelve algo «engorroso» llevar la laptop a todo lado para programar el radio.

Es aquí donde entra el Arduino, y más específicamente un clon de Arduino, el Freaduino Uno, que puede ser comprado en internet por unos cuantos dolares (22,80 para ser exactos). La idea es que el arduino, reemplace todo el CPU del radio transmisor, y nos permita programarlo a nuestra manera.

Actualmente, el arduino tendrá las siguientes tareas:

  1. Leer la posicion de las palancas usando sus ADC
  2. Tomar dichos valores y procesarlos según los parámetros seleccionados (direccion de servos, ajustes de punto máximo, exponenciales, etc)
  3. Generar una señal PPM en función de los valores procesados
  4. Hacer todo esto, mientras se comandan los parámetros de control desde un LCD con un teclado

Realmente, luego de haber programado por muchos años en el micro 8051, y muchas variedades de Pics de Microchip, me doy cuenta el por qué el arduino ha pegado tanto en los hobbistas de electrónica. Al no necesitar programador adicional, se vuelve una herramienta plug-and-play para cualquier proyecto electrónico; su interfaz de programación es fácil de usar, y existen librerias prediseñadas casi para todo…… el sueño de todo estudiante de electrónica. Volviendo al tema, el uso del arduino en este proyecto, resultó una grán ventaja, ya que primero, las librerías para manejo de los ADC, LCD y teclado están ya listas, solo de incluirlas y usar.

Luego de unas pocas líneas de código, pude generar un menú de opciones, para seleccionar los valores de la dirección del servo, y los dual rates para cada canal. esto lo podemos ver en las siguientes imágenes.

2013-01-26_10-13-53_126

 

2013-01-26_10-14-13_468

 

Realmente, uno se ahorra tiempo y plata, tomando en cuenta que acá un PIC 18F4550 bordea los $10 sin los componentes adicionales para hacerlo funcionar, creo que facil el arduino que he comprado resulta más barato que la placa de comando de servos que diseñé hace algun tiempo, basada en Pic.

Hasta ahora todo va bien, tenemos el ADC y algunas opciones básicas funcionando en el nuevo CPU de nuestro radio, pero viene la parte fuerte, tomar los valores procesados y convertirlos en una señal PPM, la cual será alimentada al módulo de 2.4Ghz del radio, para transmitirla al aire.

Luego de algunas pruebas, he logrado generar dicha señal, y va bastante bién. El siguiente paso es montar todo en la caja del radio y probar si realmente funciona. Les dejo una imágen de mi pantalla (estoy usando un osciloscopio de tarjeta de sonido para verificar las señales) para que observen la señal generada a la salida del nuevo CPU.

Apenas existan más avances, se los haré saber 😉

2013-03-09_23-02-09_575

 

 


Comments

7 respuestas a «Arduino + Radiocontrol = Diversión !!»

  1. Avatar de Hypnos Net
    Hypnos Net

    Hola,
    Primero de todo, felicidades por tu web.
    Estoy intentando controlar mediante Arduino y RC, un coche (aunque la intención es cualquier cosa; robot, cuateicoptero…). He leido la señal de mi emisora (Hobbyking también) con la función PulseIn() y es de 1, 1.5 y 1.8 dependiendo de si las palancas están en neutro, mínimo o máximo.
    Todo el mundo por la red recomienda para un buen control, el uso de Interrupts. Sabes algo del tema? Puedes ayudarme?

    Muchas gracias.
    Salu2

  2. Avatar de admin
    admin

    Hola! como estas

    Te comento que mi código si usa interrupciones. La función pulseIn puede funcionar pero el momento que el bucle principal del programa retarde un poco el pulso, vas a tener problemas con la señal enviara, y por ende, con el control del auto/avión/quad.

    Estoy por postear la segunda versión de este transmisor. Tiene la rutina de generación de PPM un poco mejorada, y la interfaz utiliza una pantalla LCD gráfica. Quizás esta semana termine de escribir el post para publicarlo, y si quieres adelantar algo de lectura, puedes revisar mi hilo del transmisor en rcgroups

    http://www.rcgroups.com/forums/showthread.php?t=1817699&page=24

  3. Avatar de Hypnos Net
    Hypnos Net

    Hola, muchas gracias por tus comentarios!!!
    Sí, lo de las interrupciones lo sé, lo que pasa que no sé como implementar el código.
    Lo que he descubierto, es que con el Arduino Uno que tengo solo puedo programar 2 interrupciones externas (2 pines), así que he pensado aplicar interrupciones internas (micro), pero no sé como empezar puesto que tengo 6 canales.
    Tienes algún código que pueda ayudarme?
    Muchas gracias de nuevo por toda la ayuda.
    Un saludo!

  4. Avatar de alan
    alan

    hola que tal 🙂 ..sabes yo tambien quiero hacer algoi muy similar quiero generar 5 canales ppm con arduino uno..para controlar un KKmulticopter v5.5 las cuales necesitan del control de : elevador , acelerador , timon y guiñada..
    tambien pensaba realizarlo con PulseIn() , pero veo que la placa kkmulticopter no responde a las tramas enviadas por ARDUINO UNO..

    te agradecere tu ayuda …..saludos

  5. Avatar de Francisco Pinto
    Francisco Pinto

    Estimado me llama mucho la atención tu proyecto y me gustaría diseñar un control mediante arduino el cual ocupe el transmisor y el receptor turingy 2.4 9x8cv2
    ese es el que tengo pero no eh eh atrevido a intentar complementarlos debido a que no eh encontrado mucha información de como hacerlo tengo entendido que debo mandarle una señal ppm al transmisor para que este pueda comunicarse con el receptor , mi problema es que no se ni siquiera las conexiones ni nada . ojala puedas ayudarme o por lo menos guiarme un poco . Saludos !

  6. Avatar de admin
    admin

    Francisco, lo que te recomendaría es primero hacer algunos experimentos con el Arduino solo (los típicos de parpadear leds, leer entradas analogicas con potenciometros, generar salidas pwm, etc), para esto puedes encontrar muchos tutoriales en internet.
    Cuando tengas más claro el panorama del arduino, te podré indicar mas a detalle como funciona la señal PPM con la que trabaja el transmisor, para que puedas interconectarla.

  7. Avatar de admin
    admin

    Alan, no entiendo muy bien lo que quieres hacer. Quieres que el Arduino funcione como un receptor de radio, y envíe los datos de cada canal a del KK board. Mira que cada salida del receptor, genera una señal pwm que de hecho controla un servo. Lo que debes lograr es que el arduino pueda controlar 4 servos, y ahí te dará respuesta el KK una vez que lo conectes.

Responder a admin Cancelar la respuesta