De acuerdo con los sensores que está utilizando, tiene las siguientes interfaces:
BMP180 - I²C
DS18B20 - Onewire
YL-83 - erm solo un digital que llueve / no llueve pin? - o una salida de voltaje analógica (cuánto llueve)
Para Onewire hay una nota de aplicación disponible que describe la operación durante largas distancias, no estoy completamente seguro de si ese principio puede aplicarse a dicho sensor, pero supongo que 20 metros deberían ser factibles, son capaces de obtener 200 metros de eso. Es posible que tenga que adaptar el software o cambiar la resistencia de pull-up para hacer frente al cable más largo.
La salida digital del sensor de lluvia no debería suponer ningún problema, tiene una alta potencia de accionamiento y, al ser una simple salida de empuje de alta / baja. Realmente no puedo decir cuál sería el límite de la longitud del cable.
Si desea utilizar la salida analógica del sensor de lluvia, las cosas se ponen difíciles. Basado en el mejor esquema , la salida analógica no está en búfer. En realidad, es solo un simple divisor de resistencia formado por la resistencia de 10kOhm y cualquier resistencia que produzcan las gotas de lluvia. Para obtener esa señal incluso remotamente utilizable en los 20 metros, necesita al menos un seguidor de voltaje de amplificador operacional. No tengo experiencia con esto, alguien más tendrá que decirte qué funcionaría mejor.
Mi enfoque sería obtener un pequeño microcontrolador que manejaría la conversión digital analógica, también leer el valor del sensor de temperatura y luego enviar los datos a través del cable de 20m utilizando una UART de baja velocidad (4800 baudios funciona bien sobre distancias más largas también).
Esto fue antes de que me diera cuenta de que en realidad no colocará el BMP180 en el exterior (¿o sí?), así que lo dejaré aquí como información adicional ...
I²C sobre un cable de par trenzado de 20 metros, sé que es posible si realmente haces cosas sucias y doblas el protocolo al extremo. No lo hagas No se supone que cubra esas distancias.
El principal problema al que se enfrenta con estas longitudes de cable es que la capacitancia del cable cambiará las señales. Como I²C y Onewire utilizan resistencias de pull-up y transistores de drenaje abierto, la capacidad del bus es limitada. Por ejemplo, la especificación de I²C por NXP lo limita a un máximo de 550pF.
Ahora, un cable normal tendrá algo alrededor de una capacitancia de 120 pF / m (no lo he probado en un cable Ethernet), por lo que si tiene suerte podría obtener de 3 a 4 metros sin un "tratamiento especial".
Si desea colocar su sensor I²C allí, le sugeriría usar un pequeño microcontrolador para leer el sensor a través de I²C y enviar los datos a través del cable largo usando algo más utilizable, como un UART de baja velocidad o incluso algo diferencial para mayor inmunidad al ruido.