Me gustaría empezar la implementación de un sistema que consta de N microcontroladores (N >= 2 Mcu), pero me gustaría saber las posibilidades para que puedan comunicarse uno con el otro.
Idealmente, (N-1) los microcontroladores se colocan en el interior de la casa, actuando como clientes, mientras que el último (el "servidor") se conecta a una PC a través de USB. Los problemas que tengo ahora mismo es cómo conectar estos (N-1) microcontroladores para el "servidor". Los clientes Mcu realizar muy simple de tareas, por lo que puede no ser una buena solución para el uso de las Armas para hacer esos trabajos simples, sólo porque proporcionan PUEDEN / PHY-MAC.
La comunicación no va a suceder más de una vez cada pocos minutos para la mayoría de los dispositivos y en la demanda de los demás. La velocidad no es muy crítico (mensaje corto): 1 Mbit/s creo que es excesivo para mis propósitos.
El Mcu pienso usar son los siguientes.
- Atmel AVR Pequeño / Mega
- TI MSP430
- ARM Cortex M3/M4
- (Posiblemente Atmel AVR UC3 - 32-bit)
Me gustaría evitar Fotos si es posible (elección personal), simplemente porque hay menos posibilidades de que el programa de ellos (todos los de arriba tienen más o menos herramientas de código abierto, así como algunas herramientas oficiales).
Sé que algunos Brazos proporcionar PUEDE funcionalidad y no estoy tan seguro acerca de los demás.
Ahora mismo me ocurrió con estas posibilidades:
- Simple GPIO para enviar datos (por ejemplo > 16 bits en ALTO para indicar el inicio de mensaje, > 16 bits a la BAJA para indicar el final del mensaje). Sin embargo, en un nivel de frecuencia << (frequency_client, frequency_server) para ser capaz de detectar todos los bits. Sólo se necesita un cable por cliente MCU.
- RS-232: creo que este es por lejos el más utilizado protocolo de comunicación, pero no sé cómo se las escalas. Me estoy planteando hasta 64 cliente Mcu ahora (probablemente más tarde)
- USB: AFAIK esto es principalmente del tipo RS-232, pero no creo que se escala muy bien en este caso (a pesar de que el USB es compatible con muchos de los dispositivos - 255 si recuerdo correctamente - puede ser demasiado complicado para esta aplicación)
- RJ45 / Ethernet: esto es lo que realmente me encantaría usar, ya que permite la transmisión a través de largas distancias sin problemas (al menos con blindados >Cat 6 cable). El problema es el costo (PHY, MAC, transformador, ...). No sé si en realidad se puede soldar bien en casa, aunque. De esta manera yo no se necesita un cliente de MCU
- Inalámbrico / ZigBee: los módulos son muy caros, aunque puede ser el camino a seguir a fin de evitar los "spaghetti", detrás de la mesa
- Los módulos de RF / transceptores: estoy hablando de aquellos en los 300 MHz - 1 GHz, por lo que debe ser difícil para soldadura en casa. Los módulos están construidos, pero son tan caros como los ZigBee (al menos la de RF módulos en Mouser, en Sparkfun no parecen ser los más baratos).
- Se PUEDE? Parece ser muy robusto. Incluso aunque yo no los va a utilizar en aplicaciones de automoción, todavía puede ser una buena alternativa.
- I2C / SPI / UART? De nuevo - mejor evitar los "spaghetti", con los cables, si es posible
- Los plc no son realmente una opción. El rendimiento se degradan muy rápido como los aumentos de longitud y depende de la capacitancia de la carga de la red de energía. Creo que en cuanto al precio es casi el mismo como Ethernet.
Además, el protocolo que sería "mejor" en el caso de las transmisiones simultáneas (supongamos el caso raro de que, en el mismo instante dos dispositivos de empezar a transmitir: el protocolo que proporciona la mejor "gestión de conflictos del sistema" / "la colisión de sistema de gestión"?
Para resumir: me gustaría saber cuál puede ser la mejor solución para un cliente distribuida sistema que hace muy poquito de la comunicación de datos, teniendo en cuenta tanto la flexibilidad (número máximo de dispositivos, conflicto / colisión, sistema de gestión, ...), precio, fáciles de hacer en casa (soldadura), ... me gustaría evitar el gasto de$ 20 en el módulo de comunicación, pero al mismo tiempo tener 30 cables de detrás de la mesa sería un asco.
La solución que estoy de imagen ahora mismo sería hacer la comunicación básica entre cerca de Mcu por GPIO o RS-232 (barato!) y el uso de Ethernet / ZigBee / Wi-Fi en un MCU por "zona" para comunicarse con el servidor (caro, pero todavía es mucho más barato que un módulo Ethernet por cada cliente MCU).
En lugar de cables puede ser posible el uso de la fibra óptica / fibras ópticas. A pesar de conversiones adicionales son necesarios, y no estoy seguro de si sería la mejor solución en este caso. Me gustaría conocer detalles adicionales sobre ellos.