Autor Tema: Proyecto Emisora RC + arduino + modulo wifi  (Leído 5858 veces)

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Proyecto Emisora RC + arduino + modulo wifi
« en: Octubre 17, 2014, 10:48:15 am »
Tras varios dias pensando, quiero hacer un proyecto para controlar cualquier dispositivo RC a traves de una emisora casera usando arduino.

La idea es hacerlo con materiales economicos y de forma sencilla.

Usando como emisora, una de simulador que tengo estropeada, tipo esta:

http://www.ebay.es/itm/6CH-Channels-USB-3D-RC-Helicopter-Airplane-Flight-Simulator-Glider-Model-UK-/111155240386?pt=UK_ToysGames_RadioControlled_JN&hash=item19e15e5dc2

Como lector y generador de señal PPM un arduino como este:

http://www.ebay.es/itm/New-Pro-Mini-atmega328-Board-5V-16M-Arduino-Compatible-Nano-NEW-M23-/121192432250?pt=LH_DefaultDomain_0&hash=item1c37a1c27a

Y como modulo emisor algo similar a esto:

http://www.ebay.es/itm/NRF24L01-PA-LNA-SMA-Antenna-Wireless-Transceiver-communication-module-2-4G-1100m-/310651702557?pt=LH_DefaultDomain_0&hash=item485448cd1d

Como receptor se usaria un modulo igual que el emisor y otro arduino para demodular la señal y activar servos/variador.


soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #1 en: Octubre 17, 2014, 10:50:42 am »
De momento he empezado con la primera parte, que es que arduino lea correctamente los 8 canales que quiro tener, y los convierta a una señal PPM, programe este programa con PICs, que en la simulación funciona pero en la realidad no  :booom: :booom:, por eso quiero probar con arduino, adaptando el codigo.....

Código: [Seleccionar]
//**********************************************************//
//   -------  Generacion PPM emisora casera  ---------- //
// ----------------------------------- //
// //
// Version de 6 canales y PIC12F683 //
// Diseñado por Sokoloko //
// //
//**********************************************************//

#include <16f88.h>            // PIC USADO
#fuses NOWDT // SIN WATCH DOG TIMER
#fuses INTRC_IO // OSCILADOR INTERNO SIN CLKSALIDA
#fuses NOCPD // NO EE PROTECTION
#fuses NOPROTECT // NO SE PUEDE LEER EL CODIGO DEL PIC
#fuses NOMCLR // PIN_A3 USADA PARA ENTRADA Y NO PARA RESET
#fuses NOPUT // SIN POWER UP TIMER
#fuses NOBROWNOUT // SIN BROWNSALIDA RESET
#fuses NOFCMEN
#fuses NOIESO
#fuses NOLVP
#fuses NOWRT
#fuses NODEBUG
#fuses CCPB3
#device adc=10 // Lee entre 0 y 1024 (sin esto seria entre 0 y 256)
#use fast_io(A)
#use fast_io(B)
#use delay (clock=8000000)          // CLOCK INTERNO 8Mhz


//*********************** DEFINICIONES  ***********************************

#define OUT_PPM PIN_B4 // PAT. 10 // SALIDA PPM

// +VCC // PAT. 14// +Vcc
// MASA // PAT. 5 // MASA

//***********************  VARIABLES  ********************************************
long long CH1,CH2,CH3,CH4,CH5,CH6,CH7;   // long long IMPORTANTE pues ultiplicamos 1023 *1000 para leer entre 0 y 1023

long PULSO = 500; // NANOSG QUE DURA EL PULSO


//***********************  MAIN  ********************************************
/*
void mapeo(){    // Convierto a valores entre 0 y 1000 de forma resumida

Funcion de mapeo entre dos valores
long map (long x, long in_min, long in_max, long out_min, long out_max){
  map = (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min ;
}

En este caso seria:
map = (x - 0) * (1000 - 0) / (1023 - 0) + 0 ;
map = (x * 1000 / 1023);


CH1 = CH1 * 1000 / 1023;
CH2 = CH2 * 1000 / 1023;
CH3 = CH3 * 1000 / 1023;
CH4 = CH4 * 1000 / 1023;
CH5 = CH5 * 1000 / 1023;
CH6 = CH6 * 1000 / 1023;
CH7 = CH7 * 1000 / 1023;

}
*/
void lectura(){

set_adc_channel(0); // Establecemos el canal de lectura
// delay_ms(3);                    // Dejamos un tiempo para que cambie de canal (importante)
CH1 = read_adc(); // Leemos el valor del canal entre 0 y 1023

set_adc_channel(1); // Establecemos el canal de lectura
// delay_ms(3);                    // Dejamos un tiempo para que cambie de canal (importante)
CH2 = read_adc(); // Leemos el valor del canal entre 0 y 1023

set_adc_channel(2); // Establecemos el canal de lectura
// delay_ms(3);                    // Dejamos un tiempo para que cambie de canal (importante)
CH3 = read_adc(); // Leemos el valor del canal entre 0 y 1023

set_adc_channel(3); // Establecemos el canal de lectura
// delay_ms(3);                    // Dejamos un tiempo para que cambie de canal (importante)
CH4 = read_adc(); // Leemos el valor del canal entre 0 y 1023

set_adc_channel(4); // Establecemos el canal de lectura
// delay_ms(3);                    // Dejamos un tiempo para que cambie de canal (importante)
CH5 = read_adc(); // Leemos el valor del canal entre 0 y 1023

if(input(PIN_B2)) CH6 = 1023; // Segun B2 activamos canal 6
else CH6 = 0;

if(input(PIN_B3)) CH7 = 1023; // Segun B2 activamos canal 7
else CH7 = 0;

//mapeo();

}

void generar_PPMSUM(){

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH1); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH2); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH3); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH4); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH5); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH6); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Iniciamos el ciclo  del canal PPM
delay_us(PULSO);                    // Dejamos un tiempo para que cambie de canal (importante)
output_high(OUT_PPM); // Cambiamos la salida
delay_us(PULSO + CH7); // Generamos tiempo de señal PULSOns + valor leido en canal

output_low(OUT_PPM); // Generamos ciclo de sincronizacion durante el cual leo datos
delay_us(PULSO);
output_high(OUT_PPM); // En ciclo de sincronismo hago lecturas
lectura();
delay_ms(15); // Para hacer los 20 ms de sincronismo

}


void main(void){ // FUNCION PRINCIPAL
   
setup_oscillator(OSC_8MHZ|OSC_INTRC);       // Activa el oscilador interno.
setup_adc_ports(all_analog); // Usamos entradas analogicas
setup_adc(ADC_CLOCK_INTERNAL); // INICIALIZAMOS LOS CANALES A/D

output_high(OUT_PPM);
lectura(); // Hago una lectura inicial
//delay_ms(10);


while(1){

generar_PPMSUM(); // Generamos las señales de los canales 1 al 6

}
}
« Última modificación: Octubre 17, 2014, 10:53:08 am por soko »

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #2 en: Octubre 17, 2014, 10:52:22 am »
Gracias a Rego, que me paso este link:

http://www.reseau.org/arduinorc/index.php?n=Main.Downloads

En el viene ya el codigo para la emisora, voy a hacer pruebas estos días y os voy contando como funciona.   ;) ;)
« Última modificación: Octubre 17, 2014, 11:04:35 am por soko »

rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #3 en: Octubre 17, 2014, 12:19:15 pm »
soko es para 6 canales lo suyo era poder aprovechar al maximo y poder tener 8 canales como minimo

yo usaria este modulo de 2,4ghz y ademas tiene telemetria  ]>-) ]>-)

http://www.hobbyking.com/hobbyking/store/__17205__FrSky_DHT_8ch_DIY_Telemetry_Compatible_Transmitter_Module.html

si tienes este modelo tambien valdria

http://www.hobbyking.com/hobbyking/store/__14354__FrSky_DF_2_4Ghz_Combo_Pack_for_Futaba_w_Module_RX.html




soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #4 en: Octubre 17, 2014, 04:10:46 pm »
Gracias por la informacion Rego,

Por lo que veo ese emisor va con por ejemplo este receptor:

http://www.hobbyking.com/hobbyking/store/__14351__FrSky_V8R7_II_2_4Ghz_7CH_Receiver.html?strSearch=v8r

Que tambien trae telemetria, pero la verdad que nunca he trabajado con ella, se que transmite mas datos que los propios canales, pero desconozco que datos son, imagino que voltaje de bateria y sin tener GPS ni otros sensores a mayores poco más podra transmitir, no??

Lo que pasa, que este tipo de emisor receptor, a parte de ser mas caros, igual complica de primeras el proyecto, pues ya la emisora tendria que tener pantall LCD para mostrar la telemetria.....y de primeras quería algo sencillo y sobre todo de muy pequeño tamaño  :D :D

Bueno voy a ir centrándome por partes a ver si empiezo con algo, jejejejee!!!!!



rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #5 en: Octubre 18, 2014, 01:23:29 am »
a ver te respondo por partes.

Si el receptor seria ese (uno de ellos ya que hay varios modelos)

con la telemetria puedes ver:
RPM
GPS
BATERIA (asta 2 baterias)
NIVEL DE COMBUSTIBLE
TEMPERATURAS
ALTITUD
ETC ETC

la telemetria es independiente a la emisora, las hay que lo traen todo junto pero en este caso no es asi y no se complica nada el tema, para ver el nivel de las baterias hay una apilcacion para el movil y hay que hacerle un pequeño apaño al modulo (no hay que abrirlo ni nada) que es un 232 y un bluetooth, y si ya quieres ver todo tipo de telemetria pues hay 2 variantes una es comprar la pantalla o comprar el modulo con lcd te dejo los links para que lo veas

PANTALLA:


MODULO CON LCD:


para ver mas sensores te haria falta esto:


si te decides por este modulo te puedo pasar como hacer el senson de bateria y lo del apaño para verlo en el movil

espero te sirva todo esto que he puesto  :)) :))

Miguel75

  • Aprendiz
  • **
  • Mensajes: 922
  • Karma: +13/-0
    • Ver Perfil
    • LáserFoamy
  • Ubicación: Estepona
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #6 en: Octubre 18, 2014, 01:51:27 am »
Creo que muy pronto dije yo lo de ayudar en lo que pudiese en este asunto... todo lo que habláis me suena a chino  :'( :'( :'( :'( :'( :'( :'(
Siento no se de utilidad chicos.

rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #7 en: Octubre 18, 2014, 04:25:20 am »
miguel es facil ya sabes como se me esta atragantando a mi lo del tester  :'( :'( :'(

lo bueno que tiene esto que con unos potenciometros de 10K (si no recuerdo mal y un arduino mini pro te haces una emisora para controlar robots, coches o lo que quieras

no tienes que aprovechar viejas emisoras si no que te puedes montar la tuya propia a tu gusto

a de mas seguro que cuando veas que esto soko lo lleva para adelante das alguna idea o resuelves alguna duda (a que me suena eso  ??? ??? ??? ???)

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2904
  • Karma: +48/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #8 en: Octubre 18, 2014, 08:09:34 am »
soko y por que no en vez de usar el modulo emisor que indicas utilizar un modulo RC normal, he visto bastantes proyectos que utilizan el arduino y se comunican con coches RC, con lo que evitas tener que modificar el coche o avión para ponerle el receptor.

Mira este enlace http://diydrones.com/profiles/blogs/arduspider-sara-my-daughters en el controlan un robot hecho con arduino con una emisora RC, al revés también he visto alguno que controlan coches RC con el mando de la wii a través de un arduino, como por ejemplo:

http://4micro.wordpress.com/2011/08/19/project-2-wiimote-arduino-rc-car-hours-of-fun/
http://hacknmod.com/hack/use-the-wii-and-iphone-to-control-an-rc-car/

Un saludo

rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #9 en: Octubre 18, 2014, 04:15:29 pm »
Soko se me ha ocurrido una cosilla que creo puede ser muy interesante sobretodo a la hora de volar los quadcopters  ]>-) ]>-) ]>-) ]>-)

¿a esa emisora se le podria poner un puerto usb para enchufar un josting de pc y tener los controles en el mismo?  ??? ??? ??? ???

creo que te va salir caro a ver puesto este tema aqui  :)) :)) :)) :))

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2904
  • Karma: +48/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #10 en: Octubre 18, 2014, 04:28:52 pm »
Rego si empezamos a poner ideas chulas, podemos poner un asiento con movimiento y una webcam en el avión/coche y así parecerá que estamos encima.




 :)) :)) :)) :)) :)) :))
« Última modificación: Octubre 18, 2014, 04:31:18 pm por ngc1300 »

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #11 en: Octubre 18, 2014, 05:42:40 pm »
Pero que pasa aqui!!!!!!!!!!!!!  %-}  :P :P

Uno se va un dia y le cambian el proyecto totalmente, jajajajaa!!!!  :) :)) :))

Desde luego que esas ideas molan, pero lo de "simple" del proyecto creo que no las engloba, jajajaaa!!!!! Por mi parte  se puede complicar el asunto todo lo que queramos, jejejee.....solo sugerir que antes del jostick, yo hice una prueba hace tiempo con un PIC y un mpu 6050 (acelerometro giroscopo) pegado en un guante, y manejaba el avion con el guante simplemente inclinando un poco la mano, tenia el problema de que era muy sensible y en vuelos acrobáticos te doblabas la muñeca.....pero funciono muy muy bien.

Usar un modulo estandar de 2.4 para tener receptores "tipo", desde luego sería mas comodo y util, al principio no lo plantee por que era una idea de esas de crearlo todo uno mismo.....pero viendo como se nos van las ideas, es una buena opcion.

Ahora estoy fuera de casa, pero a ver si entre semana, veo bian los link de NGC y adapto arduino a la emisora y pruebo como funciona con un transmisor RC en 35Mhz de una emisora Futaba que tenia rota pero el transmisor funcionaba.




rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #12 en: Octubre 18, 2014, 09:47:46 pm »
ncg lo que tu dices ya existe se llama FPV (vuelo en primera persona) eso es lo que quiero empezar a embarcarme ahora  ]>-) ]>-) ]>-)

soko lo del modulo en 35 no se como sera yo no se como le vas a sacar la antena  ??? ??? ??? ??? pero yo tambien tengo 1  ]>-) ]>-) ]>-)

el caso es que te comente lo del yosting por lo de manejar el quadcorter con eso ya que los que hay especificos para las emisoras se salen muchiiiiiiiiiiiiiiiiiiiiiiiiiiiisisisisimo de presupuesto pero si ves que es mucho para ti pues nada (es en plan pique para liarte un poquito)  ]>-) ]>-) ]>-) :)) :)) :))

a un que ahora que lo pienso despues de que te hagas la emisora te lio y podemos mirar como enchufar un yosting por el puerto de entrenador (profesor-alumno) de la emisora mediante un arduino   ??? ??? ??? ??? ???

no me digas que no te tienta la cosa  :)) :)) :)) :)) :)) :))

yo en principio observo y te ayudare en todo lo que pueda (sobretodo ideas)  :)) :)) :)) :)) ]>-) ]>-) ]>-)


rego

  • Aprendiz
  • **
  • Mensajes: 821
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #13 en: Octubre 18, 2014, 09:51:55 pm »
ncg mira este video esta chulisimo es una carrera de quadcopers por el medio del monte


soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1506
  • Karma: +15/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:Proyecto Emisora RC + arduino + modulo wifi
« Respuesta #14 en: Octubre 19, 2014, 12:09:12 am »
Yo el tema FPV hace bastante tiempo que lo uso en 5,8, tanto con quadris como en aviones.

Es muy divertido, sobre todo para hacer combates entre aviones, os dejo un video mio donde al final se puede ver un choque, por si a alguno le gusta el tema.....aunque aquí las gafas las tenia puestas otro amigo...

https://www.dropbox.com/s/i4zvx1n7trd1f94/MOVI0004_cut.AVI?dl=0

El tema del modulo en 35Mhz, no es mas que para confirmar que el generador de señal PPM funciona correctamente, y no seguir complicando el proyecto.

Tema joystick, ya lo probe hace tiempo pero sin FPV, es solo meter esa señal PPM por la entrada Maestro/esclavo, pero la sensación con FPV tiene que molar, así que ya se otra cosa para probar  :)