Serieller Bus Raspberry Pi zu mehreren AVRs

Hintergrund: Ich versuche, die Elektronik für eine Eishockey-Anzeigetafel zu ersetzen. Die alte Elektronik hatte folgende Probleme:

  • Es hört auf zu arbeiten. Ich habe seitdem entdeckt, dass ein paar Dioden und Kondensatoren durchgebrannt waren.
  • Der Controller war verkabelt. Wir wollen den Draht loswerden, der über die Länge der Eisbahn läuft.
  • Die Anschlüsse für den Controller gaben viele Probleme. Ich musste sie unzählige Male neu verlöten.

Foto der Anzeigetafel

Die Anzeigetafel hat einen Durchmesser von etwa 3,5 Metern.

Ich habe vor, einen Raspberry Pi an die Anzeigetafel zu kleben. Ich plane, einen WLAN-USB-Dongle einzusetzen, der den AP-Modus unterstützt, und hostapd auszuführen. Punktezähler können sich dann über ein Webinterface von einem Tablet/Laptop mit dem Raspberry Pi verbinden.

Ich plane, die Glühlampen durch LEDs zu ersetzen, möglicherweise OSRAM LR G5AP-BZCZ .

Ich hatte ursprünglich geplant, i2c GPIO-Extender zu verwenden. Aber ich habe inzwischen gelernt, dass die Verkabelung für einen i2c-Bus so kurz wie möglich sein muss. Dies würde bedeuten, dass ich viel Verkabelung von den GPIOS zu den LEDs benötigen würde. Damit komme ich zu meiner Frage.

Frage: Ich hätte gerne einen AVR-Mikroprozessor für jedes 7-Segment oder alle 2 7-Segmente, dessen Aufgabe ein GPIO-Extender ist. Diese würden physisch in der Nähe der LEDs platziert werden. Ich möchte von Raspberry Pi über einen gemeinsamen seriellen Bus mit den mehreren AVR-Mikroprozessoren kommunizieren.

Ich habe gelesen, dass RS-485 mehrere Hosts in einem Bus haben kann. Und da meine Kommunikation in eine Richtung geht (Ausgabe vom Raspberry Pi), hoffe ich, dass dies die Lösung einfacher machen kann.

Können der Raspberry Pi und der AVR RS-485 über die vorhandenen seriellen Schnittstellen ausführen? Welche Schaltung wird dazu benötigt?

Warum diese Schnittstelle nicht auch drahtlos machen? Nur halb im Scherz...
Sie könnten den ATmega32u4 verwenden, der USB an Bord hat, und ihn mit einem USB-Hub mit Stromversorgung an den Himbeer-Pi anschließen.

Antworten (3)

Es sind standardmäßige RS422/RS485-Transceiver-ICs verfügbar

Hier finden Sie viele Seiten mit RS485-bezogenen ICs bei Digikey

Sie können bei Bedarf asynchrone serielle Standarddaten über RS485 verwenden. Das "Rollen Ihres eigenen" Multistation-Codes sollte nicht zu schwer sein [tm], aber es ist ein oft erfundenes Rad - es wird viele Leute geben, die bereits Software anbieten (viele kostenlos), die dies tut.

Der CAN-Bus lebt auf RS485, ist aber wahrscheinlich übertrieben für das, was Sie wollen.


Hervorragender Anwendungshinweis

AN-218 Implementieren eines RS-485-Multidrop-Netzwerks

Dies richtet sich an ZBASIC, ist aber möglicherweise von direkter Relevanz für Ihre Anwendung.

  • Dieser Anwendungshinweis beschreibt, wie ZX-Geräte mit einem RS-485-Multidrop-Netzwerk verbunden werden. RS-485-Netzwerke werden von vielen industriellen Anwendungen verwendet, darunter Prozesssteuerung, Gebäudeautomation und sogar die Steuerung von Lichtern bei einem Konzert. Eine RS-485-Header-Platine und ein Beispielanschluss werden bereitgestellt, um die einfache Hardware zu erklären, die für den Einstieg in die Vernetzung von ZX-Geräten erforderlich ist. Die in diesem Anwendungshinweis enthaltene Software enthält eine Beispielanwendung und einen wiederverwendbaren Satz von APIs zum Senden und Empfangen von Nachrichten in einem RS-485-Netzwerk. Hier ist ein Inhaltsverzeichnis, das Ihnen bei der Dokumentennavigation hilft.

Hier finden Sie ...

RS485-Multidrop-Verdrahtungsdiagramm und RS232-RS485-Vergleich

Man sagt -

  • RS485 wird manchmal als RS485-Multidrop-LAN bezeichnet, da es mehrere Geräte in einer LAN-Netzwerkumgebung verbinden kann. Diese Geräte sind alle mit einem einzigen Kabelpaar verbunden. Senden und Empfangen teilen sich die gleichen zwei Drähte.

  • Offiziell erlaubt die RS485-Spezifikation nur 32 Knoten (Geräte) im LAN. IC-Hersteller haben jedoch RS485-Treiber entwickelt, die in der Lage sind, 128 bis 255 Knoten in einem RS485-LAN zuzulassen. Wir verwenden diese RS485-Treiber der nächsten Generation in unseren Produkten. Das bedeutet, dass Sie unsere Konverter und Remote-I/O-Geräte in umfangreicheren Situationen einsetzen können.

Geben Sie hier die Bildbeschreibung ein


Nützliches Tutorial Wikipedia - RS485

Hier finden Sie viele Ideen aus der Bildersuche von G

Dies ist wahrscheinlich die richtige Ansatzkategorie, ich möchte jedoch darauf hinweisen, dass RS485-Transceiver für diese Entfernungen möglicherweise nicht erforderlich sind. Selbst wenn es bidirektional wäre, können die AVRs ihre seriellen Sendepins tristate und die Entfernung und Datenrate sind nicht allzu hoch. Wenn jedoch die Beleuchtungselemente selbst als potenzielle Rauschquelle betrachtet werden, fügen die differentiellen Transceiver einen Sicherheitsspielraum hinzu.

Während andere auf Ihre gestellte Frage eingehen, möchte ich Ihre Bedenken bezüglich i2c ansprechen. 3,5 Meter sind knapp unter 11,5 Fuß. Wenn Sie auf die Tafel schauen, sind das wahrscheinlich nur 3 m (10 Fuß) von der Ziffer ganz rechts bis zur Ziffer ganz links. Bedenken Sie nun, dass Sie den RPi-Totpunkt platzieren können und ein i2c-Master nicht am Anfang eines physischen Busses stehen muss, das sind wirklich 5 Fuß auf beiden Seiten des Busses. Ehrlich gesagt kann jeder paultry i2c-Bus 3 m alleine fahren. Ich habe persönlich 10m gemacht. Und das ohne auf Bus-Extender einzugehen. Sie können Kilometer und Meilen mit i2c-Puffern erhalten oder sogar einen normalen Bus mit i2c-Multiplexern verdoppeln/verdreifachen.

Durch die Verdrahtung des RPI in der Mitte des Busses treten keine Probleme mit einem Spannungsabfall bei 1,5 m auf. Die Verwendung von Twisted Pair (Ethernet Cat 5/5e) wäre in Ordnung, aber Sie können mit Cat 6 (Shielded Twisted Pair) eine noch bessere Leistung erzielen. Sie müssen höchstens den Bus bremsen, aber für Ihre Anwendung? Sie müssen nichts mehr als ein- oder zweimal pro Sekunde (die Stechuhren) aktualisieren.

Noch besser, das RPI Model B, Rev 2 (das neueste) hat zwei echte i2c-Busse drauf. Sie könnten auch auf den zweiten Bus zugreifen.

Kurz gesagt, Sie können i2c ohne ein einziges Problem verwenden. (Verdammt, je nachdem, wie die vorhandenen Lichter verdrahtet sind, müssen Sie wahrscheinlich nicht einmal den i2c-Bus entlang der Platine führen.) Sicherlich weniger teuer oder komplizierter als die Verwendung mehrerer Mikrocontroller und die Implementierung von RS485.

Da Ihre Kommunikation nur vom Raspberry Pi zu den AVRs erfolgt, können Sie RS-232 verwenden. Ein RS-232-Sender kann problemlos mehrere RS-232-Empfänger speisen. Sie könnten wahrscheinlich auch einfach die Logikpegel direkt vom Pi-UART zu den AVR-UARTs verwenden, obwohl die Verwendung von RS-232-Pegeln das Debuggen erleichtern kann.