Pages: [1]   Go Down
Author Topic: Proyecto SAYCA (Sistemas antirrobo y confort arduido)  (Read 2744 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Para obtener los datos del coche he usado la librería OBD http://www.arduinodev.com/hardware/obd-kit/ y me va perfecta.

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:

Codigo arduino uno (lee datos del puerto obd)
Code:
#include <SoftwareSerial.h>
#include <OBD.h>
COBD obd;


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());
}

void loop() {
 // **ENVIO DE PRUEBA**
delay (2000);
SerialSYCA.println("1234");
}
......


Adjunto el código de SAYCA que es el que procesad todo

Haber si entre todos podemos hacer algo. Y por cierto, si hay alguna librería similar a TVOut pues me seria de gran ayuda

Adjunto una imagen del terminal donde se ve que no se recibe el dato completo que es 1234

* Sayca.rar (4.85 KB - downloaded 18 times.)

* Nueva imagen.jpg (44.15 KB, 843x522 - viewed 43 times.)
« Last Edit: August 01, 2012, 12:26:13 pm by fjramirez » Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si no recuerdo mal, TVOut tiene su propias funciones para manejo de puerto serie...mira a ver si eso es el problema....http://code.google.com/p/arduino-tvout/wiki/EX2

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
« Last Edit: August 01, 2012, 01:09:55 pm by Igor R » Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si no recuerdo mal, TVOut tiene su propias funciones para manejo de puerto serie...mira a ver si eso es el problema....http://code.google.com/p/arduino-tvout/wiki/EX2

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.

Gracias Igor R, siempre estas hay ayudando!!!
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

nada, se conoce que la librería es para la antigua versión de arduino me da erro

Quote
#include <TVout.h>
#include <pollserial.h>
#include <fontALL.h>

TVout TV;
pollserial pserial;

void setup()  {
  TV.begin(PAL,184,72);
  TV.select_font(font6x8);
  TV.println("Serial Terminal");
  TV.println("-- Version 0.1 --");
  TV.set_hbi_hook(pserial.begin(57600));
}

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.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Quote
#ifndef OBDUART
#define OBDUART Serial1
#endif

pero como lo tengo que hacer para usar:
Quote
#include <pollserial.h>
pollserial pserial;
« Last Edit: August 01, 2012, 03:29:10 pm by fjramirez » Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Me alegra que lo tengas funcionando!!

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.

« Last Edit: August 01, 2012, 05:41:52 pm by Igor R » Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Me alegra que lo tengas funcionando!!

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...  smiley-roll

Muchas gracias por tu ayuda!!
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Quote
#ifndef OBDUART
#define OBDUART Serial1
#endif

pero como lo tengo que hacer para usar:
Quote
#include <pollserial.h>
pollserial pserial;

Sigo teniendo este problema!! Nadie puede ayudarme?? vamos chicos es simple programacion seguro que alguno lo sabe!!  smiley-cry

Lo que me ocurre que quiero usar el puerto serie que genera la libreria <pollserial.h> que es pserial con la libreria OBD que usa el puerto series 0 que genera por defecto arduino.
En OBD.cpp:
Quote
#ifndef OBDUART
#define OBDUART Serial
#endif

teoricamente poniendo:
En OBD.cpp:
Quote
#ifndef OBDUART
#define OBDUART pserial
#endif

deberia funcionar porque probe:
Quote
#ifndef OBDUART
#define OBDUART Serial1
#endif
y si que me usa el puerto 1, pero con pserial me dice que no esta declarado!! smiley-sad
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Si eres un fanático de la electrónica o informática visita www.tuelectronica.es
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,

os comento como va mi proyecto... Conseguí resolver temporalmente los problemas que tenia a la hora de usar los puertos series y de integrar las librerías Tvout y OBD. Lamentablemente he tenido que usar dos arduinos y un adaptador OBDII basado en el  ELM327. Mi idea era reducir los dispositivos y quitar el adaptador OBDII. ¿Si alguien puede echarme una mano con esto le estaría muy agradecido? Lo que quiero es usar un arduino como lector de los datos del puerto can del vehículo. ¿Alguna librería para bus-can sencilla? ¿ También seria interesante una librería para arduino basada en el ELM327, se que existen por algún sitio porque el adaptador tienen un pic, y no el ELM327 por lo tanto tiene cargada esta librería.

Pongo algunas fotos del proyecto:



* 2012-10-10 17.00.28.jpg (844.4 KB, 2592x1552 - viewed 50 times.)

* 2012-10-10 17.11.22.jpg (961.26 KB, 2592x1552 - viewed 54 times.)

* 2012-10-10 17.11.41.jpg (728.94 KB, 2592x1552 - viewed 54 times.)
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1414
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,

os comento como va mi proyecto... Conseguí resolver temporalmente los problemas que tenia a la hora de usar los puertos series y de integrar las librerías Tvout y OBD. Lamentablemente he tenido que usar dos arduinos y un adaptador OBDII basado en el  ELM327. Mi idea era reducir los dispositivos y quitar el adaptador OBDII. ¿Si alguien puede echarme una mano con esto le estaría muy agradecido? Lo que quiero es usar un arduino como lector de los datos del puerto can del vehículo. ¿Alguna librería para bus-can sencilla? ¿ También seria interesante una librería para arduino basada en el ELM327, se que existen por algún sitio porque el adaptador tienen un pic, y no el ELM327 por lo tanto tiene cargada esta librería.

Pongo algunas fotos del proyecto:



echale un vistazo a estos dos videos, mi sistema funciona con el modulo canbus de Igor y su libreria. te lo recomiendo.


Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Pages: [1]   Go Up
Jump to: