Red de sensores Arduino de larga distancia: ¿protocolo 1Wire o RS422?

Tengo algunos sensores de cada uno de los cuales necesito, leer un voltaje, poder encenderlos. (Están alimentados por fuente de alimentación AC 220V).

La distancia a recorrer es de unos 40 metros.

No quiero usar muchos cables para lograr esto.

Las soluciones que he estado considerando son las siguientes: - Protocolo de 1 cable: es bastante simple, pero algunas personas han informado de bastantes problemas;

  • rs422, funciona bien en largas distancias, pero podría ser una solución costosa.

En caso de que elija el protocolo de 1 cable, ¿cómo conectaría mis sensores a una interfaz de 1 cable?

Si rs422 no es demasiado complicado y expansivo, elegiría esta opción, ya que podría considerar extender la red a unos 200-250 metros en el futuro.

¿Cómo conectaría mis sensores a una interfaz rs422? ¿Cómo haría que mi Arduino hablara con RS22? ¿Has probado algún chip RS422? He visto bastantes de ellos en línea, pero no estoy seguro de cuál elegir.

¿Sería demasiado complicado hacer un cable RS22 yo mismo? He buscado en eBay y solo he encontrado cables que no son lo suficientemente largos y demasiado expansivos.

¿Qué tan caro es "demasiado" caro?
Preferiría RS485 en lugar de RS422 o de un solo cable. Puedes usar cualquier cable blindado de dos núcleos, no necesitas nada especial. La interfaz a RS485 suele ser a través de UART (chip MAX485 o similar). Manténgalo semidúplex por simplicidad. Tener una pequeña MCU con cada sensor para conectarlo a la red (ATTiny, PIC16, etc).
No puedo recomendar 1 cable para una distancia de 40 m. 1-wire estaba destinado a comunicaciones económicas de corta distancia. Habiendo dicho eso, me sorprendió encontrar esta nota de aplicación de Maxim: Pautas para redes confiables de 1 cable de línea larga .
@ Majenko-notGoogle ¿Cuáles son las ventajas de rs485 sobre rs422?
@geraldCelente Mira mi respuesta.
@IgnacioVazquez-Abrams Más de veinte dólares por un cable de 40 metros.

Respuestas (1)

Personalmente, no optaría por RS422 o 1-wire.

RS422 es realmente una conexión punto a punto, como RS232 (y generalmente se usa para extender RS232), y 1 cable es realmente solo para conexiones locales dentro de una PCB.

En su lugar, debe usar RS485.

RS485 es como RS422 (RS232 con señalización diferencial), excepto que está diseñado para ser punto a multipunto o totalmente peer-to-peer.

La comunicación suele ser semidúplex (aunque no siempre, pero lo más sencillo es mantenerla semidúplex), y normalmente usaría un chip MAX485 (o similar) para convertir la conexión UART de un microcontrolador a RS485. Se usa un solo pin GPIO para cambiar al modo de transmisión cuando desea enviar datos en la red y, de lo contrario, está en modo de recepción constante esperando que lleguen los datos.

Necesitaría un pequeño microcontrolador con cada sensor para conectarlo al bus, algo simple, como un ATTiny o un PIC16, algo con un UART de hardware preferiblemente y, por supuesto, las instalaciones que necesite para comunicarse con su sensor.

Luego escribiría un protocolo (o usaría uno existente) mediante el cual Arduino envía un mensaje con un identificador de "dirección" al bus, junto con un comando, y el sensor programado con la dirección correspondiente reacciona a ese comando, posiblemente luego envíe datos al Arduino (un protocolo típico de "respuesta de llamada").

En cuanto al cableado, no necesitas nada especial. El cable serial blindado simple de dos núcleos está bien, aunque eso puede considerarse excesivo: si no es un entorno demasiado ruidoso, entonces cualquier cable de dos núcleos funcionaría. Aunque lo mejor, por supuesto, es el par trenzado, y la mejor calidad absoluta es el par trenzado blindado. Una buena opción es el cable Ethernet CAT5. Es barato, viene en rollos de 305 m y tiene 4 pares trenzados. Por supuesto, solo necesita 1 de esos pares, por lo que los otros tres podrían usarse para otras cosas, por ejemplo, para transportar energía.

Si no va a usar (recomendar) un par trenzado, ¿por qué molestarse con la señalización diferencial?
De acuerdo con @markt: el par trenzado es mejor que el protegido. Además, FWIW, RS422 y RS485 usan esencialmente el mismo hardware (MAX485 y familia) solo que están cableados físicamente de manera diferente.
Muy bien, me estaba olvidando de TP.