sábado, 15 de noviembre de 2014

Haciendo cositas con el Vag-Com

Hoy tocaba hacer un par de pruebas con el VagCom que arreglé hace un par de semanas.
Para empezar, hace unos cuantos años instalé el Tempomat (velocidad de crucero) pero nunca conseguí que funcionara, así que una vez arreglado el vagcom, me puse a trastear un rato con él.

Para ellos conectamos el cable al coche, al USB del portátil (recordad desconectaros de Internet) y abrimos el software.

Auto-Scan

Nos encontraremos con una pantalla en la que en principio vamos a usar las dos primeras opciones. Para empezar, vamos a hacer un escaneo automático de los distintos módulos del coche para ver los errores que nos suelta. Para ello seleccionamos la opción "Auto-Scan".


Y posteriormente tenemos que elegir el modelo que coche que tenemos, en mi caso un Golf IV, y pulsamos en "Start".


Lo dejamos un rato que vaya escaneando todos los módulos de los que dispone nuestro coche y al final nos saldrá un informe parecido a este:


En mi caso han salido un par de errores, uno en el sensor G68 (sensor de velocidad de la caja de cambios) y otro (que no se aprecia en la imagen) en la G2, aunque este segundo parece venir como problema adyacente del primero.

Pestillos automáticos

Otra de las opciones que es bastante interesante es el tema de los pestillos automáticos. Esto es, cuando pasas de 20km/h se cierran automáticamente y cuando sacas la llave del contacto, se abren.

La centralita se divide en módulos. Los coches, cuanto más nuevos y completos, más módulos tienen (normalmente).

Así que nos vamos a "Select":

Y ahí nos aparecerá un listado de todos los módulos. Aunque nuestro coche no tenga ese módulo, aparecerá en el listado y cuando entremos nos dará un error diciéndonos que no está disponible.

Nos vamos al módulo "46 - Central Conv.". Y después de cargar toda la información pulsamos en "10 - Adaptation".


Dentro de "Adaptation" tenemos canales. Para el BLOQUEO automático de puertas cuando se alcanzan los 20km/h tenemos que ir al canal 03, el valor establecerlo a 1 y guardar.

Para el desbloqueo automático al quitar la llave del contacto se hace exactamente igual, pero el canal 4:

Comprobación del Tempomat

Como ya dije antes, llevo bastantes años con el Tempomat instalado pero sin que funcione, así que le he hecho un checkeo para ver si todos los cables estaban bien conectados.
Para ello nos vamos al módulo "01 - Engine" y una vez allí vamos a "08 - Meas. Block":

Vamos al grupo 006 y en el tercer campo (Cruise Control) lo tendremos todo lleno de ceros.
Si activamos el Tempomat, los dos últimos deberían ponerse a 1:

Si pulsamos el freno, se tiene que poner a 1 el segundo 0 (siempre empezando por la izquierda):
Si pisamos el embrague, se debe cambiar el primer 0 a 1:
Pulsamos el botón de "Reset" en la maneta y se nos cambiará el tercer 0 a 1:
Y para terminar, pulsamos el botón de "Set" en la maneta y nos debe cambiar el cuarto 0 a 1:


Pues tras comprobar que todo estaba correctamente, sólo queda probar el cableado y el sensor G68, pero está en la caja de cambios y toca levantar el coche, así que hasta que tendré que posponerlo hasta el próximo cambio de aceite.

Prometo informar de lo que consiga, pues no he encontrado NINGUNA información sobre este sensor en español.

Un saludo!






martes, 4 de noviembre de 2014

Problemas con bluetooth HC-06 y ATtiny45 y 85

Últimamente estoy jugando bastante con el ATtiny45 y 85 porque al ser tan pequeñitos y no necesitar reloj externo, dan bastante juego.
El caso es que quería poder comunicarme con ellos a través de Bluetooth y compré el módulo HC-06, que está muuuy bien de precio (por unos 3.5€ en Ebay). Ejemplo: http://www.ebay.es/itm/221483856395

Primero lo conecté con un Arduino Nano para probarlo y ver cómo funcionaba. En el otro extremo usé el teléfono móvil (Android) con BlueTerm, que es perfecto para hacer pruebas.
La primera prueba fue un simple replicador, lo que yo escribía en el móvil me lo devolvía el Arduino.

Viendo que el módulo funcionaba, me dispuse a montarlo en el ATtiny. Primer problema: El ATtiny45 tiene muy poca memoria y la librería SoftwareSerial que utilicé en el Arduino para crear otro puerto serie ya no podría usarla. Tendría que apañármelas con el Serial que trae por defecto.

Así que cargué este programa en el ATtiny45 (http://www.plutec.net/2014/10/programando-un-attiny45-y-85.html):

 void setup() {  
  Serial.begin(9600);  
 }  
 void loop() {  
  Serial.println("HOLA");  
  delay(1000);  
 }  

Y me conecté con el móvil al otro extremo del Bluetooth, a ver qué recibía. El resultado fue desastroso:


Y ahí me quedé un par de días pensando, hasta que se lo comenté a Juanjo (un amigo y compañero de Hispasec) y me comentó que quizás modificando la velocidad del puerto serie se podría mejorar algo, así que al lío fui.
Me descargué el datasheet del HC-06 para ver si se podría modificar la velocidad de comunicación y cómo se hacía. Si alguien quiere mirarse el datasheet entero, es todo suyo. Yo me fui directamente a la página 15 que explica qué comandos usar para cambiar la velocidad, nombre y PIN del módulo. Aquí un resumen:

 Cambiar velocidad de comunicación:  
 Envía: AT+BAUD1  
 Respuesta: OK1200   
 Envía: AT+BAUD2   
 Respuesta: OK2400   
 Aquí la lista de velocidades disponibles:  
 1---------1200   
 2---------2400   
 3---------4800   
 4---------9600 (Por defecto)   
 5---------19200   
 6---------38400   
 7---------57600   
 8---------115200   
 9---------230400   
 A---------460800   
 B---------921600   
 C---------1382400  
 Cambiar el nombre del módulo:  
 Envío: AT+NAMEname   
 Respuesta: OKname  
 - Ejemplo:  
 Envío: AT+NAMEpepito  
 Respuesta: OKname  
 (El nombre está limitado a 20 caracteres)  
 Cambiar PIN del dispositivo:  
 Envío: AT+PINxxxx   
 Respuesta: OKsetpin  
 - Ejemplo:  
 Envío: AT+PIN5678  
 Respuesta: OKsetpin  
 El PIN por defecto es 1234  
 Para versiones del módulo mayor que la 1.5 hay comandos de paridad disponibles. 
 Mirar el datasheet.  

Pues bien, para cambiar la velocidad del módulo usé de nuevo el Arduino Nano y le cargué este sketch (no recuerdo de dónde lo saqué, así que no puedo poner los créditos, lo siento):

 #include <SoftwareSerial.h>  
 SoftwareSerial mySerial(4, 2); // RX, TX  
 String command = ""; // Stores response of the HC-06 Bluetooth device  
 void setup() {  
  // Open serial communications:  
  Serial.begin(9600); // Arduino - PC bauds
  Serial.println("Type AT commands!");  
  // The HC-06 defaults to 9600 according to the datasheet.  
  mySerial.begin(9600); //Arduino - BT bauds
 }  
 void loop() {  
  // Read device output if available.  
  if (mySerial.available()) {  
   while(mySerial.available()) { // While there is more to be read, keep reading.  
    command += (char)mySerial.read();  
   }  
   Serial.println(command);  
   command = ""; // No repeats  
  }  
  // Read user input if available.  
  if (Serial.available()){  
   delay(10); // The delay is necessary to get this working!  
   mySerial.write(Serial.read());  
  }  
 }  

Debemos conectar los pines 2 y 4 del Arduino al RX y TX del módulo BT, abrimos una consola serie y nos dirá:
 Type AT commands!
Para probar que están bien conectados los pines TX y RX podemos mandar el comando:
-> AT
<- OK
Nos debe responder OK, si esto no es así, posiblemente tengamos que intercambiar los cables RX y TX del Arduino al BT.
Pasamos a configurar el módulo BT con la siguiente frecuencia que admite: 19200
-> AT+BAUD5
<- OK19200

Cargamos el ATtiny con el sketch que puse al principio que sólo escribía "HOLA", pero modificando la frecuencia a 19200 y... PUMMM


No dice que el puerto serie del ATtiny sólo soporta velocidades de 9600, 38400 y 115200.

Antes de nada recordar que los puertos serie del ATtiny son el Analog Input 2 y el 3 (RX y TX respectivamente):

Cambiamos la frecuencia del HC-06 a 38400 y probamos con el ATtiny. El resultado es este:


Es mejor que con 9600, pero todavía se come algunos caracteres de fin de línea. Así que repetimos el proceso para 115200, con el siguiente resultado:


No he hecho mediciones y pruebas estadísticas (cosa que Juanjo me pidió), pero con estas vistas, creo que es suficiente.

Espero que os sirva para "algo". Cualquier duda, a los comentarios.


domingo, 2 de noviembre de 2014

Reparando cable Vag-Com 704

Vag-Com es un producto (software + hardware) para diagnosis de los coche del grupo Vag (Audi, VW, Seat y Skoda). Pues bien, hace unos 5 años compré este cable para poder tocar cositas del coche por unos 20€.

Cable Vag-Com v704
Con él activé el cierre automático de pestillos, diagnostiqué un fallo que tenía en el motor de la ventanilla, encendí el piloto de los cinturones de seguridad y algunas otras cosas que no recuerdo.

Después de usarlo tres o cuatro veces dejó de reconocerlo el sistema operativo y ahí se quedó guardado en un cajón, hasta la semana pasada, que salió haciendo limpieza de cables.

Lo primero que hice fue abrirlo para mirar los microcontroladores que tenía y estaba formado por un ATmega que conecta con la interfaz del coche y un FTDI que hace la conexión con el USB. Hace tiempo leí en un foro que estos chips daban problemas (de ahí su precio) y que podían ser reprogramados, así que me puse al lío.

Voy a explicar los pasos necesarios, me voy a ahorrar el proceso de investigación que creo que poco interesa :P
  1. Tener un cable como el de la primera foto o similar, el caso es que sea v704 o v704.1 como el mío.
  2. Descargar este archivo con todo lo necesario. 
  3. Tener una máquina con Windows XP de 32 bits. En mi caso uso una virtualizada con VirtualBox, porque recuerdo que WinXP ya no tiene soporte ^^.
  4. Tenemos que averiguar el VID y el PID de la interfaz USB. 
    1. Si usamos Linux sólo tenemos que conectar el cable e inmediatamente después hacer en la consola un "dmesg | tail" y nos saldrá algo como esto:
      idVendor=0403, idProduct=fa20
    2. Si usamos Windows, tenemos que dar botón derecho en Mi PC -> Administrar -> Adm inistrador de dispositivos -> Interfaz USB genérica. Doble click -> Detalles -> Id. de instancia del dispositivo.
  5. Instalar el software de Vag-Com en la máquina con Windows. IMPORTANTE: Leer el tip al final de la página para esto.
  6. Buscar el la carpeta "C:\Ross-Tech\vag-com" el archivo RT-USB.inf y abrirlo
  7. Dentro de la sección [RossTechHw] debemos poner la siguiente línea, sustituyendo las xxxx por los valores que hemos copiado antes:
    "%USB\VID_xxxx&PID_xxxx.DeviceDesc%=RT-USB,USB\VID_xxxx&PID_xxxx"
  8. Al final del mismo archivo debemos insertar otra línea como esta:
    USB\VID_xxxx&PID_xxxx.DeviceDesc="VAG-COM Compatible USB"
  9. Cerramos el archivo (guardando los cambios, obviamente)
  10. Desconectamos el cable del USB y lo volvemos a conectar. Esta vez, si no encuentra los drivers, le indicamos la carpeta donde los tiene que buscar: "C:\Ross-Tech\vag-com" 
  11. Nos dirá que nuestros drivers están correctamente instalados. Si no es así, tenemos que forzar la instalación buscando Hardware y reinstalando el controlador.
  12. Vamos a cambiar el VID y el PID para que lo reconozca como un VagCom. Para ello abrimos el ejecutable "vidpidfix.exe".
  13. Pulsas en "Search" y te saldrá en el cuadro de texto inferior algo como:
    1 device(s) attached:
    0
  14. Pulsamos en el "0" que nos ha salido, "Open" y nos mostrará información y luego sobre "Write default EE data". Si todo ha salido bien, nos debe mostrar una ventana con "EE_Program Complete!". Pulsamos "Aceptar" y cerramos.
  15. Desconectamos el cable y lo volvemos a conectar.
  16. Nos va a salir otra vez lo de instalar el controlador, debemos hacer lo mismo que en el punto 10.
  17. Ahora vamos a reprogramar el controlador FTDI. Primero instalamos el "Mprog2.8_setup.exe".
  18. Vamos a la ruta de instalación y donde está el .exe (C:\Program Files\MProg 2.8a) y pegamos el contenido de la carpeta DLLs que he adjuntado.
  19. Abrimos Mprog2.8 y vamos a File->Open y seleccionamos el archivo "vagcom.ept", que también va en el zip que he puesto en el punto 2.
  20. Pulsamos el botón con una cruz roja ("Erase All Existing Devices)" y nos debe salir un mensaje "Era successful Device 0".
  21. Pulsamos en el icono del rayito azul ("Program All Existing Devices") y nos debe salir, si todo sale bien, un mensaje: "Programmed Serial Number: Disabled"
  22. Ya tenemos nuestro cable reprogramado.
  23. Cada vez que lo conecto al USB me vuelve a saltar la instalación de controladores, pero bueno, vuelvo a hacer el punto 10 y problema resuelto.
Cable Vag-Com reconocido por el software

TIP IMPORTANTE: El software del Vag-Com (de RossTech) debe instalarse y después, conectarlo al coche sin conexión a Internet (a veces llega el wifi desde casa). Después de conectarlo por primera vez, vamos a "Options" -> "User Interface and Identification" -> "Do not check for updates", guardamos todo, cerramos y podemos volver a conectarnos a Internet.
P.D.: No preguntéis la razón, que no se puede decir. (licen...ejem...cia...) :D