Hola. Antes de nada decir que soy novato en microcontroladores (y electrónica en general). He llegado a Arduino buscando una solución rápida para controlar varios motores de persiana con control por RF. Tengo un único mando a distancia original, y quiero controlar cada persiana por separado, pero no quiero gastar el elevado precio que cobran por cada nuevo mando.
He abierto el mando y no tiene "jumpers" para cambiar el código (lo que hubiera estado bien para hacer un mando múltiple). Pensaba en fabricar un mando con arduino, que emitiendo distintos códigos controle todas los motores que yo quiera.
Lo primero que quería hacer es "leer" los datos que emite el mando, y para eso he conectado el módulo receptor (extraido de uno de los motores, por lo que sé que funciona bien y que está bien "sintonizado" con el mando) a la placa arduino duemilanove (5V, GND, y pin 2) y he utilizado la library RCswitch que recomendaban en uno de los temas de este foro para esos menesteres, pero no aparece absolutamente nada en la pantalla del monitor serial por más botones que apriete en el mando.
¿Alguna idea sobre lo que estoy haciendo mal? ¿Algún tutorial sencillo para principiantes sobre el funcionamiento de esta comunicación RF en los mandos a distancia?
(Por probar algo más he probado el ejemplo "DigitalReadSerial" y sí veo que la serie de bits 1 y 0 que aparecen en pantalla sufre cambios cuando aprieto un botón del mando, por lo que creo que el módulo funciona conectado a la alimentación de la placa)
Gracias. Un saludo.
si te fijas en el listado de chips soportados por la libreria, debes revisar si tu mando utiliza algun chip de estos o al menos el protocolo de alguno de ellos.
El mando (y el circuito del receptor) no tienen ningún chip comercial estardar de los utilizados en esos dispositivos económicos para conectar y desconectar aparatos eléctricos. Parecen microcontroladores programados específicamente (y supongo que contendran dentro el código propio de cada mando).
Pensaba en alguna manera de leer "en bruto" los bytes recibidos, guardarlos en una memoria, y enviarlos cuando fuese necesario.
¿Qué pines y qué funciones serían las más apropiadas para hacer esto?
yo tambien estoy intentando hackear unos controles remotos, pero no tengo osciloscopio para ver la trama, pero se puede usar el pin de interrupcion y leer los cambios de estado, o la funcion pulseIn() que te da la duracion de cada cambio.
la mayoria de los contrlos de hoy cada bit no es un 1 o 0, sino que el 1 es un pulso seguido de el timepo de 2 ceros, y el cero pueden ser 2 unos seguidos de un cero, depende de la marca y modelo. es como una codificacion manchester. Duplica o triplica los bits para mejorar la calidad de los datos a transmitir.
Si estas seguro de que el mando funciona a 433MHZ, compras un receptor de código manchester en ebay que funcione a la misma frecuencia, y haces un sketch que lea a 2400bps por el puerto serie y te muestre TODO lo que pilla.
Entonces pones el mando al lado del arduino, le das a reset al arduino, y sin soltarlo, pulsas el boton del mando. En ese momento y sin dejar de pulsar el mando, sueltas el reset, y debe de aparecerte una trama repetitiva de numeros en el terminal de puerto serie. Ese es tu código.
No obstante, deberías de repetir el proceso varias veces para ver si el código cambia, y si cambia, vete olvidando...
Un saludo y espero que sirva de ayuda.
PD: A todos los que quieren abrir puertas de garages, coches y demas, este método no funciona, ya que dichos automatismos utilizan rolling code.