Si, ese proyecto de la pantalla glcd es mio. Manejar esas pantallas no es dificil, es un poco coñazo de preparar los gráficos, pero el resultado es bastante bueno. Tienes unas cuantas librerías para Arduino dependiendo el controlador que lleven. Los más estandard son T6963 ó KS0108.
Saludos
Igor R.
Puedes decirme donde encontrar la pantalla que tu usas? no he encontrado ninguna lo suficientemente grande...
Se te ocurre alguna manera de solucionara el problema que cite anteriormente, para no tener que usar los dos arduinos. No se si funcionara bien como esta, porque la librería obd trabaja con el porto serial, y la TVout estoy trabajando con pollserial pserial que es el puerto serie 0...
Bien, ya modifique la librería pollserial para que funcione en la IDE de arduino 1.0.1 Probé el ejemplo y lo metí en mi código y va perfecto!!! Ahora bien, quiero usar solo un arduino, la librería OBD usa el puerto Serial es decir el 0, pero como tengo que usar el que gestiona TVout como lo haría???
En OBD.cpp encontre:
Quote
#ifndef OBDUART #define OBDUART Serial #endif
para usar el puerto serie 1 u otro del arduino mega yo lo hacia asi:
void loop() { if (pserial.available()) { TV.print((char)pserial.read()); } }
C:\Archivos de programa\arduino\libraries\pollserial/pollserial.h:46: error: conflicting return type specified for 'virtual void pollserial::write(uint8_t)' C:\Archivos de programa\arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
Oye, ahora que estoy viendo, este proyecto es tuyo no Igor??
Yo quiero justo hacer esoooo, podrias echarme una mano. Lo que quiero es manejar ese tipo de pantalla, entre 4,3" y estoy viendo que seguir con la libreria TVout me va a dar muchos problemas. También he visto esto: http://www.batsocks.co.uk/products/Shields/TellyMate%20Shield.htm alguien a trabajado con el?? Es para mostrar un menú y datos en tiempo real de rpm y km/h del coche.
Creo que el autor lo hizo porque como bien dices, el micro va un poco al límite, y para respetar los tiempos,interrupciones, y demás que se necesitas,tuvo que hacer la parte del manejo serie. No sé como esta el tema de envio, o era sólo para recepción.... te tocará investigar un poco.
Saludos
Igor
Quieres decir que use la modificación de la librería del propio tvout y no la de arduino? mmmm muy interesante eso que me dices jajaja, voy a probar.
Bueno, pues hace ya mucho que tenia pensado realizar este proyecto, y ya hace algun tiempo que lo empece. Se trata de un sistema, en principio para coche, antirrobo, localización gps, confort, etc. todo lo que se nos ocurra.
Estoy usando la librería TVout http://code.google.com/p/arduino-tvout/ (si algo des-actualizada) pero es la que mas se adapta a mis necesidades. Facilidad de uso y nos permite usar una pantalla lcd entre 4" y 7", que a la vez podemos usarla para ver películas o como monitor de aparcamiento. Es algo muy versátil. He desarrollado el entorno y todo bien, la pantalla principal muestra los Km/h, rpm, temperatura del motor y algunas cosillas mas.
Todo funciona muy bien por separado, el problema es a la hora de juntarlo, que los datos del puerto obd que llegan por el puerto serie se procesan a tirones, es como si el programa tardara mucho para procesar la parte de video y no dedicara tiempo a escuchar los puertos series. (la librería TVout usa un puerto serie modificado)
Bien, pensé en que la librería tvout me comía muchos recursos para los puerto y decidi usar un arduino uno para manejar la información obd obtener los datos y enviar los valores ya procesados al arduino mega que maneja la librería tvout. Pero nada, el refresco de información es adecuado, pero la información me llega errónea, me pierde datos y no se cual es el motivo. Os pongo unos ejemplos de prueba:
SoftwareSerial SerialSYCA (2, 3); // RX, TX Puerto serie para conectar con SAYCA
String inputString = ""; // String de comandos recividos de SAYCA boolean stringComplete = false; // Indicador de comando completo
void setup() { Serial.begin(OBD_SERIAL_BAUDRATE); // Puerto de comunicacion con SYCA SerialSYCA.begin(OBD_SERIAL_BAUDRATE); // Puerto de comunicacion con OBDII
inputString.reserve(20); // Reservamos espacios para el string comandos //while (!obd.Init()); }
Igor, creo que eres el creador de SECUduino no? Enhorabuena por tu trabajo, y muchas gracias por tu ayuda.
Yo lo que quería hacer es un dispositivo de control y alarma para el coche. Estoy por la parte de control, y bueno quería poner algunas funciones a mi opel astra h que no tiene. Una de ellas es cerrar las ventanillas del coche al bloquear el coche, suelo dejarlas abierta jejeje soy muy despistado. En un principio pensé hacerlo de manera básica, con un rele que me cerrara el circuito de las ventanillas como si se pulsaran los botones. Pero trasteando por Internet vi esos vídeos. Pero según me comentas Igor, la cosa es complicada y especifica, y bueno ya que dedico tiempo a esto pues me gustaría compartirlo con los demás, creo que lo voy hacer de la manera sencilla.
Pero ya por curiosidad, según dices Igor, por el puerto OBDII no podría tener el control de los dispositivos? A las lineas que te has conectado son independientes y usa el típico protocolo CAN no?
Si te das cuenta, el primer vídeo que he puesto, los datos de la radio los esta sacando del puerto de diagnosis OBDII.
Igor, ¿podrías decirme cual es el programa que has usado para ver los mensajes?
Puedes mirar esta web http://secuduino.blogspot.com Ahi puedes ver diferentes proyectos, entre ellos subir/bajar ventanillas de un vw golf, poner mensajes en la pantalla de un ibiza, meter info en un dashboard para un simulador de juegos, OBDII, etc. Todos ellos con bus CAN y Arduino.
Espero que te sirva para aclarar tus dudas.
Saludos
Igor
Hola Igor; Muchas gracias por la info, ya la había visto, pero por lo que he leído eso depende cada coche y la librería Can.h que usa no la he encontrado par echarle una ojeada. Voy a ver si puedo trastear un poco, pero seria de gran ayuda vuestros conocimiento sobre este tema.
¿Alguno a probado los ejemplos que dice Igor en algún otro coche?
Estoy trasteando con el puerto OBDII de mi coche, y he visto algunos vídeos en el que se obtiene otra información diferente a la comun que se suelen hablar en la mayorías de foros y web (temperatura motor, rpm, km/h, etc). En el video siguiente podeis ver como de un opel astra se saca la información de la emisora de radio que esta sonando:
He visto también otro vídeo de un ford en el que se suben las ventanillas mediante arduino. Por lo que he leído, el protocolo can-bus que usa mi coche es una red donde se envían los datos con una identificación para que dispositivo va destinado ese paquete. Mi pregunta es, ¿como puedo leer todos los paquetes? y de esa forma intentar descodificar lo que trasmiten. Estoy usando un adaptador OBDII ELM327, haber si alguno me puede dar algo de información...
Hola chicos, Pues he hecho las modificaciones y realizado las pruebas. Ahora si que funciona!!!! Espero que este tema pueda ayudar a otros con el mismo problema. Gracias por la ayuda!
Muchas gracias por la ayuda, ya creo que se cual era mi error, vuestras explicaciones me han llevado a encontrar mi error. Estaba siguiendo este articulo para usar la librería OBDII http://www.arduinodev.com/arduino-talk-with-car-through-obd-ii/ Yo pensaba que el arduino usaba los niveles de RS232 en su puerto serie y por eso conectaba directamente la salida del adaptador al arduino, y como bien decis esa salida era con niveles RS232 incompatibles para el arduino que uso. Se me paso por alto que el articulo que os he puesto dice:
Quote
La mayoría de ellos adaptadores consiste en un micro-controlador PIC18F2480 y un MAX232 o FT232. Así que lo que necesitamos es la salida TTL del microcontrolador. He utilizado dos cables para llevar a cabo el pin 17 (Tx) y el pin 18 (Rx) del PIC
Como bien dice, tengo que tomar el RX y TX del PIC (ELM327)!!!! que es un nivel TTL y no el RX y TX del conector DB9 que pasa por el mencionado Max232 que convierte la señal TTL del PIC a niveles RS232.
Otra solución a este problema seria ponerle al arduino adaptador TTL-RS232 que ha comentado Heke para usar la salida del conector DB9 del adaptador OBD, (que quizás sea lo mas recomendable para distancias entre RX y TX mas largas), pero yo voy a utilizar la salida TTL del PIC para ahorrarme el MAX232.
Con el hiper terminal configurado a 38400,n,8,1 y mandandole el comando ATZ me responde correctamente, a 9600,n,8,1 lo he probado pero no me funcionaba, no estoy seguro si lo hice bien en ese momento. Hasta hay todo bien, porque me responde perfectamente.
He usado el Arduino UNO y el MEGA y en enviado la siguiente cadena: Serial.println("atz"); y también de la siguiente forma: Serial.print("atz\n");
El puerto serie de arduino lo he puesto asi: void setup() { Serial.begin(38400); }
Uso las salidas TX0 y RX0 de arduino, el LED TX de arduino parpadea y LED de RX del adaptador parpadea también, pero no responde.
Las salidas del adaptador OBDII las he obtenido de la siguiente forma:
El TX del adaptador lo conecto al RX0 de arduino, el RX del adaptador al TX0 de arduino y el GND del adaptador al GND de arduino.
Hola, Buenos pues estoy intentando usar una librería para OBDII, pero el caso es que no soy capaz de hacerla funcionar. Me he comprado un adaptador OBDII basado en el ELM327, conectándolo directamente al pc y usando un programa de diagnostico puedo ver los datos de mi coche. Ahora bien, el problema es al usar arduino, no hay manera de enviar un comando at y que el ELM327 lo entienda, no recibo ninguna notificación por su parte.
He usado el hiper terminal y he mandado el comando ATZ y recibo "ELM327 v1.4b", vamos que esta todo bien en el adaptador, pero haciendo un programa sencillo en arduino, mando ese mismo comando, y no recibo nada.
¿Puede ser algun problema en la velocidad de datos del puerto serie? he puesto 38400 bps y 9600 bps y nada, es como si no se sincronizara...
Hola a todos! Bueno pues después de estar un montón de días buscando información, ya me veo en la necesidad de pediros ayuda. Quiero comenzar un proyecto para el cual necesito una pantalla tft lcd grandeciata, mayor de 4,2" que es la mas grande que he podido encontrar. La quiero para quitar la pantalla LCD que trae mi coche e incorporar nuevas funciones, como alarma, gps localizador, sensores, etc.
Haber si alguno de vosotros me puede echar una mano en encontrar alguna pantalla fácil de usar con arduino. He visto algunos monitores de 7" con entrada AV pero no se yo si habrá alguna forma de mostrar gráficos o algo desde esa entrada AV.