Bueno, ya desde hace tiempo he querido comunicar 2 pics utilizando los modulos de comunicacion RF que son tan comunes y de los cuales he visto bastantes proyectos todos ellos tratando de comunicarlos utilizando el puerto serial de los PIC's, sin embargo y como confirmaran los aventureros que se enbarcaron en la tarea, no todo es tan facil como tener lista la comunicacion serial utilizando cables, colocar en lugar de estos los modulos y listo (hubiera sido genial... no es cierto??).
Bueno, cuando hablamos de transmision por Radio Frecuencia, muchos conceptos deben ser tomados en cuenta, disciplinas enteras de la electronica ayudan a comprender y resolver los problemas que a cada uno de los aventureros se nos presentaron cuando quisimos utilizar estos modulos de la manera mas sencilla.
El proyecto y el nuevo enfoque que planteo a continuacion, sin embargo, sera aplicado sobre todo a proyectos que no incluyan transmision de datos, es decir, esta orientado a proyectos del tipo rele, este punto se hara mas claro cuando se explique el funcionamiento mas adelante.
Descubrimiento De todas maneras quiero contarles como se me vino la idea, probablemente no sea la primera vez que se utiliza (no creo haber descubierto la polvora), y probablemente hasta tenga un nombre tecnico que desconozco, pero la forma de comunicacion a utilizar resulta bastante eficiente cuando se trata de este tipo de proyectos, y vale acotar que mis horas navegando y navegando por la red buscando algun antecedente sin resultado, es el motivo por el cual deseo postear y compartir con ustedes mi experiencia.
Vamos al "descubrimiento"
Resulta que ni vien adquiridos los modulos que por cierto son los modelos CZ3 y FST3 de 433 y 315 MHz, (TX y RX ... es decir 2 parejas) teniamos que probarlos como era natural, para lo cual un compañero mio en el laboratorio de la universidad, se valio de fuentes dc (para el tx y rx), un generador de señales y un osciloscopio, colocamos el TX en un protoboard, lo alimentamos directamente con 5V y a la entrada de datos le pusimos la salida del generador de señales que estaba programado para generar un tren de pulsos de 5V de amplitud con una frecuencia de 25Hz; del otro lado lo mismo, el RX en un protoboard, alimentado directamente, y la salida de datos conectada al osciloscopio. Ni bien echamos todo a andar vimos como la comunicacion inalambrica se producia, el osciloscopio reproducia a la perfeccion la forma de onda, y sin antenas ni nada ... eureka!! con esto podemos remplazar el cable de nuestra comunicacion serial ... y listo!!!!!
Bueno, una vez probados los modulos nos pusimos a desarrollar el proyecto, que en resumen (y para simplificar) se trataba de controlar las entradas de un pic desde el otro y visceversa (asi se escribe?? jeje), mas simple aun, en un PIC poner un bit a nivel alto, y en el otro que se prendiera un led; es decir una comunicacion FULL DUPLEX (es decir que ambos escuchan y escriben a la vez). Desarrollamos el proyecto en lenguaje C y utilizamos el proteus para simularlo, utilizamos como era obvio los modulos USART integrados y despues de algunas pruebas logramos exactamente lo que queriamos. Una vez terminada la simulacion pasamos a los protoboards nuevamente, en aquel tiempo teniamos los PICs 18F4550 a la mano, por lo cual decidimos utilizar estos, en la simulacion estabamos usando el 16F877, pero cambiar el codigo de uno a otro es bastante sencillo pues ambos son bastante parecidos.
Al probar la comunicacion en los protos utilizando el USART todo nos salio correctamente, estabamos muy contentos con los resultados, nuestros 2 cablecitos que unian ambos micros cumplian su funcion a la perfeccion, era hora de utilizar los modulos, y fue alli donde empezaron los problemas.
En resumen (y como muchos de ustedes saben) la comunicacion utilizando modulos, con el protocolo serial, fue ineficiente, por momentos funcionaba bien, por momentos no, y fue alli donde empezaron los problemas que varios de los que hemos intentado usar estos modulos maravillosos hemos tenido que soportar. Despues de varios intentos, codigos de proteccion, antenas, placas fabricadas, e incluso PIC's quemados (100 soles al agua), etc etc etc, nuestro proyecto seguia sin andar, y fue asi que lamentablemente en aquel semestre en la universidad nos jalaron en el curso por no haber podido concluir el trabajo satisfactoriamente, una pena infinita.
Muchos meses despues nuevamente a lidiar con el proyecto, pero esta vez el nuevo enfoque aplicado dio excelentes resultados.
Bueno, una noche de tantas probando los benditos modulos en el taller, y sin oscilosocpio a la mano pero si con generador de funciones, recorde aquel experimento que hicimos en la universidad, y decidi hacer lo mismo para saber si los modulos estaban bien despues de tanto tiempo almacenados y tantos experimentos fallidos, pero como no tenia osciloscopio a la mano, utilice un multimetro Tektronic antiguo que me media frecuencia, y repeti el experimento anterior.
Fue entonces que se hizo el "desubrimiento", con el modulo receptor ubicado a unos 5 metros de distancia y con el multimetro conectado a su salida de datos midiendo la frecuencia del tren de pulsos que enviaba mi generador conectado al modulo TX, pude notar que efectivamente los modulos trabajan de maravilla cuando de trenes de pulsos se trata y sin embargo son algo mas dificiles de usar cuando hablamos de comunicacion USART, y mas aun cuando esta es aleatoria, es decir, cuando solo transmites datos cada cierto tiempo o cuando depende de un evento externo (pulsar un boton por ejemplo)
Entonces, con trenes de pulsos funcionan genial, es mas, le puse una bateria al RX y me puse a caminar con el protoboard y el multimetro para ver hasta donde podia recibir la señal, (recuerden que estos modulos "EN TEORIA" deberian dar 1000m de alcance, yo con 50 hubiera estado feliz
) y oh sorpresa, la comunicacion es bastante buena a 20m, 30m, 50m, ... 100m
... y sin antenas ... y en protobard
con mi compañero en el laboratorio y comunicandonos por celular podia ver como la frecuencia medida en el multimetro variaba reproduciendo fielmente la aplicada al TX en el laboratorio 250m lejos de donde estaba parado. EUREKA!!!
La solucion amigos mios, y con esto termino tremendo preambulo, es transmitir la informacion en la frecuencia de los trenes de pulsos, en resumen, que un pic me genere un tren de pulsos de digamos ... 50 Hz cuando pulse un boton... 100 Hz cuando pulse otro... 150 Hz cuando pulse otro ... etc etc etc y del otro lado un PIC que mida la frecuencia, interprete el dato y haga encender un led , etc etc etc, y lo mejor de todo es que no tiene que ser necesariamente un frecuencimetro, simplemente tenemos que obtener un dato en funcion de la frecuencia capturada, en resumen:
Un generador de frecuencias, y un frecuencimetro.
Solucion que implementaremos en este apartado y que por cierto estan implementadas en el foro por los grandes maestros, sin los cuales hubiera demorado mucho mas para implementar estas 2 simples pero grandes funciones de los PICS.