Red de automatización para toda la casa: ¿CAN o Ethernet?

Estoy a la mitad de la construcción de mi sistema de automatización del hogar. Como ingeniero electrónico/desarrollador de software, he desarrollado mucho de esto desde cero y espero comenzar a escribir más blogs y construir/publicar mi historia y trabajos una vez que esté completo.

Ahora estoy en el punto de la automatización de la iluminación. Tengo aproximadamente 30 interruptores de pared que ejecutan un prototipo de placa frontal de sensor táctil y ahora necesito volver a conectarlos a mi computadora de automatización Win7 Embedded. También necesito conectar unos 30-40 atenuadores y relés.

Por lo que puedo ver, tengo un par de opciones para protocolos tanto a nivel físico como de aplicación y realmente estoy buscando algún comentario o consejo sobre las siguientes opciones, además de si alguien tiene alguna otra sugerencia.

En este momento, todos los controladores funcionan con procesadores ARM M3 y tengo pilas Ethernet y CANopen disponibles. El sistema debe ser "multimaestro" e, idealmente, admitir tanto el control de eventos (por ejemplo, alguien presiona un botón) como el control de procesos (consultar un sensor cada 30 segundos o hacer una pregunta a un nodo específico).

Puedo abrir

  • Multi-maestro y corrección automática de errores/prevención de colisiones
  • Opciones de proceso, servicio y evento para mensajes
  • Puede ser complicado "conectar virtualmente" el dispositivo. Se requiere mucha configuración
  • Barato de implementar en hardware, relativamente escalable. Límite de 127 dispositivos en un bus. Red en cadena tipo margarita.

ethernet

  • ¿Multidifusión UDP o difusión? No estoy seguro de cuál es más apropiado
  • Probablemente tenga que implementar mi propio protocolo de mensajería o API en la parte superior para manejar todos los tipos de eventos que necesito, no estoy seguro acerca de las acciones impulsadas por eventos
  • Star network, PERO podría ser compatible con PoE, lo cual es bueno
  • Más caro en hardware
  • Mucho más ampliable en software (número potencialmente infinito de dispositivos, etc.).

¿Alguien tiene algún comentario o idea sobre cuál puede ser la mejor ruta a seguir? Tengo la sensación de que Ethernet puede ser el camino, pero me preocupa que se requiera mucha más implementación en el software.

Gracias

No creo que CAN tenga sentido, basado puramente en las distancias involucradas en una casa. Me gusta usar CAN, pero pienso en la topología de la red, la necesidad de terminación, etc., en lugar de ejecutar caídas Cat6 en todas partes desde un panel de conexión donde tendrá una gran flexibilidad.
Ethernet. CAN es una solución a un problema diferente que no tienes: alta fiabilidad y tiempo real. [En respuesta a @Krunal. Las distancias del tamaño de una casa no son demasiado largas para CAN. Es posible crear un bus CAN del tamaño de un bus.]
Ah, sí, soy consciente de que es teóricamente posible hacer buses CAN de ese tamaño, es solo que después de diseñar varios para camiones y autobuses reales, no creo que sea el diseño más fácil / práctico para un hogar cuando Ethernet está disponible (considerando la reducción en el rendimiento y otros problemas que surgen con los autobuses más largos). Pero sí, dudo que la iluminación del hogar sea crítica para la seguridad / requiera determinismo, a menos que SeBen sea Tony Stark.
Tenga en cuenta que está mezclando dos cosas aquí: Ethernet y UDP. Puede ejecutar prácticamente cualquier cosa a través de Ethernet, incluidos los marcos sin formato si así lo desea (pero probablemente no lo estaría). UDP probablemente sea útil porque le brinda una gran cantidad de funcionalidades de forma gratuita, pero no hay absolutamente nada listo, tiene que usar uno solo porque usa el otro.
Otro beneficio de ethernet es que el hardware está mucho más comúnmente disponible para el backend. Listo para usar puede ahorrar mucho tiempo. Si solo lo está haciendo como un proyecto en el hogar, incluso podría usar un adaptador de ethernet a serie de una compañía como wiznet y luego usar controladores más simples para simplificar el diseño.
Otra razón para hacer Ethernet es la fácil disponibilidad de Cat5/6 con clasificación plenum y todo el ecosistema de hardware/piezas/etc. que viene junto con una opción común para el cableado doméstico.
Puntos positivos acerca de que el hardware general está más disponible para Ethernet que para CAN. Sin embargo, las interfaces USB/CAN o los conjuntos de chips Intel con CAN integrado son bastante comunes en estos días (bastantes placas base pequeñas están disponibles con interfaces CAN integrado).
Tampoco estoy de acuerdo con las limitaciones de longitud del cable. CAN puede correr fácilmente >1 km a las velocidades típicas que usaría para esta aplicación. Puedo conectar eso en cadena. Imagina una pared con un dispositivo a cada lado. Puedo llevar un solo bucle a ambos dispositivos. Ethernet va a requerir un cable desde cada uno hasta el 'nodo cero'. Como es probable que todo sea PoE, se utilizarán muchos más conmutadores/puertos PoE.
@MichaelKjörling UDP fue mi pensamiento porque no necesariamente quiero tener un "maestro" en la red por confiabilidad. Estoy imaginando usar un protocolo de estilo de transmisión o multidifusión para que todos los dispositivos puedan estar al tanto de cualquier cosa que suceda y elegir reaccionar a la información del sensor sin requerir un mensaje directo de un controlador maestro.

Respuestas (2)

Aunque podría usar Ethernet e implementar una pila TCP/IP en cada controlador, y seguramente usar UDP para transmitir lecturas de sensores/comandos/etc. Recomendaría el uso de CAN por los siguientes factores:

  1. Más fácil de implementar/codificar
  2. Muy, muy ligero. Puede integrarse con controladores más pequeños. Se puede usar un MCP2515 si la MCU no tiene CAN.
  3. Puede usar CAT5/CAT6 y usar los cables de repuesto y llevar 24 V o 36 V para alimentar los nodos.
  4. El marco de mensaje pequeño se puede instalar fácilmente dentro de un marco de RF sub-1Ghz si decide extender el Bus sobre RF. Solo necesita codificar una puerta de enlace CAN a RF, tal vez usando módulos RFM69 el-cheapo.

Hay un blog que explora el uso del bus CAN para un uso similar, vale la pena echarle un vistazo: talk2.wisen.com.au

De todos modos, si decide usar Ethernet, UDP sería mejor, por lo que no necesita preocuparse mucho con el direccionamiento de nodos.

¡Mis mejores deseos!

CAN es mucho más simple porque es un RS232 / RS485 revisado pero limitado en número y funciones. El cableado es serie estándar y es mucho más simple que LAN. LAN y Wifi seguramente son mucho mejores porque hay más funciones disponibles, obviamente los precios son más altos. Wifi podría tener la ventaja de no requerir otros cables que los de alimentación. Muchas interfaces baratas como las de Velleman están conectadas con RS485 o CAN, pero WIFI y LAN son mucho mejores si desea desarrollar sus dispositivos controlados.

-1 para la primera oración. CAN está muy lejos de RS485, y aún más lejos de RS232.