Use los cables internos de los cables de red para las conexiones del proyecto Arduino

4

Soy nuevo en Arduino y Raspberry Pi, y no tengo ningún conocimiento electrónico fuera de esto. Tengo un buen fondo de programación.

Acabo de aprender a soldar (básico), hice que mi pantalla LCD funcionara, mi sensor de lluvia, sensor de temperatura externo, sensor barométrico y cámara. Están conectados y registrando datos.

Ahora quiero poner esto fuera. Necesitaré cables largos para mi sensor de lluvia y sensor de temperatura. ¿Puedo desmontar un cable de red (Furukawa Cat 6) y usar los pares en el interior?

Necesitaré dos cables para el sensor de lluvia y tres para el sensor de temperatura. Un cable de red tiene pares más que suficientes, así que solo necesitaré pasar un cable.

Planeo desmantelar ambos extremos y soldar.

¿Está bien? ¿Cuál es la distancia máxima?

La distancia sería de unos 20 metros.

Los protocolos y la interfaz: no lo sé, pero veré las hojas de datos. El sensor de presión barométrica es Bmp180, el sensor de temperatura es el DS18B20 y el sensor de lluvia es el YL-83.

    
pregunta ddutra

3 respuestas

8

Ok, entonces tienes:

  • BMP180 = I 2 C
  • DS18B20 = 1-Wire
  • YL-83 = Voltaje analógico

Más de 20 m, todos de estos son difíciles (aunque no imposible)

  • I 2 C está diseñado para interconexiones cortas (¡circuito inter-intergrado!) no para series largas. Es especialmente problemático sobre par trenzado, ya que la interferencia entre líneas lo matará por completo. Existe un método llamado dI 2 C o diferencial I 2 C, que utiliza el chip PCA9615, pero que solo tiene una clasificación de aproximadamente 3 metros.

  • El análogo será terrible a menos que lo búferes (y probablemente incluso si lo haces): la caída de voltaje a través del cable desde cualquier carga impartida por el ADC, y más importante el ruido causado por la interferencia con las líneas digitales entre otras cosas .

  • 1 cable tiene limitaciones similares a I 2 C. Aunque me he vuelto a familiarizar con la especificación, este puede ser el único de los tres que podría interconectarse de manera confiable a más de 20 metros, siempre y cuando tenga cuidado con la interferencia y el ruido. Según esta nota de la aplicación de Maxim, 1-wire debería ser posible (gracias @ Transeúnte, para señalar eso, sobre esa longitud con cuidado.

Entonces, mi sugerencia sería agregar una MCU al final del cable para que se conecte con todos los sensores. Algo así como el ATTiny85 sería bastante compacto ya que solo es un paquete de 8 pines, pero tendría que ver cuántos pines de E / S se requieren. Necesitaría al menos 4 pines para sus entradas (1 es un ADC, 2 para la interfaz I 2 C y 1 para el bus de 1 cable). Pero entonces también necesitarías una interfaz a través del cable. El ATTiny85 tiene solo 6 pines de E / S, por lo que tendría 2 para interconectarse con el otro extremo del cable.

Le sugeriría algo como RS-485 para hacer esto, ya que está diseñado para ser un estándar de E / S diferencial y debería funcionar bien con un cable CAT6: tendría que hacer la terminación \ $ 100 \ Omega \ $ de lo contrario, las reflexiones de señales serían bastante problemáticas. En esta configuración tendrías comunicación half-duplex. Tendrías dos (quizás más) opciones para hacer esto:

  1. Implemente RS-485 directamente usando los 2 pines de E / S libres de la MCU; esto debería poder hacerse desde un punto de vista eléctrico, y no es tan difícil de implementar en el software. Además, significa que no necesita un controlador externo.

  2. Use un chip de controlador como el MAX481. Debería atar los pines DE y! RE juntos a un pin de E / S (selección de modo de transmisión / recepción), y atar los pines DI / RO juntos al otro pin de E / S libre que sería una entrada de datos bidireccional / línea de salida de datos.

Para ambas opciones, por ejemplo, podría sentarse en modo de recepción hasta que se le indique que transmita un maestro en el otro extremo del cable. En qué punto recopila y envía información sobre los valores del sensor. Una vez que envía la respuesta, vuelve a cambiar al modo RX y espera instrucciones adicionales del maestro.

En cualquier caso, si combina los sensores, solo tendrá una interfaz. Dado que aquí no hay un gran volumen de datos, reducir la velocidad de transferencia ayudaría en esta distancia; por ejemplo, podría usar dI 2 C o 1 cable para conectar la MCU a través del cable siempre que ejecuta el bus lentamente (quizás 10kHz) para permitir que las señales se propaguen y se establezcan.

    
respondido por el Tom Carpenter
4

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.

    
respondido por el Arsenal
3

Ya que no ha mencionado cómo va a utilizar la información del sensor, voy a asumir que es capaz de interactuar con el arduino a través de Ethernet. Le sugiero que cambie de idea y coloque el ardunio en una carcasa a prueba de intemperie junto con los sensores (o un cable de señal corto para ellos). Agregue un escudo poe etherenet al ardunino y aplique / infereface sobre él sobre la carrera de etherenet de 20m. Esto significa que todo estará funcionando dentro de sus especificaciones también y sospecho que podría estar más dentro de tu conjunto de habilidades.

    
respondido por el BenG

Lea otras preguntas en las etiquetas