Automatización doméstica en Cat5e de nuevo: ¿es un protocolo multipunto razonable?

1

Anteriormente he preguntado acerca de ejecutando I2C sobre CAN PHY a través de cables Cat5e para mi proyecto de domótica. Ahora, después de una ronda de ahorro y experimentación de dinero, me parece que abusar del chip RS485 MAX1487 puede ser una idea más barata que I2C sobre CAN. Ahora necesito un protocolo para permitir que el dispositivo host (con Ethernet) y los nodos satelitales se comuniquen entre sí.

Entorno

El entorno es el mismo: Cat5e en un entorno de interferencia extraterrestre muy hostil, el cable ya tiene RJ45 engarzado en el pinout TIA / EIA-568-B, y el presupuesto es muy ajustado. Entonces, ¿es este un pinout adecuado que transmite tanto energía como señal al dispositivo de destino?

  1. N / C
  2. N / C
  3. D +
  4. + 5V
  5. + 5V
  6. D-
  7. GND
  8. GND

También una restricción adicional: todos los chips utilizados aquí DEBEN estarán disponibles en el paquete DIP. La MCU preferida para mí es ATtiny85 para los nodos satélites y ATmega328P para el nodo con acceso a Ethernet.

Capa física

Y dado que todos los dispositivos en el sistema tienen algún tipo de MCU, puedo hacer que el bus se comunique entre ellos. Sin embargo, tengo que evitar la colisión. ¿Funcionarán este protocolo físico y el esquema de prevención de colisiones?

  1. Hable usando el chip de capa física RS485 MAX1487 a la velocidad de transmisión de UART 9600bps y 8 / N / 1.
  2. La red de terminación / polarización resistiva hace que la línea flote en 1. Conduzca el bus solo cuando se envía 0 (ya que MAX1487 puede triplicar sus controladores).
  3. Habla cuando el bus está inactivo, a.k.a lee como 1, durante al menos 5 bits de tiempo.
  4. Lea cada bit enviado de vuelta inmediatamente después de la transmisión, así como antes de transmitir el siguiente bit. Siempre que se encuentre una falta de coincidencia, cancele la transmisión y retroceda por un tiempo pseudoaleatorio antes de retransmitir.
  5. La primera transmisión de todos los nodos que simplemente se conectan debe retrasarse y usar el mismo tiempo de retroceso pseudoaleatorio que el choque de colisión.

Hablar aquí significa conducir el autobús. Elegí el chip MAX1487 que puede tener su transmisor apagado cuando no se usa. Red de polarización normal:

simular este circuito : esquema creado usando CircuitLab

Capa de enlace

Y dado que es multipunto, se debe usar algún tipo de direccionamiento, lo que conduce a este protocolo enmarcado:

Formato de cuadro (usando la sintaxis de la estructura C):

struct frame {
    uint16_t magic;          // = 0x55aa
    uint16_t source_address;
    uint16_t target_address;
    uint16_t payload_type;   // Like EtherType
    uint16_t payload_length; // Exclude padding, if any
    uint8_t  payload[];      // Padded to 2-byte boundary
    uint16_t checksum;       // CRC16 of entire frame before this frame
}

Las direcciones de origen y destino están codificadas en el chip, ya sea durante la programación, o utilizan algún valor específico del chip durante la fabricación, como el valor de calibración RC del AVR. La dirección de destino 0xffff significa fotograma transmitido.

Preguntas

  1. ¿Será este protocolo lo suficientemente bueno como un protocolo de control de automatización del hogar?
  2. ¿Se podrá extender este protocolo a IPv4 o IPv6?
pregunta Maxthon Chan

1 respuesta

1

RS-485 es una mala elección de protocolo con varios maestros. A diferencia de CAN, no tiene estados 'dominantes' y 'recesivos' - los puntos 1 y 0 implican conducir el autobús. Por lo tanto, una colisión provoca que ambos dispositivos conduzcan el bus a estados opuestos, obteniendo y hundiendo tanta corriente como puedan manejar. El voltaje resultante dependerá de las fuerzas relativas de los controladores y no tendrá un valor bien definido; de hecho, cada dispositivo puede leer un valor diferente.

¿Has considerado usar Ethernet? Puede definir su propio protocolo por encima de él, así como llevar IPv4 o IPv6 si lo desea.

    
respondido por el Nick Johnson

Lea otras preguntas en las etiquetas