Hintergrund: Ich versuche, die Elektronik für eine Eishockey-Anzeigetafel zu ersetzen. Die alte Elektronik hatte folgende Probleme:
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?
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.
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.
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.
NickHalden
Craig