Arduino
Receptor de sensores de temperatura
comerciales 433MHz
xsetaseta@gmail.com
Había visto hace tiempo un artículo donde se exponía la posibilidad de escuchar los sensores de temperaturas comerciales de las estaciones meteorológicas. Yo tengo un par de estaciones de ese tipo, y como curiosidad descubrí que funcionaban en la misma frecuencia y eran compatibles. Para que funcionasen los dos sensores a la vez debía cambiar el canal en los sensores.
Por suerte las dos estaciones meteorológicas tenían el mismo tipo de sensor y eran compatibles. |
Estos sensores funcionan en la frecuencia de 433.xxxMHz , si no es muy selectivo el receptor puede recibir señales en toda la banda.
Tengo dos tipos de receptores, el uno es mas sensible que otro, aunque un poco mas caro lo recomiendo.
En el mercado chino existen numerosos receptores, algunos funcionan a 351MHz, y otros están sintonizados mal. En la parte de bibliografía pongo el enlace del que me ha funcionado bien (2€).
Recomiendo este por ser mas sensible. |
Montado el circuito receptor y alimentado a 5V me puse a estudiar los datos recibidos.
Gráfica de datos recibidos.
Después un estudio interprete las señales de este modo, tuve suerte, acerté.
Estudiando los datos mandados y con bastante trabajo, pude determinar la estructura de los datos.
Los datos emitidos se repiten varias veces, de esta forma podemos asegurarnos que el valor es correcto, no se si tiene verificación vía CRCs.
He de reconocer que tuve suerte, no estaban codificados como en algunos emisores.
También he descubierto que los datos extras son el estado de la batería.
Circuito montado con su antena.
Detalle del circuito, he quitado componentes usados en el desarrollo.
Al usar la interrupción INT0 para decodificar la señal, he configurado el pin D2 como entrada y conectado la salida DATA del receptor al pin D2.
void setup(void)
{
Serial.begin(9600);
Serial.println("Int433");
pinMode(2, INPUT);
pinMode(IN_READ, INPUT);
cli(); // Disable INT
EIMSK |= (1 << INT0); // Enable external interrupt INT0
EICRA |= (1 << ISC01); // Trigger INT0 en bajada
sei();
}
El programa en el arduino se encarga de interpretar la señales y mandar los datos vía serie.
Int433 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,2,Grados,202,Extra,15 Canal,1,Grados,216,Extra,18 Canal,1,Grados,216,Extra,2 Canal,1,Grados,216,Extra,2 Canal,1,Grados,216,Extra,2 Canal,1,Grados,104,Extra,1 Canal,1,Grados,216,Extra,2 Canal,1,Grados,216,Extra,2 Canal,1,Grados,216,Extra,2 Canal,1,Grados,216,Extra,2 |
Datos recibidos vía serie |
Para hacer un poco mas vistoso la visión de los datos, realicé en Gambas3 (Visual Basic Linux) un programa.
Las gráficas de la señales están realizadas mediante Osciloscopio Hantek6022BL y PulseView bajo Linux (Debian8_32bits).
PROGRAMAS
Hasta pronto.
JUAN GALAZ
Bibliografía:
setacom.html
hantek.html
https://fetzerch.github.io/2014/11/15/reveng433/
https://es.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html?spm=a2g0s.9042311.0.0.lWlrua
No hay comentarios:
Publicar un comentario