2 votos

Conecte de forma inalámbrica varios DS18B20 en una casa

Estoy planeando leer los datos de temperatura de toda mi casa usando varios DS18B20 y enviando todos los datos a una raspberry pi. Ya he conseguido interpretar los datos de un sensor directamente conectado a la pi, pero estoy teniendo problemas para encontrar una manera de conectar varios de ellos de forma inalámbrica.

He investigado productos como este par rx tx Pero no creo que se pueda comunicar en dos sentidos y creo que el DS18B20s necesita tanto enviar como recibir. También he mirado este transceptor Pero parece que utiliza muchos más puertos de los que quiero, y no estoy seguro de que pueda transmitir la única línea de datos que necesito sin todos los demás cables/puertos. Básicamente (creo) estoy buscando un transceptor que sólo se comunica el cable que necesito sin todos los extras (si esto incluso existe / es posible). Siento que me falta algo que es muy obvio, pero no puedo averiguar qué. Aquí es la hoja de datos del DS18B20, por si sirve de ayuda. Gracias de antemano.

1voto

Andrew Walker Puntos 9038

Aunque el protocolo de señalización del DS18B20 requiere una transmisión para consultarlo, no se querría pasar eso por un enlace de radio. En su lugar, una MCU local en el nodo consultaría al sensor y luego transmitiría el resultado de forma unidireccional.

Llegados a este punto, es importante señalar que ya existen sensores de temperatura inalámbricos fabricados. Por ejemplo, tanto dispositivos con su propia pantalla LCD que también transmiten una señal OOK en 433 MHz, como sondas sin pantalla para sistemas de interior/exterior. A menudo, la codificación en el aire no está documentada y es propietaria, pero a menudo es fácil hacer ingeniería inversa, y se han publicado varias bases de código para la decodificación. La mayor preocupación puede ser si los nodos tienen números de serie únicos (probablemente, pero quizás no todos los modelos). Las colisiones no son realmente una preocupación, siempre y cuando haya suficientes paquetes libres de interferencias para obtener una tasa de actualización razonable. Por último, al igual que con los proyectos personalizados, la utilización de la batería de sonido es algo que puede variar, dependiendo de cuánto esfuerzo se haya puesto en ello.

Si te decides a hacer algo a medida, estarías buscando una solución de bajo coste para la MCU y el transmisor de radio. Los transmisores de 300-433 MHz basados en resonadores SAW, como los que has enlazado, son una opción, y con un pin para el sensor y otro para la radio, puedes utilizar algunas de las MCUs más pequeñas de 6 u 8 pines. Sin embargo, si sigues este camino, considera el uso de un receptor más sofisticado en el pi - TI y SiLabs tienen ofertas que son radios de datos superheterodinos "reales" sintonizables muy superiores a los receptores regenerativos baratos.

Las radios de datos de 2,4 GHz, mucho más sofisticadas, también pueden ser baratas, pero suelen requerir un bus SPI completo para su control, lo que significa más pines de la MCU. Algunas de las combinaciones MCU/radio de BTLE también pueden funcionar en modos propietarios más sencillos, a veces compatibles con los protocolos aéreos heredados, como el del nRF24, pero suelen costar más que una radio y una MCU baratas. El lado positivo es que puedes conseguirlas ya unidas en un submódulo. También hay algunas combinaciones de MCU + radio de gama muy baja procedentes de China que se encuentran en cosas como drones de juguete que podrían ser aplicables si puede obtener la documentación necesaria para trabajar con ellos.

El ESP8266 y el ESP32 se consideran generalmente como dispositivos WiFi, pero ofrecen algunos modos propios que utilizan sólo la señalización aérea de nivel inferior sin las capas de protocolo superiores, evitando así el coste de tiempo/energía de asociarse a una red sólo para informar de una lectura y volver a dormir inmediatamente.

Por último, aunque el esquema de modulación propietario de LoRa está recibiendo mucha atención para la información de los sensores de mayor alcance, vale la pena señalar que, a medida que aumenta la popularidad, la disponibilidad de kits de hardware programables de bajo coste que las radios de Semtech pueden, hasta cierto punto, funcionar en modos OOK o FSK más sencillos y hablar con otros dispositivos que los implementen. Sin embargo, estas radios todavía cuestan más de 20 dólares por nodo, y parece que, al menos en la función de recepción, no es posible activar un simple silenciador de RSSI, sino que se requiere satisfacer el detector de preámbulo de paquetes o bien falsearlo estableciendo una longitud mínima y un error máximo permitido.

1voto

DmitrySandalov Puntos 129

Tienes razón, tu CI del termómetro "habla" el bus monofilar bidireccional, y eso no es nada que puedas introducir en estos transmisores ultrasimplistas (y de dudosa legalidad). Hay que "pedirles" datos, y tú no lo estás haciendo de ninguna manera.

Además, estos transmisores se limitan a realizar la modulación por desplazamiento de amplitud (ASK) de un oscilador de frecuencia fija que funciona continuamente. Eso significa que no puedes tener dos de ellos transmitiendo al mismo tiempo, porque no hay manera de distinguir las dos señales.

Además, todos sus sensores son idénticos, por lo que aunque hicieran que eso funcionara por arte de magia y evitaran esas colisiones por pura suerte, seguirían sin poder decir cuál de sus sensores está informando.

Así que, hagas lo que hagas, necesitarás un microcontrolador para hablar con su sensor en un lado, y hablar con algún tipo de hardware de RF en el otro. Idealmente, ese hardware de RF debería ser mucho mejor que estas abominaciones de 433 MHz.

Estos transceptores basados en el nRF24L01 que has publicado son mucho mejores: aunque se basan en un chip que el fabricante de CI ya marcó como "no recomendado para sistemas nuevos", en realidad pueden hacer mucho más.

Podrías conseguir un microcontrolador barato (por ejemplo, un arduino o un clon) que hable a 1 hilo con tu sensor, y SPI con la placa RF. Luego, distribuyes esos alrededor. El nodo central de Arduino pide periódicamente los datos a cada uno de los nodos de los sensores, y el microcontrolador del sitio del sensor responde.

1voto

ianb Puntos 659

El bus de 1 hilo necesita una MCU para hablar con los dispositivos conectados: -

enter image description here

Tengo problemas para encontrar la forma de conectar de forma inalámbrica varios de ellos

Cada sensor de 1 hilo necesita una MCU y, si quieres conectar varios sensores de forma inalámbrica, cada MCU también puede utilizarse para controlar (digamos) un transmisor local de 433 MHz que pueda recibir un único receptor de radio. Ese único receptor es común a todos los transmisores.

He mirado productos como este par rx tx, pero no creo que se pueda comunicar en dos sentidos y creo que el DS18B20s necesita enviar y recibir.

La MCU local puede comunicarse con el DS18B20 y esa MCU local puede controlar un transmisor de radio local. En otras palabras, no intentes hacer un transmisor de radio de 1 hilo - mantén el sistema de 1 hilo local en cada MCU y utiliza la potencia de reserva de la MCU para controlar el transmisor como sea necesario. No intentes mezclar estos protocolos o te estarás buscando problemas y probablemente nunca conseguirás que funcione.

Yo lo veo así; tienes múltiples sensores de temperatura alrededor de tu casa y cada diez minutos más o menos cada uno transmite un valor de temperatura a un receptor común. Ese receptor común habla con tu RaPi.

Se producirán colisiones, pero dado que una sola transmisión puede realizarse en 100 ms, la ocupación del canal común será de 1 segundo en diez minutos para diez sensores. Se puede añadir un poco de aleatoriedad a la sincronización de la transmisión para que si los datos colisionan debido a la transmisión simultánea haya una baja probabilidad de que esto se repita.

Diseñé un sistema de este tipo que controlaba un centenar de arcones en un almacén. Cada transmisor transmitía a ciegas con un poco de aleatoriedad en el tiempo. Entre las transmisiones, la MCU y el transmisor entraban en reposo y se podía conseguir una duración de la batería de aproximadamente 1 año con una pequeña pila de 9 voltios. El sistema buscaba la detección temprana de un armario congelador defectuoso. Utilicé material de RF de esta empresa porque tienen buena reputación.

1voto

Jamie3213 Puntos 48

Su sensor DS18B20 requiere una MCU local para enviar/recibir valores de temperatura a través del protocolo 1-Wire.

En lugar de complicar el sistema mediante el uso de transceptores de radio extraños y muy caros, usted debe considerar el uso de algo como un ESP8266 que se conecta directamente a un WiFi local, que también es trivialmente fácil de manejar por la Raspberry Pi. Es probable que ya tengas WiFi (con capacidad de 2,4 GHz) en tu casa, así que es una obviedad conectar la Raspberry Pi y tus sensores remotos a ella.

Siga un proyecto de pelota que rebota como este que apunta a la mayor parte del código necesario y que se implementa fácilmente en el entorno de desarrollo de Arduino. Hay muchos proyectos de GitHub que puedes buscar también.

Si no te gusta diseñar tus propias placas de circuito impreso, puedes conseguir placas compatibles con Arduino como ésta, que cuestan sólo unos pocos dólares.
enter image description here Encontrarás múltiples variantes, algunas marcadas como Wemos-D1's otras sin ninguna marca.

La potencia necesaria es bastante manejable:
enter image description here

Puedes encender, asociar, iniciar sesión, enviar datos y apagar en un segundo más o menos sin problemas.
Puedes conseguir carcasas para proyectos que se adapten al factor de forma de Arduino, tanto para la red eléctrica (alimentación por USB) como para las opciones de alimentación por batería.
Ciertamente no vale la pena hacerlo de cualquier manera que no pueda utilizar las bibliotecas existentes para impulsar el proyecto ... su desarrollo será simplemente una pesadilla.

Los módulos NRF24L01+ son fáciles de usar y baratos, pero se necesita una MCU local para controlarlos. Acabarás gastando más dinero y tiempo usándolos (y he usado muchos) que usando una solución ESP8266. Nada es más sencillo.

Esto hace que su proyecto sea un simple servicio web en la Raspberry Pi y que sus sensores remotos se enciendan, se conecten y depositen los valores de tiempo/temperatura. Qué podría ser más simple.

Nota Si se inclina por comprar soluciones esencialmente fuera de la caja, podría considerar el uso de la Sensores TI Simplelink (basados en ARM), Tienen un coste bastante razonable en sus distintas variantes (30-40 dólares) que se conectan a redes como BLE a través de WiFi. La versión de WiFi afirma 3 meses en 2 * pilas AA en la tasa de actualización de 1 minuto, por lo que debe ser un año más o menos en las actualizaciones de 5 minutos. No los he probado, pero no parece haber ninguna razón para sospechar que no sean fiables.

0voto

theGecko Puntos 633

Si no quieres hacerlo todo desde cero puedes utilizar los nodos z-wave de Fibaro. Yo uso un par de DS18B20 junto con una Raspberry en mi red domótica.

Lo que necesitas:

Tablero Razberry tranceiver

Sensor universal Fibaro (está hecho para interconectar el DS18B20)

Y una alimentación de 5 V en cada nodo. Luego puedes descargar Domoticz o una aplicación domótica Z-wave similar para la Raspberry.

Al final obtendrás una interfaz agradable para el navegador para ver los sensores: enter image description here

No tengo sensor de humedad, así que lo de la línea verde en el gráfico es un poco defectuoso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X