circuito eléctrico contiene elementos con identificación única

Quiero construir una red (circuito eléctrico) que contenga cientos de elementos (con ID únicos) basados ​​en algún microcontrolador.

Buen ejemplo de ese tipo de red pero mucho más cara (y avanzada) es Internet. Por ejemplo, tengo un servidor principal (en mi caso, un microcontrolador), nodos (computadoras con tarjetas ethernet) y cables (por ejemplo, cat 5e) que conectan el servidor con los nodos. Podemos suponer que la red tiene una topología en estrella.

Circuito

Requisitos según el gráfico anterior:

  • Tengo x números de C (C puede ser circuito, cable o conexión)
  • Tengo una gran cantidad de elementos con identificaciones únicas que se pueden conectar a cualquier lugar (C)
  • Los elementos con ID únicos se pueden intercambiar con otro elemento, eliminar o agregar (si existe C sin elemento)
  • Necesito saber la ID del elemento que estaba conectado a cierto C.
  • Necesito establecer una identificación por mí mismo o puedo comprar un "elemento" que sé cuál es su identificación.

¿Cuál es la forma más fácil/barata de hacer una red como expliqué anteriormente?

¿Qué tiene de malo Ethernet?
tienes que ser más preciso en la descripción de tu aplicación
Ethernet es excelente, pero no necesito todas sus capacidades. Estoy buscando la forma más económica y creo que son algunos componentes eléctricos baratos en los que puedo guardar ID para identificarlos cuando se conectan a la red.
Me imagino que tengo un elemento pequeño y cuando lo conecto a la red "él" envía información a arduino (o PC) ese elemento con ID x está conectado pero si cambio este componente a otro (con ID y) pero está en el mismo lugar en el circuito, arduino debe saber que se cambió.
No creo que obtenga nada más barato que Ethernet, ya que es un estándar y tiene muchas soluciones listas para usar en el estante. Pero, por supuesto, es mejor que describa su problema, en lugar de la solución asumida, ya que suena como un problema XY.

Respuestas (4)

Para eso está Dallas One-Wire .

La base de la tecnología 1-Wire® es un protocolo en serie que utiliza una sola línea de datos más una referencia a tierra para la comunicación. Un maestro de 1 cable inicia y controla la comunicación con uno o más dispositivos esclavos de 1 cable en el bus de 1 cable (Figura 1). Cada dispositivo esclavo de 1 cable tiene una ID (número de identificación) única, inalterable y programada de fábrica de 64 bits, que sirve como dirección del dispositivo en el bus de 1 cable.

Además, también hay chips de E/S, RAM, EEPROM y varios dispositivos caseros para ese bus. Desventaja: es solo maestro único.
Sí, se me ocurrió 1 cable, pero en realidad no es para lo que es 1 cable, aunque podría hacerlo ejecutando dos cables 1 para obtener bidireccional. Pero 1 cable es lento y los maestros de bus de hardware no son comunes en las MCU, mientras que CAN e I2C son comunes, bidireccionales y más rápidos. Sé que podríamos armar todo tipo de arreglos, pero es la simplicidad lo que se hará y funcionará... Sin embargo, será divertido tenerlo como un proyecto de trabajo/pagado :-)

Es posible que esté buscando algo como esto: http://www.mouser.com/ds/2/268/21952b-70868.pdf

Suponiendo que su "red", como describió, es solo abrir y cerrar un circuito, puede obtener circuitos integrados de expansión de E / S que pueden abordar líneas GPIO usando menos pines en la MCU (similar a un mux). Luego, en el lado del nodo, simplemente cree un circuito simple que subirá/bajará una línea cuando un nodo se inserte/retire.

Dicho esto, deberá programar las ID en la MCU; no podrá obtener las ID de los dispositivos en sí. (es decir, sabrá qué pin va alto o bajo, pero usted mismo debe asignarlo a un valor de ID)

Gracias por su respuesta. Resuelve en parte mi problema porque todavía no sé qué elemento (ID) estaba conectado a cierto circuito. Puedo asignar ID a elementos de circuito, pero los elementos pueden cambiar en cierto circuito. Por ejemplo, en la red de Internet, sé que me conecto al cable x PC1 con la dirección MAC z y si cambio la PC1 con la PC2, sabré que la dirección MAC cambió de z a c, pero el lugar físico (cable) sigue siendo el mismo.
@trojek, ¿está restringido en absoluto por los tipos de dispositivos que está conectando? ¿Qué pasa con las restricciones de costos? Si está haciendo los "nodos" usted mismo, puede agregarles una MCU, programar cada uno para que tenga una identificación y usar cualquier protocolo de comunicación (I2C, SPI, etc.) para obtener la identificación. Si se trata de dispositivos preexistentes, sería útil saber cómo planea identificarlos.
Haré nodos por mi cuenta. ¿Qué MCU puedes recomendar?
Realmente depende de qué más desea que hagan los nodos y cuáles son sus requisitos de distancia y velocidad. La respuesta corta: prácticamente cualquier MCU funcionará en los nodos para una comunicación simple. Si su MCU/PC principal está de alguna manera restringida en periféricos, asegúrese de que sea compatible con sus nodos
La distancia entre MCU/PC no excederá los 10 m. Desde los nodos, quiero controlar el encendido/apagado del LED, pero pensé que haría otro circuito (conectado a la fuente de alimentación y al relé) para cada nodo. Toda la información sobre la red que necesito mantener en DB en la PC.

Suponiendo que tenga claros sus requisitos (red de microcontroladores conectados a un solo microcontrolador, diseño de red propietario permitido, pequeño, simple, barato)...

¿Podría considerar una red CANbus, con múltiples buses CAN multipunto conectados entre sí por conmutadores CAN (como el transceptor CAN dual de alta velocidad ONSemi AMIS-42770)? Esto no se alinea con su topología en estrella, a menos que lo haga con los interruptores CAN. Pero CANbus es económico y está disponible en muchos microcontroladores. Los dispositivos pueden anunciar su presencia mediante un solo mensaje de identificación al microcontrolador del servidor cuando se encienden. Cada uno puede tener un IC de número de serie único de 1 cable o I2C.

También podría imaginar un mar de microcontroladores vinculados a I2C con un FPGA en el medio para actuar como un enrutador. Eso le brinda muchos enlaces I2C punto a punto en un IC económico, pero es una gran cantidad de trabajo para diseñar y probar en VHDL/Verilog.

A la luz de esto, ¿hay algo más que pueda decir sobre sus requisitos específicos?

Puede utilizar un número de serie IC.

Si necesita producir PCB en masa que tengan una identificación única sin necesidad de programarlos individualmente, entonces debe agregar un componente con un número de serie único, a veces llamado número de serie de silicio.

Si 64 bits es suficiente para usted, entonces algo como este IC haría el trabajo por usted. Puede usar esa identificación directamente o como una forma de generar su formato específico de identificación única.

Realmente no creo que esté respondiendo nada de lo que preguntó el OP ...
@EugeneSh. Parece que están buscando una manera de que cada elemento tenga una identificación única. Esa es mi opinión sobre la pregunta, como parece indicar el título. ¿Supones que están buscando un protocolo en lugar de hardware?
Un hardware que implementa un protocolo, supongo...
@EugeneSh. Bueno, supongo que podemos esperar a que se aclare. Si termina, estoy fuera de lugar, eliminaré esta respuesta.