Bus serie Raspberry Pi a múltiples AVR

Antecedentes: Estoy tratando de reemplazar la electrónica de un marcador de hockey sobre hielo. La vieja electrónica tenía los siguientes problemas:

  • Dejo de funcionar. Desde entonces descubrí que se habían quemado un par de diodos y condensadores.
  • El controlador estaba cableado. Queremos deshacernos del cable que corre a lo largo de la pista.
  • Los conectores para el controlador dieron muchos problemas. He tenido que volver a soldarlos innumerables veces.

Foto del marcador

El marcador mide aproximadamente 3,5 metros de ancho.

Planeo pegar una Raspberry Pi en el marcador. Planeo poner un dongle usb wifi que admita el modo ap y ejecutar hostapd. Luego, los anotadores pueden conectarse a Raspberry Pi a través de una interfaz web desde una tableta/computadora portátil.

Planeo reemplazar las bombillas incandescentes con LED, posiblemente OSRAM LR G5AP-BZCZ .

Originalmente planeé usar extensores i2c GPIO. Pero desde entonces he aprendido que el cableado de un bus i2c debe ser lo más corto posible. Esto significaría que necesitaría mucho cableado desde los gpios hasta los leds. De ahí llego a mi pregunta.

Pregunta: Me gustaría tener un microprocesador AVR para cada 7 segmentos o cada 2 7 segmentos cuyo trabajo sea un extensor GPIO. Estos se colocarían físicamente cerca de los LED. Me gustaría comunicarme desde Raspberry Pi con los múltiples microprocesadores AVR a través de un bus serie común.

He leído que RS-485 puede tener múltiples hosts en un bus. Y como mi comunicación es en una dirección (salida de Raspberry Pi), espero que esto pueda simplificar la solución.

¿Pueden Raspberry Pi y AVR hacer RS-485 usando las interfaces seriales existentes? ¿Qué circuito se necesita para hacer esto?

¿Por qué no hacer que esa interfaz también sea inalámbrica? Solo medio broma...
Puede usar el ATmega32u4 que tiene USB integrado y conectarlo a la raspberry pi con un concentrador USB con alimentación.

Respuestas (3)

Hay circuitos integrados de transceptor RS422/RS485 estándar disponibles

Aquí encontrará muchas páginas de circuitos integrados relacionados con RS485 en Digikey

Puede usar datos seriales asíncronos estándar usando RS485 si lo desea. "Lanzar tu propio" código multiestación no debería ser demasiado difícil [tm], pero es una rueda inventada a menudo: habrá muchas personas que ya ofrecen software (mucho gratis) que hace esto.

El bus CAN vive encima de RS485, pero probablemente sea excesivo para lo que quieres.


Excelente nota de aplicación

AN-218 Implementación de una red multipunto RS-485

Esto está dirigido a ZBASIC, pero es probable que tenga una relevancia directa para su aplicación.

  • Esta nota de aplicación describe cómo interconectar dispositivos ZX con una red multipunto RS-485. Las redes RS-485 se utilizan en muchas aplicaciones industriales, incluido el control de procesos, la automatización de edificios e incluso el control de luces en un concierto. Se proporciona una placa de cabecera RS-485 y un ejemplo de conexión para explicar el hardware simple que se requiere para comenzar a trabajar con dispositivos ZX en red. El software incluido con esta nota de aplicación brinda una aplicación de muestra y un conjunto reutilizable de API para enviar y recibir mensajes en una red RS-485. Aquí hay una tabla de contenido para ayudar con la navegación del documento.

Aquí encuentras...

Diagrama de cableado multipunto RS485 y comparación RS232 - RS485

Ellos dicen -

  • RS485 a veces se denomina RS485 Multidrop LAN, ya que puede conectar varios dispositivos en un entorno de red LAN. Todos estos dispositivos están conectados a un cable de un solo par. Transmitir y recibir comparten los mismos dos cables.

  • Oficialmente, la especificación RS485 permite solo 32 nodos (dispositivos) en la LAN. Sin embargo, los fabricantes de circuitos integrados han desarrollado controladores RS485 capaces de permitir de 128 a 255 nodos en una LAN RS485. Utilizamos estos controladores RS485 de última generación en nuestros productos. Esto significa que puede utilizar nuestros convertidores y dispositivos de E/S remotas en situaciones más amplias.

ingrese la descripción de la imagen aquí


Tutorial útil Wikipedia - RS485

Muchas ideas aquí de la búsqueda de imágenes de G

Esta es probablemente la categoría correcta de enfoque, sin embargo, solo señalaría que los transceptores RS485 pueden no ser realmente necesarios para estas distancias. Incluso si fuera bidireccional, los AVR pueden probar sus pines de transmisión en serie y la distancia y la velocidad de datos no son tan altas. Sin embargo, si los propios elementos de iluminación se consideran una fuente potencial de ruido, los transceptores diferenciales añaden un margen de seguridad.

Mientras otros abordan su pregunta planteada, quiero abordar sus inquietudes sobre i2c. 3,5 metros es justo debajo de 11,5 pies. Mirando el tablero, eso es probablemente solo 10 pies (3 m) desde el dígito más a la derecha hasta el dígito más a la izquierda. Ahora considere que puede poner el RPi en el punto muerto, y un maestro i2c no tiene que estar al comienzo de un bus físico, eso es realmente 5 pies a cada lado del bus. Francamente, cualquier autobús i2c de Paultry puede hacer 3 m por sí mismo. Yo personalmente he hecho 10m. Y eso sin entrar en extensores de bus. Puede obtener kilómetros y millas utilizando búferes i2c, o incluso duplicar o triplicar un bus regular con multiplexores i2c.

Al cablear el RPI en el medio del bus, no tendrá problemas con la caída de voltaje a 1,5 m. El uso de par trenzado (Ethernet cat 5/5e) estaría bien, pero puede obtener un rendimiento aún mejor con cat 6 (par trenzado blindado). A lo sumo, es posible que tenga que reducir la velocidad del autobús, pero ¿para su aplicación? No necesita actualizar nada más de una o dos veces por segundo (los relojes de tiempo).

Aún mejor, el RPI Model B, Rev 2 (el último) tiene dos buses i2c reales. También podría acceder al segundo autobús.

En resumen, puedes usar i2c sin un solo problema. (Diablos, dependiendo de cómo estén conectadas las luces existentes, probablemente ni siquiera necesite ejecutar el bus i2c a lo largo de la placa). Ciertamente menos costoso o complicado como usar múltiples microcontroladores e implementar RS485.

Dado que su comunicación es solo desde Raspberry Pi a los AVR, puede usar RS-232. Un transmisor RS-232 puede alimentar varios receptores RS-232 sin problemas. Probablemente también podría usar los niveles lógicos directamente desde Pi UART a los AVR UART, aunque el uso de niveles RS-232 puede facilitar la depuración.