Lecturas de sensores de largo alcance en una red en estrella con Arduino

Estoy planeando un proyecto que requiere que tenga alrededor de una docena de sensores de temperatura y humedad colocados alrededor de la casa y el jardín. Estos se conectarían a un Arduino central en la casa que registraría los datos y los enviaría a una base de datos en otro lugar.

He buscado en Internet soluciones que funcionen para tramos largos de cable. Para sensores de temperatura encontré 1-Wire, especialmente sensores DS18B20. Sin embargo, no parece existir sensores de humedad y presión que utilicen 1-Wire.

¿Cuál es la forma más fácil de lograr tal red de sensores? RS485 parece funcionar muy bien incluso con cables largos (mi recorrido más largo será de menos de 50 metros, la mayoría en el rango de 5 a 10 m), pero que yo sepa, requeriría un microcontrolador en cada extremo, lo que agregaría complejidad.

Para cables largos, encontrará que las señales de corriente se utilizan a menudo, ya que no se degradan con la distancia. Los bucles de corriente de 4-20 ma son el estándar para muchos procesos industriales. Para 5-10 m, puede utilizar sensores I2C si reduce la velocidad de datos y usa búferes en la línea. Ver la biblioteca Master I2C
En mi opinión, ese "1 cable" es solo terminología de marketing, en la práctica necesita 3 conexiones, 2 para suministro, 1 para datos. Podría modular los datos en el suministro, pero eso complica los circuitos que necesita. Lo mismo para RS485, complica las cosas.
¿Está la conexión inalámbrica fuera de la mesa?
A velocidades de datos lentas (300-1200 baudios), puede recorrer distancias inmensas con señalización de 0/5 V sobre no mucho más que una cadena húmeda. Para obtener puntos adicionales, puede usar par trenzado de 2 hilos con alimentación de CC en el par y un diodo a un capacitor en el otro extremo, y luego enviar señales sobre el par durante pequeños porcentajes del tiempo con el capacitor del otro extremo manteniendo el voltaje. | Tome 50 metros de par trenzado, aplique una onda cuadrada de 5V, agregue una carga ligera en el otro extremo y observe. En esa distancia, normalmente tendrá menos de 10 ohmios de resistencia de bucle y probablemente no más de 5 a 10 nF de capacitancia...
... A 1200 baudios, la atenuación puede ser mínima. Con una resistencia de bucle de, digamos, 10 ohmios, si su sensor consume 20 mA, la caída de voltaje es V = IR = 0,02 x 10 = 0,2 V.

Respuestas (2)

Si debe usar una opción con cable, entonces parece que tiene longitudes de cable largas y deberá diseñar tanto una comunicación de larga distancia como una alimentación de CC de larga distancia.

Para las comunicaciones por cable, RS-485, como mencionó, no es malo y puede ser controlado por un UART, que es fácil en el software. CAN también es un buen candidato y brinda más beneficios si está dispuesto a hacer más software (o no, dependiendo del código que pueda encontrar). Evitaría SPI o I2C: están destinados a estar en una placa y no viajar distancias tan largas.

Tanto para RS-485 como para CAN, sería mejor si pudiera conseguir un cable de par trenzado, y sería una ventaja si pudiera encontrar un cable compuesto con un par trenzado y un par de alimentación de CC. Aunque, para uso doméstico/pasatiempo, probablemente funcionaría lo suficientemente bien si no tuviera un par trenzado en las líneas de datos.

Para la alimentación de CC, deberá diseñar para una caída de voltaje y también cierta protección para ESD, efectos inducidos por rayos (tiene una antena larga allí) y también conductores en cortocircuito en caso de que su cable se dañe.

Si la conexión inalámbrica está en juego, entonces una red Zigbee es el camino a seguir. El XBEE de Digi sería un excelente comienzo. Sin embargo, necesitaría alimentar sus controles remotos por separado o con baterías, lo cual se puede hacer pero es otro paso de diseño. La red XBEE podría ser administrada directamente por su PC de base de datos a través de USB, omitiendo así la parte de Arduino.

RS-485 es realmente necesario para velocidades moderadas en largas distancias. Una dosis de sensores de humedad/temperatura no generará ningún dato significativo que justifique su uso.

Para señales en un rango de 5 a 10 metros, definitivamente probaría UART simple a velocidades de transmisión bajas: si la caída de voltaje en los cables no es demasiado grande, simplemente funcionará. Para conexiones más largas que muestren una caída de voltaje, probaría los controladores RS-232 para UART: estos son más baratos que los RS-486 y funcionan bien para distancias de hasta 300 metros a baja velocidad.