miércoles, 7 de diciembre de 2022

Arduino Sensores comerciales de temperatura - rtl_433

  Página principal

Arduino
Sensores comerciales de temperatura.

rtl_433


Después de mi anterior artículo para recibir la señal de los sensores meteorológicos rec433.html , y con la espina clavada de no saber como era el modo de chequear errores, me puse a mirar por internet.
El que busca encuentra, y estaba cerca, estaba dentro de los repositorio de Debian 11, era el programa rtl_433.
Utilizando el receptor de televisión Realtek Semiconductor Corp. RTL2838 DVB-T , se podía recibir un montón de emisores comerciales de estaciones meteorológicas.
Era un filón, es muy buena la documentación que explicaba el protocolo, ahora puedo realizar el programa arduino que detecta errores.
En Debian 11, si queréis bajar las fuentes desde los repositorios, para compilar o ver sus ficheros,  tendréis que dar estas ordenes.
apt-get build-dep rtl-433
apt-get source rtl-433
cd rtl-433-20.11
dpkg-buildpackage -uc -b


seta@debian11:~$ rtl_433

rtl_433 version unknown inputs file rtl_tcp RTL-SDR SoapySDR
Use -h for usage help and see https://triq.org/ for documentation.
Trying conf file at "rtl_433.conf"...
Trying conf file at "/home/seta/.config/rtl_433/rtl_433.conf"...
Trying conf file at "/usr/local/etc/rtl_433/rtl_433.conf"...
Trying conf file at "/etc/rtl_433/rtl_433.conf"...
Registered 145 out of 175 device decoding protocols [ 1-4 8 11-12 15-17 19-21 23 25-26 29-36 38-60 63 67-71 73-100 102-105 108-116 119 121 124-128 130-149 151-161 163-168 170-175 ]
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000 S/s.
Tuner gain set to Auto.
Tuned to 433.920MHz.
Allocating 15 zero-copy buffers
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2022-12-07 20:06:47
model     : TFA-Pool     Id        : 203
Channel   : 1            Battery   : 1             Temperature: 9.9 C        Integrity : CHECKSUM

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


time      : 2022-12-07 20:06:47
model     : TFA-Pool     Id        : 203
Channel   : 1            Battery   : 1            
Temperature: 9.9 C        Integrity : CHECKSUM

time      : 2022-12-07 20:57:57
model     : AlectoV1-Temperature                   House Code: 51
Channel   : 3            Battery   : 1            
Temperature: 20.90 C      Humidity  : 49 %          Integrity : CHECKSUM

time      : 2022-12-07 20:51:57
model     : Prologue-TH  subtype   : 5             id        : 144
Channel   : 2            Battery   : 1            
Temperature: 20.10 C      Humidity  : 20 %          Button    : 1


time      : 2022-12-07 20:17:19                    brand     : OS
model     : Oregon-v1    SID       : 9
Channel   : 3            Battery   : 1
Temperature: 10.7 C       Integrity : CHECKSUM


time      : 2022-12-07 20:07:46
model     : Hideki-Temperature                     Rolling Code: 11
Channel   : 1            Battery   : 1            
Temperature: 9.4 C        Integrity : CRC

time      : 2022-12-07 20:17:39
model     : Hideki-TS04  Rolling Code: 0
Channel   : 2            Battery   : 1          
Temperature: 19.4 C       Humidity  : 30 %          Integrity : CRC

time      : 2022-12-07 21:07:10
model     : Prologue-TH  subtype   : 5             id        : 141
Channel   : 1            Battery   : 1            
Temperature: 20.50 C      Humidity  : 16 %          Button    : 0





Para mi modelo  TFA-Pool , el test de errores se hace mediante suma,  CHECKSUM.
TFA pool temperature sensor.

10 24 bits frames

    CCCCIIII IIIITTTT TTTTTTTT DDBF

- C: checksum, sum of nibbles - 1
- I: device id (changing only after reset)
- T: temperature
- D: channel number
- B: battery status
- F: first transmission


Es fácil de programar, y en mi caso si los datos son correctos se manda CHECKSUM=1 .

Espero que os haya gustado este artículo, y os recomiendo que probéis las señales recibidas en vuestra casa.
Lo curios del tema, es que también se reciben señales de los sensores de ciertos coches.

model     : Renault      type      : TPMS          id        : 330fb5
flags     : 36           pressure_kPa: 251.2 kPa   temperature_C: 11 C       mic       : CRC

model     : Toyota       type      : TPMS          id        : f13c3038
status    : 128          pressure_PSI: 34.500      temperature_C: 10.000     mic       : CRC

model     : Citroen      type      : TPMS          state     : c2            id        : 0f330778
flags     : 12           repeat    : 3             Pressure  : 233 kPa       Temperature: 15 C         maybe_battery: 51         mic       : CHECKSUM

model     : Nexus-T      House Code: 158
Channel   : 1            Battery   : 1             Temperature: 8.60 C


En este archivo os muestro las señales recibidas en mi casa.

En el programa del arduino he colocado un sensor de presión, por lo que si solo queréis ver los datos del sensor, debéis anular el código correspondiente al BMP180, es comentar 3 líneas.

PROGRAMA


Saludos.
Juan Galaz


Bibliografía:


https://github.com/merbanan/rtl_433
https://triq.org/rtl_433/
rec433.html

No hay comentarios:

Publicar un comentario