ARDUINO-LLAVE PARA PEUGEOT 306
El otro día me comento un amigo que tenía que hacer una llave nueva para el coche, era un Megane y le costaba la dichosa llave 100€. A mi me parecía un tanto cara, y me dio que pensar lo que me costaría la llave de mi coche un Peugeot 306. Mirando por internet vi que mi llave con mando estaba entre 80 y 100€. Desde luego debería tener una gran tecnología para el precio que pedían.
Manos a la obra, vamos a investigar la llave de mi coche.
Abierta la llave podemos ver que tiene un CI de ocho patilla
OM1058T, unas resistencias, un transistor y un diodo emisor de infrarrojos.
Bajado las características del OM1058T poco podemos sacar de
como programarlo, o de las formas de ondas que emite.
Mediante un osciloscopio podemos averiguar las formas de onda y
las características de la señal.
Vemos como existen 72 pulsos a 2 mS y de vez en cuando un pulso
a 0,5mS del pulso de 2mS.
Interpreto que si solo existen los pulsos de 2mS es un -0- y si
existe un pulso intermedio a 0,5mS es un -1-
Figura donde podemos ver los dos tipos de pulsos.
Figura donde podemos ver un byte de pulsos.
Ahora lo primero es hacer un programa donde nos lea los 72 valores, que corresponde a 9 bytes.
Figura donde podemos observar los 72 bits y los 9 bytes
correspondientes.
He borrado mis códigos por seguridad.
Podemos observar que realmente solo son 3 bytes repetidos 3 veces.
Figura donde vemos el circuito receptor de infrarrojos.
El programa realizado en arduino lee los códigos de la llave y
los manda por el puerto serie al ordenador.
Debido a que los ladrones pueden utilizar el circuito para robar
coches, y ese no es mi propósito, he quitado el código
correspondiente a receptor.
En el circuito emisor he montado un pulsador para la emisión del código, un led que hace de piloto de emisión, y un diodo emisor de infrarrojos. Para conseguir distancia en el mando he tenido que utilizar dos transistores en montaje darlintong que proporciona bastante intensidad para los pulsos.
Figura donde podemos ver el circuito emisor de infrarrojos.
Aquí vemos el código fuente del emisor donde debemos poner los códigos de la llave.
// seta -
Telemando peugeot 306 //18-12-2011 //xsetaseta@gmail.com // En la variable datos debemos poner los códigos de la llave // Deben ser tres bytes repetidos 3 veces byte datos[100]={0x00,0x11,0x22,0x00,0x11,0x22,0x00,0x11,0x22}; byte coche[9]; byte x; byte x1; byte x2; int xx; int xx1; int xx3; int retardo; void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(11, INPUT); pinMode(12, INPUT); //devolver codigo } void loop() { //Emisor peugeot if (digitalRead(12)==LOW) { digitalWrite(3, HIGH); for(x=0;x<9;x++) { x1=datos[x]; for(x2=0;x2<8;x2++) { digitalWrite(6, HIGH); for(xx=0;xx<100;xx++); digitalWrite(6, LOW); if((x1 & 128)) { for(xx=0;xx<1127;xx++); digitalWrite(6, HIGH); for(xx=0;xx<100;xx++); digitalWrite(6, LOW); for(xx=0;xx<3290;xx++); } else { for(xx=0;xx<4526;xx++); } x1= x1 << 1; } } delay(500); digitalWrite(3, LOW); } } |
Conclusión:
El querer cobrar una media de 90 € por una llave es un atraco.
La electrónica del mando como mucho 7€, se podría emular con un
micro de 8 patillas ATtiny y utilizar el própio reloj interno.
Hasta creo que el OM1058T realmente sea un microcontrolador
barato, pero eso solo es una suposición.
Circuito de pruebas.
Un saludo.
SETA43