Artículo WII HT Libre - Headtrackin con inclinometro

Discussion in 'R/C ELECTRÓNICA' started by cacer, Oct 28, 2009.

  1. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Ya no hace falta pulsador de reset.

    El pulsador de reset a pasado a mejor vida :icon_twisted:. El problema estaba que al alimentar el WM+ y el ardu, por alguna razón desconocida :confused: el buffer del WM+ se llenaba de basura. No hay más que vaciarlo (rediseño de la función calibrateZeroes) y a tirar millas.

    Tambien he colocado un control para aquellos que querais hacer pruebas con el 'Serial monitor' En los comentarios os indico a que lineas hay que quitarles el comentario. Si teneis dudas me los comentais. Bueno ahora lo más importante, el código

    Code:
    /*#####################################################################################
    ## Wii HeadTracker    Version:  beta 3.01                          Diciembre 2009    ##
    ##                                                                                   ##
    ## Autor: El Nono, Cacer, Fbforos y el foro                                          ##
    ## Colaboracion:  www.aeromodelismovirtual.com                                       ##
    ##                www.fpv-bsas.com.ar                                                ##
    ## Documentacion:                                                                    ##
    ##                                                                                   ##
    ## http://www.aeromodelismovirtual.com/showthread.php?t=4300                         ##
    ## http://randomhacksofboredom.blogspot.com/2009/06/wii-motion-plus-arduino-love.html##
    ## http://www.windmeadow.com/node/42                                                 ##
    ## http://ingenegros.com.ar/Microcontroladores/leer-un-wii-nunchuck-con-arduino.html ##
    ## http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus             ##
    #####################################################################################*/
    
    //see http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
    //for info on what each byte represents
    
    // Yaw data[]    3 y 0 
    // Pitch data[]  4 y 1
    // Roll data[]   5 y 2
    // Estos Pich y Roll pueden intercambiarse según se monte el sensor
    
    #define FB    //Coge mis parámetros del servo
    
    #include <Wire.h>
    
    // ************** OPCIONES DE CONFIGURACION ****************************
    int pitch_reverse = 0;  // Invierte servo TILT   0 = normal  1 = Reverse
    int yaw_reverse = 1;    // Invierte servo PAN    0 = Normal  1 = Reverse
    int pitch_gan = 200;     // Relación entre angulo girado por la cabeza y el girado por
    int yaw_gan = 200;       // el servo a mayor x_gan menor es en angulo girado
    int SwitchPin = 5;      // Ubicacion del interrupter de centrado
                            // usar una resistencia "Pull-up" entre este
                            // pin y + para ponerlo a positivo y conectar un
                            // interruptor NA entre este pin y masa 
                            
    int ppmOutPin = 4 ;    // Salida de datos al trainner port
    int ppmInPin = 2 ;     // Entrada de datros del trainner port futura actualizacion otras frec. distintas de
                          // 35 y 72
    int canales = 6;       // Canal a partir del cual añadiremos el HT  / Canales que se generan                       
    
    // Variables actualización
    
    int refreshTime1= 8;    // Intervalo de generar trama 
    long lastPulse1 = 0;
    
    // Recorrido maximos de los servos - -2000, 2000 corresponde
    // a un pulso de 1000 a 2000ms  y es el estandar
    // Modificando los valores podemos ajustar el recorrido del servo
    // no utilizar valores por encima de 2500 puede no funcionar
    
    #if defined FB
      int pitch_min = -2200; // TILT Minimo
      int pitch_max = 900;  //      maximo
      int yaw_min = -2300;   // PAN  Minimo
      int yaw_max = 2400;    //      Maximo
    #else
      int pitch_min = -2000; // TILT Minimo
      int pitch_max = 2000;  //      maximo
      int yaw_min = -2000;   // PAN  Minimo
      int yaw_max = 2000;    //      Maximo
    #endif
    
    //**********************************************************************
    
    volatile int estado = 1 ;
    volatile int numPulsos= 0;
    volatile int reposo=0;
    volatile unsigned long time=0;
    
    byte data[6]; //six data bytes
    int yaw=0, pitch=0; //three axes
    int yaw0=0, pitch0=0; //calibration zeroes 
    int ledPin = 13;
    int servoPin = 7;
    int servoPin2 = 6;
    
    int pulseWidthP = 0;
    int pulseWidthY = 0;
    int minPulseP = 1500;
    int minPulseY = 1500;
    int dtime = 10;
    int t = 0;
    long pitch_bak1 = 0;
    int pitch_bak2 = 0;
    int pitch_bak3 = 0;
    long yaw_bak1 = 0;
    int  yaw_bak2 = 0;
    int  yaw_bak3 = 0;
    
    void wmpOn()  // Inicializa el Wii Motionplus
    {
      Wire.beginTransmission(0x53); //WM+ starts out deactivated at address 0x53
      Wire.send(0xfe); //send 0x04 to address 0xFE to activate WM+
      Wire.send(0x04);
      Wire.endTransmission(); //WM+ jumps to address 0x52 and is now active
    }
    
    void wmpSendZero()
    {
      Wire.beginTransmission(0x52); //now at address 0x52
      Wire.send(0x00); //send zero to signal we want info
      Wire.endTransmission();
    }
    
    void calibrateZeroes(){  // Proceso de calibracion del motionplus al inicio
    
      for (int i=0;i<300;i++)       //Vacía el buffer del WM+ de basura
      {                             // antes de calibrar el dispositivo
        wmpSendZero();
        Wire.requestFrom(0x52,6);
        for (int i=0;i<6;i++){
          data[i]=Wire.receive();
        } 
      }
    
      for (int i=0;i<10;i++)
      {
        wmpSendZero();
        Wire.requestFrom(0x52,6);
        for (int i=0;i<6;i++){
          data[i]=Wire.receive();
        }
        yaw0+=(((data[3]>>2)<<8)+data[0])/10; //average 10 readings
        pitch0+=(((data[5]>>2)<<8)+data[2])/10;
    
      }
    }
    
    void receiveData()  // Recibe y procesa los datos del motionplus
    {
      digitalWrite(ledPin, HIGH);  
      wmpSendZero(); //send zero before each request (same as nunchuck)
      Wire.requestFrom(0x52,6); //request the six bytes from the WM+
      for (int i=0;i<6;i++){
        data[i]=Wire.receive();
      }
      digitalWrite(ledPin, LOW);
      
      if (data[4]&&2){
          pitch=((data[5]>>2)<<8)+data[2]-pitch0; 
          if (abs(pitch) <30) pitch=0;     
      } 
      else
      {
          pitch=(((data[5]>>2)<<8)+data[2]-pitch0)*5;
      }  
      if (data[3]&&2){
          yaw=((data[3]>>2)<<8)+data[0]-yaw0;
          if (abs(yaw )<30) yaw=0;
      }
      else
      {
          yaw=(((data[3]>>2)<<8)+data[0]-yaw0)*5;
      }
      if (pitch_reverse == 1) pitch*=-1;
      if (yaw_reverse == 1) yaw*=-1;
    }
    
    void updateServo()  // Calcula el ancho del pulsos para cada servo
    {
          // ************** pitch *******************************
         pitch_bak2= (pitch_bak1 += pitch)/pitch_gan;
         pitch_bak3 = constrain((pitch_bak1/ pitch_gan),pitch_min,pitch_max);
         pulseWidthP = (pitch_bak3/4)+minPulseP;
        
        // ************* yaw **********************************    
         yaw_bak2=(yaw_bak1+=yaw)/yaw_gan  ;
         yaw_bak3 = constrain(yaw_bak2,yaw_min,yaw_max);  
         pulseWidthY = (yaw_bak3/4)+minPulseY;
    
        // ************ Control para pruebas *********************
        // ** Quitar el comentario a las 2 lineas siguiente para monitorizar con el arduino *******
        // ** Recordar que hay que comentar de nuevo antes del uso definitivo
        
        //Serial.print("\t pulse: ");   Serial.print(yaw); Serial.print("\t ");Serial.print(yaw_bak1); 
        //Serial.print("\t ");  Serial.print(yaw_bak2); Serial.print("\t ");Serial.print(yaw_bak3); Serial.print("\t "); Serial.println(pulseWidthY);  
    }
    
    void updatePPM()  // Añade los canales del HT 
    {
         // >>>> Genera los primeros canales ficticios <<<<<<<<<
        for (int i=0; i < canales; i++)   // Envia el pulso ficticio de nº canales
        {
          digitalWrite(ppmOutPin,LOW);
          delayMicroseconds(400);
          digitalWrite(ppmOutPin, HIGH);
          delayMicroseconds(650);
        }
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
    
        // >>>> Canal "pan" (Canales+1)  <<<<<<<<<
        digitalWrite(ppmOutPin,HIGH);
        digitalWrite(servoPin2, HIGH);    
        delayMicroseconds(pulseWidthY-400);
      
        // Pulso de separacion de canales 
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
       digitalWrite(servoPin2, LOW);
       digitalWrite(servoPin, HIGH);
        
        // >>>> Canal "tilt" (Canales+2) <<<<<<<<<
        digitalWrite(ppmOutPin,HIGH);
        delayMicroseconds(pulseWidthP-400);
    
       // Pulso de separacion de canales 
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
        digitalWrite(ppmOutPin,HIGH);
        digitalWrite(servoPin, LOW);
    }
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(ppmOutPin, OUTPUT);  
      pinMode(ppmInPin, INPUT);   
      pinMode(ledPin, OUTPUT);  
      pinMode(servoPin, OUTPUT);   
      pinMode(servoPin2, OUTPUT);  
      pinMode(SwitchPin, INPUT);
      digitalWrite(ppmOutPin,HIGH);
    
      Wire.begin();
      wmpOn(); //turn WM+ on
      digitalWrite(ledPin, HIGH);
      calibrateZeroes(); //calibrate zeroes
      digitalWrite(ledPin, LOW);
    }
    
    void loop()
    {
        receiveData(); 
        updateServo();
        if (millis() - lastPulse1 >= refreshTime1){   // Genera la trama PPM
            updatePPM(); 
            lastPulse1 = millis();
           } 
       if (digitalRead(SwitchPin) == 0) {
        pulseWidthP = 1500;
        pitch_bak1 = 0;
        pitch_bak2=0;
        pulseWidthY = 1500;
        yaw_bak1 = 0;
        yaw_bak2 =0;
      }
    }
    que lo disfruteis. Recordar que aunque no hace falta el boton de reset no esta de más colocarlo. Cuando encendais la radio hay que mantener quieto el HT durante 2 segundos, pero tiene que estar quieto quieto
     
  2. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Bueno algo he avanzado.

    He metido el codigo ese que me comentasteis que colocara y lo que me sale en la pantalla es esto.

    WM+ tester
    Yaw0:0 Pitch0:0 Roll0:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0
    yaw:0 pitch:0 roll:0

    La velocidad del programa es de Serial.begin(9600); pero en el monitor lo veo en 19200 baudios

    Una ayuditaa pleasee
     
  3. fredmendes Miembro

    fredmendes
    Joined:
    Nov 16, 2009
    Messages:
    121
    Likes Received:
    0
    Me parece que tienes que hacer un reset al arduino despues que conectas el cable USB. Cuando haces el reset "hay que mantener quieto el HT durante 2 segundos, pero tiene que estar quieto quieto".
     
  4. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Ya lo he hecho pero sigue dando esos valores.

    Para verlo en el monitor a 115200 tengo que poner en el programa Serial.begin(57600); asi veo en el monitor en esos baudios.

    No se por que es pero por lo menos ya no veo cosas raras.

    Se os ocurre que es lo que puede pasar ahora?
     
  5. fredmendes Miembro

    fredmendes
    Joined:
    Nov 16, 2009
    Messages:
    121
    Likes Received:
    0
    Me parece que no recibe ninguna informacion del WMP. Mira las conexiones del WMP al arduino. Como tienes conectado el interruptor de centrado? Que interruptor has utilizado?

    Este es el codigo utilizado:

    Code:
    #include <Wire.h>
    byte data[6]; //six data bytes
    int yaw, pitch, roll; //three axes
    int yaw0, pitch0, roll0; //calibration zeroes
    
    void wmpOn(){
    Wire.beginTransmission(0x53); //WM+ starts out deactivated at address 0x53
    Wire.send(0xfe); //send 0x04 to address 0xFE to activate WM+
    Wire.send(0x04);
    Wire.endTransmission(); //WM+ jumps to address 0x52 and is now active
    }
    
    void wmpSendZero(){
    Wire.beginTransmission(0x52); //now at address 0x52
    Wire.send(0x00); //send zero to signal we want info
    Wire.endTransmission();
    }
    
    void calibrateZeroes(){
    for (int i=0;i<10;i++){
    wmpSendZero();
    Wire.requestFrom(0x52,6);
    for (int i=0;i<6;i++){
    data[i]=Wire.receive();
    }
    yaw0+=(((data[3]>>2)<<8)+data[0])/10; //average 10 readings
    pitch0+=(((data[4]>>2)<<8)+data[1])/10;
    roll0+=(((data[5]>>2)<<8)+data[2])/10;
    }
    Serial.print("Yaw0:");
    Serial.print(yaw0);
    Serial.print(" Pitch0:");
    Serial.print(pitch0);
    Serial.print(" Roll0:");
    Serial.println(roll0);
    }
    
    void receiveData(){
    wmpSendZero(); //send zero before each request (same as nunchuck)
    Wire.requestFrom(0x52,6); //request the six bytes from the WM+
    for (int i=0;i<6;i++){
    data[i]=Wire.receive();
    }
    yaw=((data[3]>>2)<<8)+data[0]-yaw0;
    pitch=((data[4]>>2)<<8)+data[1]-pitch0;
    roll=((data[5]>>2)<<8)+data[2]-roll0;
    }
    //see http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
    //for info on what each byte represents
    void setup(){
    Serial.begin(115200);
    Serial.println("WM+ tester");
    Wire.begin();
    wmpOn(); //turn WM+ on
    calibrateZeroes(); //calibrate zeroes
    delay(1000);
    }
    
    void loop(){
    receiveData(); //receive data and calculate yaw pitch and roll
    Serial.print("yaw:");//see diagram on randomhacksofboredom.blogspot.com
    Serial.print(yaw); //for info on which axis is which
    Serial.print(" pitch:");
    Serial.print(pitch);
    Serial.print(" roll:");
    Serial.println(roll);
    delay(100);
    }
    
    No hay que cambiar nadie en el codigo. Conectar cable USB, hacer reset en arduino, pinchar serial monitor y cambiar a 115200.
     
  6. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    No estoy utilizando ningun interruptor de centrado ahora mismo, solo quiero que salga algun valor y no ceros.

    Las conexiones del wimm+ son las que estan en los esquemas... y yo creo que no da valor alguno o algo.
     
  7. zotfidjy Miembro

    zotfidjy
    Joined:
    Nov 19, 2007
    Messages:
    363
    Likes Received:
    0
    Funciona

    Bueno ya he adaptado los canales para multiplex del nuevo codigo de Fbforos, quedan en el 3 y el 5 como antes puso Jalves.
    Por alguna razon no va tan fino como antes, aunque si creo que se podra mejorar.

    Por cierto que me cambio a Futaba, si todo va bien esta semana dejo Multiplex, si alguien necesita el codigo adaptado para la cockpit y un "como se hace" que avise.
    Saludos
     
  8. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    A que te refieres exactamente, ¿Que valores le diste a la ganancia? ¿has comentado #define FB? estuve haciend pruebas con mi sistema y se me olvido comentarlo, con esos valores tiene un recorrido estraño ya que esta adaptado a mi configuración
     
  9. zotfidjy Miembro

    zotfidjy
    Joined:
    Nov 19, 2007
    Messages:
    363
    Likes Received:
    0
    Ahora va mejor, por alguna razon al comentar #define FB va mejor. Antes eran movimientos torpes, no siempre respondia bien, vamos que no era lineal. He estado intentando descentrarlo pasando del recorrido maximo, y cuando vuelves al punto donde te saliste, recupera el movimiento y el centro esta clavado!!
    Aun no pude jugar con las ganancias, eso esta de serie!

    Lastima que no tenga mucho tiempo para "jugar y aprender" con el arduino, me esta gustando....
    Muchas gracias.
    Saludos
     
  10. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Una ayudita para esos valores?
     
  11. carlosdma Miembro

    carlosdma
    Joined:
    Mar 2, 2007
    Messages:
    404
    Likes Received:
    0
    Hola fredmendes,
    muy buen aporte del codigo ya lo cargue y adapte a mi conexionado , va muy bien, lo probare en vuelo, por ahora en tierra corre bien,
    a una cosa se me desentra cuando, por ejemplo el Tilt esta a tope de carrera y muevo el PAN a los limites del recorrido , pero eso lo hice para forsar todo ,,,
     
  12. alejandro chianea Nuevo Miembro

    alejandro chianea
    Joined:
    Oct 19, 2009
    Messages:
    76
    Likes Received:
    0
    Hola fbforos queria consultarte como quedaria el diagrama de conexiones ya ahora que has quitado el reset.

    saludos
     
  13. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Gente!!

    bueno.. he estado casi dos semanas con muy poco tiempo por razones laborales, cada tanto le daba una pequeña ojeada al hilo para ver como seguia todo pero nada mas, sin aportar nada. Ahora que me pensaba poner a retomar el proyecto veo que la mayoría de los problemas se encuentran resueltos :party::party::party::party: me alegra muchísimo que se hayan podido encontrar esos pequeños bugs que tanto nos estaba rompiendo la cabeza.

    Mis felicitaciones para aquellos que siguieron con el proyecto y han logrado resolver todos los inconvenientes que se estaban presentando. :worthy:

    Ahora solo queda escuchar las suplicas de todos aquellos que no cuentan con la programación avanzada del puerto trainer en sus radios y si o si necesitan la compatibilidad PPM. Esperemos pronto poder darles una solución.

    PD: Acabo de cargar la nueva versión en mi arduino a ver si el próximo fin de semana la pongo en practica.

    Saludos

    El Nono
     
  14. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenos dias EL_nono, podrias ayudarme por favor con mi problema del wiim+ y el arduino?

    Es que nadie me ayuda con el tema de los valores que me da, conexiones etc.
     
  15. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    yapahoe,

    Tu wii mp es original Nintendo??
     
  16. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Yapahoe

    Bueno.. veo que ya solucionaste el tema de los caracteres raros que aparecian en el terminal.

    Ahora veo que el problema que estas teniendo es una falla en la comunicacion entre el Arduino y el WM+
    Esto en la mayoria de los casos se debe a un mal conexionado del mismo. te recomiendo realizar las conexiones teniendo en cuenta el pinout del conector (es decir en que pin esta cada cosa) y NO guiandote por el color de los cables ya que he visto que estos no siguen una norma y en algunos wm+ estan puestos de una forma y en otros de otra.
    En mi caso, por una cuestion de comodida y de seguridad para no cometer errores directamente elimine del wm+ el conector original y conecte los cables desde el arduino directamente a la placa del wm+

    [​IMG]

    Saludos!

    El Nono
     
  17. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Si si el wii mp que uso es original de nintendo.

    Yo estoy usando los cables originales que trae pero no me guio por los colores sino por los pines.

    Este es el que uso yo.

    Os dejo una foto.
     

    Attached Files:

    • 1.jpg
      1.jpg
      File size:
      125.3 KB
      Views:
      203
  18. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Mi amigo Zotfidjy,

    por supuesto que no era lineal.Al comentar #define FB pasas a parámetros generales.

    Code:
    #if defined FB
      int pitch_min = -2200; // TILT Minimo
      int pitch_max = 900;  //      maximo
      int yaw_min = -2300;   // PAN  Minimo
      int yaw_max = 2400;    //      Maximo
    #else
      int pitch_min = -2000; // TILT Minimo
      int pitch_max = 2000;  //      maximo
      int yaw_min = -2000;   // PAN  Minimo
      int yaw_max = 2000;    //      Maximo
    #endif
    
    Para aquellos que deseen aprender un poco más teneis que saber que los valores estandar son anteriormente citados son -2000 y 2000.

    para esos valores el pulso que se genera es 1000ms, 1500 al centro y 2000ms el máximo.

    Si los modificamos como los tengo yo podemos reducir el recorrido o hacerlo un poco mayor
     
  19. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    yapahoe,

    Recomiendo hacer lo que se siegue:

    1. carregar lo programa do blinky led (http://arduino.cc/en/Tutorial/Blink ) e comprobar que la placa arduino está funcionando bien (o led tiene que parpadear)

    2.efectuar las aligaciones :

    castanho/brown : 3.3V ou 5V
    vermelho/red: A5
    verde/green: A4
    azul/blue: GND

    estas aligaciones están de acuerdo con lo esquema de Nono con las colores de tu wiimp, mas verifica e re-verifica se la linea de 5V está correcta.

    utiliza lo código (software) de aquí : http://randomhacksofboredom.blogspot.com/2009_06_01_archive.html

    e verifica no serial monitor los valores producidos pela wiimp.


    Se 1. fallar, entonces lo problema está en lo arduino,

    se 2. fallar, entonces lo problema está en la wiimp.


    Se 1. e 2. resultaren, introduce lo código de Nono e deberá funcionar también.

    Después podrás también experimentar lo código de fbforos, mas aquí tienes que introducir más una variable, lo Tx.

    Boa sorte
     
  20. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Graciasss!!!!

    Mañana me pondré a ello a ver si consigo solucionar el problema y nos llevamos todos una alegria, sobre todo vosotros que dejáis de ver mensajes pidiendo ayuda.

    Muchas gracias por vuestra ayuda y a ver si consigo solucionar este problema.
     
  21. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Yapahoe,

    los colores tal y como te los dio jalves son correctos para esa placa.

    Marron/brown : 3.3V ou 5V
    rojo/red: A5
    verde/green: A4
    azul/blue o negro: GND

    por favor podrías poner una fotico de todo el montaje, en el cual se vean las conexiones claramente.
     
  22. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Alejandro, solo tienes que eliminar el pulsador que pone Reset.

    Aunque no te lo recomiendo. Si mueves el sensor cuando se esta inicializando, veras que tras un segundo la cámara comienza a irse hacia un lado y arriba o abajo. Sin ese pulsador tendrías que apagar la emisora y volverla a encender.

    No recomiendo usar el boton de reset en vuelo ya que es más dificil mantenerse quietecito para la calibración de giroscopos.
     
  23. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Vale cuando termine el montaje una vez mas tal cual me ha comentado con los colores esos os pongo la foto para que lo veais claramente junto con el arduino
     
  24. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    off the topic. Sensor de corriente

    Tendreis uno o dos sensores de corriente del dakar que no useis?
     
  25. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Gente, Fbforos!!

    Estaba realizando una gráfica nueva ya que mucha gente esta confundida en cuanto a que conexionado usar y me encuentro algo que no me había dado cuenta antes en el gráfico subido for fbforos: ha cambiado el pin VCC desde donde se alimenta el WM+ desde el Arduino e inmediatamente recorde el porque yo no habia utilizado ese pin VCC, en mi arduino ESE PIN NO ENTREGA TENSION ALGUNA desconozco si es esto normal en todos los arduinos o solo una falla del mio pero a aquellos que esten usando este diagrama de conexionado y esten teniendo problemas para hacerlo andar les recomiendo chequear con un multimetro a ver si hay una tensión de 5v en dicho pin. Si no es así tengan en cuenta tomar la tensión de 5V desde el pin VCC del puerto de programación del Arduino (como esta en mi diagrama original y desde donde fbforos toma la tensio para la resistencia )

    Por otro lado, Fbforos: no entiendo porque has cambiado la forma de conectar la resistencia del pin de centrado ya que este cambio para lo único que sirve es para generar confusión y forzar a aquellos que ya tenían el hardware armado a tener que volver a modificarlo.

    Saludos.

    El Nono




     

    Attached Files:

  26. zotfidjy Miembro

    zotfidjy
    Joined:
    Nov 19, 2007
    Messages:
    363
    Likes Received:
    0
    Hola, en mi placa de arduino el Vcc no es ese pin, es el tercero empezando por el lado de Blk, asi que no coincide con la que esta puesta en la imagen ed Fbforos. Desde el principio comprobe tensiones y me va bien. Espero que sea ese el problema y que podais hacerlo funcionar!! Saludos

    EDITADO: Es solo mi placa o la numeracion de la placa de la foto esta al reves, como vista desde abajo??? no os fieis de la posicion de las numeraciones de la imagen, buscarlas en vuestra placa.
     
  27. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Nono, se nota que no te has leido lo que recuadras ni visto las fotos anteriores.

    Estoy usando un cable de 4 hilos de USB y tengo el pulsador de centrado puesto en la caja junto al conecto para activarlo sin mover las manos
    si utilizo uno para el + otro para el negativo, otro para bajar los datos, solo queda uno, que yo no lo conectaria a 11V:blink: de la salida + por lo que solo puedo conectarlo a negativo:redface: y cambiar la resistencia a positivo

    Todos los Vcc en el arduino estan conectados por lo cual es esquema es correcto.
     

    Attached Files:

    #377 fbforos, Dec 18, 2009
    Last edited: Dec 18, 2009
  28. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Donde tenemos los ojos

    Esto me esta tocando lo catap:censurado:s, por favor antes de hacer cualquier tipo de critica mirar bien las cosas, efectivamente, el VCC en tu placa es el 3º empezando desde el BLK y en la mía tambien :icon_redface: por eso te funciona


    Entiendo que la gente se pueda equivocar al hacer un programa y tenga que depurarlo hasta que funcione, pero no que critique por criticar o sin comprobar las cosas 10 veces y esperar una hora antes de hablar o escribir un post de crítica
     

    Attached Files:

  29. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Arduino mini, esquema procedente de Sparkfun,

    http://www.sparkfun.com/datasheets/DevTools/Arduino/Arduino-Pro-Mini_328-v11.pdf

    Las conexiones son como estan en la figura adjunta. No tengo estudios, ni tampoco soy muy listo, pero VCC==VCC siempre que no se indique lo contrario y en el esquema que estoy utilizando vale cualquiera de los dos.

    Cualquier placa que se autodenomine Arduino Pro mini debe de tener este conexionado. Lo mismo que ocurre con GND, se puede utilizar cualquiera de ellas (hay 3 en la placa).

    Siento haberme enfadado, porque ahora me tengo que desenfadar y ya no puedo pensar en cosas utiles, pero es que esto clama un poquito al superior:sad:
     

    Attached Files:

    #379 fbforos, Dec 18, 2009
    Last edited: Dec 18, 2009
  30. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Se me olvidaba, puedo mantener varias configuraciones usando defines, pero el hard sintiendolo mucho lo tengo que hacer como mejor se ajuste a mis necesidades. Entre no publicar el soft adaptado a mis necesidades y publicarlo, creo que lo mejor es publicarlo. Siento mucho que el que lo tenga montado lo tenga que cambiar, pero tambien puede analizar el código y hacerse su versión. Creo que el código que hemos publicado está lo suficientemente claro como para que se pueda analizar y cambiar con poco esfuerzo.

    Yo también lo tenía montado siguiendo tu esquema y lo tuve que cambiar por que si no, no me funcionaba:ansioso:


    Y por último del todo, hos:censurado: a ver si os empieza a funcionar y colocan este HT-WM+ en artículos destacados
     
  31. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Gente, Fbforos:

    La verdad no me gusta nada el tono de tus mensajes, creo que aqui todos estamos tirando hacia el mismo lado tratando de mejorar este proyecto y ayudar a aquellos interesados en montarlo y que quizás no dispongan de los conocimientos de programación y electrónica que nosotros tenemos para que lo puedan contruir lo mas facilmente.

    Si por alguna extraña razón te molesta que yo siga colaborando en este proyecto no tiene mas que deciemelo y lo dejo en tus manos. Yo tengo mi propio foro donde podre seguirlo por mi lado sin molestarle a nadie.

    Ahora volviendo al tema que comente anteriormente:

    Si bien he estado dos semanas con muy poco tiempo he tratado de mantenerme al dia con el hilo, pese a ello puede que haya algo que se me haya pasado.

    Igualmente acabo de repasar el hilo nuevamente antes de responderte y no he encontrado nada que pueda cambiar lo que dije.

    Te aclaro que cada una de las cosas que he echo y he publicado primero la he comprobado y probado en la practica varias veces y me he cerciorado de que cada dato publicado sea correcto.

    Te puedo asegurar que al menos en el arduino que tengo en mis manos el pin VCC del puerto de de programacion no esta conectado internamente con el VCC de la parte superior (el del pin 4 que esta en tu grafico)
    Por otro lado, si prestas especial atencion al esquema del arduino suministrado por sparkfun, esquema por el cual me he guiado en todo momento, si entramos con por el pin RAW con una tension de 12v estamos accediendo al regulador de tension interno del arduino el cual suministra 5v en el puerto VCC del puerto de programacion. Es por ello que alli podemos contar con los 5v necesario para alimentar el wm+ y desconozco el porque el pin VCC superior no esta conectado a este.

    Si es asi, hubieses usado una foto de la version de arduino que tu estas usando y no una foto de la que yo estoy usando en la cual el VCC del pin 4 no proporciona los 5v necesarios.

    En cuanto a lo de critircar, si te refieres a mi, te cuento que no estoy criticando a nadie, simplemente estoy marcando un posible error que le puede llegar a traer problemas a alguien. Y si.. antes de escribir o que escribi primero lo verifique en mi propio HT.


    Realmente me gustaria que me aclares si esto es referido a mi ya que si es asi no me gusta para nada tu actitud.

    Realmente no se que arduino tendras pero pero te repito que en el que tengo yo no es asi.

    Ha!! y otra cosa, no se que experiencia tendrás en electronica pero te aviso que muchas veces suelen haber pequeñas diferencias entre la placa impresa y el circuito electrónico, motivo de actualizaciones o cambios en el diseño de ultima hora.

    Si tu intensión es la misma que la mia que en este caso es que todos puedan hacer funcionar este head tracker no podemos actuar como dices.
    No me parece coherente que porque a mi no me entro la plaqueta en una cajita le cambie el programa y el circuito a todo el mundo y que se arreglen!!
    Me parece que lo justo en esos casos es mantener un circuito y programa universal y coherente para todos y esas pequeñas "personalizaciones" no publicarlas ya que solo sirven para generar confusión.

    No es: yo lo uso asi y si a lo demas no les gusta que aprendan a programar o se hagan su propio HT! no es la filosofia del foro ni del proyecto.

    Saludos.

    El Nono
     
    #381 El_Nono, Dec 18, 2009
    Last edited: Dec 18, 2009
  32. luico Moderator

    luico
    Joined:
    Mar 9, 2007
    Messages:
    3,189
    Likes Received:
    0
    Señores, calmen un poco sus ánimos.

    Entiendo que este proyecto del head tracker basado en WII+ es muy interesante y le están dedicando muchas horas y esfuerzo, y aqui están los magníficos resultados en muy pocas semanas; pero no se dejen llevar por el cansancio y las horas de sueño al criticar al compañero que solo tiene el mismo objetivo que ustedes.

    Espero que estos últimos intercambios de palabras e impresiones sean los últimos en esta dirección (ya que pueden ofender más de lo que pretendemos) y que solo sirvan para mejorar y aclarar dudas en el desarrollo del circuito.

    Saludos a todos y Felices Fiestas.
     
  33. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenos diasssss y feliz navidad a todos!!!!

    Hoy por la mañana me voy a poner a hacer todo lo que me habeis comentado tanto de la programacion como los pines etc.

    Espero poder daros alguna BUENAAAAAA NOTICIAAA NAVIDEÑAAA hoy a la noche...:tongue2::tongue2::tongue2::tongue2:

    Gracias por vuestra ayuda!!!
     
  34. Fernank2 Miembro

    Fernank2
    Joined:
    Apr 11, 2008
    Messages:
    220
    Likes Received:
    0
    Hola a todos,

    Me parece muy interesante todo este proyecto y quiero hacer prácticas con todo lo que publicais pero me asaltan unas dudas:

    ¿que osciloscopio puedo utilizar? ¿es un software? de ser software de donde lo descargo y como lo conecto al PC?.

    Otra cosilla, este sensor que estamos utilizando ¿es acelerómetro?, es decir, ¿habeis probado que no se produzca movimiento con cualquier aceleración lineal en algún eje y realmente mida la rotación? a lo mejor digo una tontería pero tengo esa duda.

    Gracias y ánimo a todos los máquinas que aquí participan.:worthy:
     
  35. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenas a todos.

    Ya he hecho la prueba con el programa del LED y este se enciende sin problemas a la vez que el lez verde del arduino.

    Por otro lado , he puesto los cables tal y como me habeis comentado he puesto el programa y no funciona , no da valores.

    Despues he puesto el programa 3.01 le he descomentado las 2 lineas para que el monitor muestre valores asi que lo que creo que esta roto es el WIIM+, lo que no entiendo es como se ha podido romper sin que le pase nada de nada.

    Hay alguna manera de comprobar si esta roto o no esta roto con el tester?
     
  36. carlosdma Miembro

    carlosdma
    Joined:
    Mar 2, 2007
    Messages:
    404
    Likes Received:
    0
    Hola Yapaheo,

    Si las pruebas por serial te dieron bien, creo que el problema lo tienes en la electrónica,,,

    Te cuento algo que me a pasado con alguno que otro Arduino mini,, estos no venían del todo bien soldados y algunos terminales del IC o del cristal estaban en falso contacto,, quizás sea ese tu problema , yo repasaba con mi soldador los contactos y salía en marcha ,,,, también sucedía cuando ponía termocontraible o adhería con plástico a algún artefacto

    Pero si tienes el WII roto creo es otro tema, luego tomo tensión y te comento así pruebas,,,
     
  37. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Yapahoe

    Con el programa "blink" el led verde deberia de encender y apagar y el rojo queda fijo. Si esto es asi al parecer el Arduino estaría bien.

    Si te es posible coloca una foto en que se vea bien el conexionado entre el arduino y el wm+ y copia en en tu respuesta al menos la primer parte del programa que están cargando en el Arduino (la parte donde están los parámetros de configuración)

    Por otro lado, comprueba que al wm+ le estén llegando 5v por el pin 1 de J1 que en tu caso es el cable marrón.

    Esperemos que no pero es posible si se conecta algo mal en la entrada del wm+ este se queme sobre todo si se aplica mal la tensión o se aplica mas de 5v.

    Saludos.

    El Nono
     
  38. zotfidjy Miembro

    zotfidjy
    Joined:
    Nov 19, 2007
    Messages:
    363
    Likes Received:
    0
    Vamos a ver Fbforos, los Ojos los tengo en la cara, por si no lo sabias, y este tipo de comentarios, que no criticas, no son para que te pongas asi, tio templa los nervios un poco que todos tenemos cosas que hacer.
    ERA UN COMENTARIO.
    Lo decia porque la placa para mi estaba al reves, como puedes ver en mi post, en la parte que pone "EDITADO", por si no lo ves, deje lo primero porque no me gusta borrar cosas, nada mas.

    Era porque si la gente no mira las letras y solo se fia de los pines y la posicion de la placa, alomejor les estaba causando problemas.
    No te preocupes que intetare ser perfecto la proxima vez.

    Saludos y perdona, me gusta el trabajo que estas haciendo, pero intentare no preguntar ni decir nada mas para no cabrearte, OK?
    Saludos y pasadlo bien.
     
  39. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Hola NONO, si que se enciende y se apaga el led verde por lo que entiendo que el arduino esta bien y lo que esta fallando es el WIIM+.

    Quizas un corto o asi en algun momento ha podido hacer que el wiim+ se rompa, no lo se es que no tiene mucha explicación la verdad.
    Voy a comprarme otro WIIM+ a ver si es el problema por que el arduino hace bien lo del led, tanto el suyo de la placa como el que le pongo yo en los pines que indica el código.
     
  40. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Nono, no te equivoques, si he llegado hasta donde he llegado valga la redundancia a sido gracias a que Cacer inicio el hilo y tu hiciste la primera parte del programa.Por lo cual si me gusta este proyecto es por la colaboración. Las medallas me las dejo para el trabajo que es donde rinden:laugh:

    El VCC de la parte superior e inferior es exactamente el mismo. Los pads estan comunicados.

    Si he utilizado tu foto es por una sola razón, es la misma versión que la mia y no es cuestion de perder el tiempo hacien fotos cuando tu ya la pusiste. Deberias hacer una prueba comprueba que el pad superior y el inferior del VCC de JP6 están unidos. Puede que te venga mal y sea un problema de tu arduino. La placa tiene 2 VCC para su uso.

    Por supuesto estoy completamente de acuerdo contigo y tambien al VCC situado en JP6 (conexiones en la linea RAW en adelante). adjunto tienes el esquema de los 2 conectores que proceden de la web de sparkfun.

    En este caso esto no se refiere a ti.

    En cuanto a la critica puede ser constructiva, negativa, o neutra. La constructiva es la que nos hace avanzar. Yo nunca le diria a un compañero de fatigas:
    Esto no funciona o funciona mal a secas. Para poder seguir avanzando hay que decir tengo este problema ¿Que podría ser?. Esto no ofende a nadie y es realmente estimulante. Muchas veces no funciona debido a factores externos.

    La filosofia de este foro creo que debería ser didactica tambien. Para ello cuando hacemos el programa tratamos de comentar completamente todo para que cualquiera pueda aprender un poco, sino mira tu programa lleno de comentarios. Si programasemos para nosotros seguramente escribiríamos la mitad y dentro de un año cuando fuesemos a retomarlo tendríamos que empezar de nuevo.
    Todavía hay pocos HT en marcha y si lo piensas bien el cambio no es tan malo ya que permite usar unicamente 4 hilos para conectar a la radio si ponemos el conector de centrado junto a este.

    Bueno me acabo de dar cuenta que llevo una hora haciendo el Jili:censurado: con este mail, cuando me acaba de llegar otro ardu para hacer mas prueba.

    Felices vuelos a todos

    a se me olvidaba
    no estoy de acuerdo. Pregunta constructivamente. Esto funciona mal, no es una pregunta. si me preguntas por que cuando comentaste #define FB te funcionaba distinto te hubiese dado la respuesta tal y como te la di después, tratandote de explicar para que valen los parametros que se cambian, por ejemplo
     

    Attached Files:

  41. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    otro modelo de Arduino

    Como os comentaba, me acaba de llegar otro arduino y este es ligeramente distinto. Si os fijais el conector al programador está girado 180º. Aunque el esquema su posición esta girada 180º. Este es seguramente como el que dice Zotfidjy

    Fijaros bien el la leyenda que lleva cada una de las conexiones a la hora de soldarlas. Si conectamos al VCC buscar el VCC. si vamos a conectar al masa burcar GND, etc etc
     

    Attached Files:

  42. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Que co:censurado:nes pasa en este hilo...

    Es justo lo contrario de lo que empezo bien... Todos aportan, nadie se lleva medallas, el premio es ver como a los colegas les empieza a funcionar el invento y se ponen incluso a cambiar parametros y aprender a programar el Ardu.. Eso si que es para darles una medalla..

    Las labores de Nono y Fbforos, han sido fantasticas y cada uno ha aportado mas con las ayudas a los compañeros que con el propio código. Esto que no se olvide nunca!!!

    Sinceramente creo que teneis que calmaros, que no se trata de una carrera y sobre todo fbforos, que se que estas currando mucho con el proyecto y creo que el cansancio te está machacando el buen humor...

    Os pido por favor, que leais dos veces antes de lanzar el post, ya que desgraciadamente cuando se escribe, las expresiones pueden parecer mas duras que la intención.

    Espero que este sea el ultimo comentario sobre este asunto y poneros a currar de una :censurado: vez, que perdeis fuerza con vuestros reproches..

    Un abrazo a los dos.

    Nono, espero que ni se te ocurra pensar en no postear aqui, no fastidies a los colegas...

    Punto y final del asunto y no se hable mas del tema.

    Creo que tenemos que pensar para los proximos proyectos, con código libre, la forma de trabajo en cuanto al posteado, de la misma forma que se trabaja en opensource, con un grupo de validadores que prueben y acepten, antes de sacar una modificación.... :cool2:
     
  43. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Sobre el VCC, creo recordar haber leido, que existe una version de placas con error, en el que no está bien conectado uno de los pines del VCC.
     
  44. Fernank2 Miembro

    Fernank2
    Joined:
    Apr 11, 2008
    Messages:
    220
    Likes Received:
    0
    una vez puesto fin a la disputa, ¿me podeis orientar sobre mis cuestiones anteriormente expuestas?

    Gracias y saludos.
     
  45. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
  46. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenos días a todos.

    Después de comerme mucho la cabeza ayer me compre otro WIIm+ a ver si es que el otro estaba "muerto". Espero daros buenas noticias a lo largo del día de hoy.

    Un saludo
     
  47. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Fernank

    El que yo uso es este:

    [​IMG]

    Es muy economico y funciona realmente bien para este tipo de usos.

    mas info en:

    http://jyetech.com/en/default.html

    Saludos

    El Nono
     
  48. Fernank2 Miembro

    Fernank2
    Joined:
    Apr 11, 2008
    Messages:
    220
    Likes Received:
    0
    Muchas grácias Jalves y El Nono por vuestra información, probare priemro con software y después me compraré el que me comenta El Nono, a ver que tal me resulta.

    Saludos.
     
  49. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Yapahoe,

    Aunque ya has comprado otro, vi que habías desoldado la cinta. Mira con una lupa que no tengas cortos ni por arriba ni por abajo de los pads de la conexión.
    Yo esta tarde voy a comprar otro WM+ a ver si puedo seguir con las pruebas, el que tengo montado para volar no me apetece andar cambiandolo :blink:
     
  50. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Funcionaaa!!!!

    Muy buenas a todos.:ansioso::ansioso::ansioso::ansioso:

    Pues por fin he conseguido que me de valores el arduino y el wiim+.:ansioso::ansioso:

    No he conseguido mover los servos pero si que me da valores ya con el programa 3.01 cuando muevo el wiim+.:baba::baba::baba::baba:

    Ahora ya supongo que se tratara de un problema de conexión entre la emisora y el arduino.:confused::confused::confused::confused:

    Yo tengo el conector redondo de futaba::redface2:
    [​IMG]
    Contact pin configuration viewed on female plug mating face :
    1 = +V batteries (SWITCHED)
    Shield = GROUND
    2 = OUT
    3 = IN
    4 = +V (for some transmitters only). Connecting pin 4 and 5 to each other on some transmitters will stop the HF-transmission and thus the transmiiter will not send out any signal (this is the case for 9ZAP/9ZHP, probably also for the FF8/8UAP and FF7/7UAP, NOT for the Robbe/Futaba F16-FC16-FC18, for the FC28 I don't know)
    6 = +5v on certain transmitters only (9ZAP/9ZHP, probably FF8/8UAP and FF7/7UAP) and is used by DSC-cable.

    Eso es lo que dice la pagina.
    Por lo que yo he conectado la masa a la parte exterior del conector.
    El pin numero 4 del arduino al numero 3 del conector
    Y el Raw del arduino al pin numero 1 del conector

    Cuando enciendo la emisora el arduino enciende la luz roja y la verde parpadea un poco y luego se queda fija, por lo que entiendo le llega bien el V.
    La masa tambien entiendo que esta bien por lo que el IN "deberia" de ser el que he puesto, creo yo.
    Entonces mi unico dilema en este momento (despues de haber tenido muchos ya) jejejeje es saber si ahora se trata todo de programacion o que?:blink::blink:

    Por que cuando le doy al botón del trainer la emisora sigue funcionando por lo que no esta recibiendo info del arduino, creo yo...(desde la ignorancia):blink:

    Menuda chapaaa por diosss.... os he metido:redface2::redface2::redface2:

    Podria ser el problema el pin 4 del arduino? Lo cambio a otro?
    Tema de programacion?
     

Share This Page