Ich habe mehrere Benutzer auf Sitzen (50), jeder mit einer kleinen Tastatur zur Eingabe. Ich muss Eingaben von allen Benutzern sammeln. Ich möchte Arduinos für jeden Benutzer verwenden, der auch Antworten auf einer 7-Segment-Anzeige anzeigt. Ich beabsichtige, alle Arduinos über I2C zu verbinden, befürchte jedoch, dass das Signal aufgrund von Fern- und Fan-Out-Einschränkungen abfällt. Daher erwäge ich, sie zu verketten.
Ist das eine gute Idee oder gibt es einen besseren Ansatz, um dies zu tun?
arduino
microcontroller
Mudzify
quelle
quelle
Antworten:
Da der Anwendungshinweis gepostet RedGrittyBrick sagt:
Die Lösung im Anwendungshinweis besteht darin, bestimmte Treiberschaltungen zu verwenden, um die Signale in etwas umzuwandeln, das über größere Entfernungen angesteuert werden kann.
Da Sie ohnehin Treiberschaltungen benötigen, schlage ich stattdessen vor, dass Sie sich RS-485 ansehen . Dies ist ein bewährter Standard für die bidirektionale Übertragung über lange Kabel. Es verwendet einen normalen UART auf Ihrem Arduino, und die Treiberschaltungen können in vielen Formen und Formen gefunden werden. Wenn Sie keine eigene Leiterplatte herstellen möchten, stehen Adapterkarten zur Verfügung, die ein TTL-RX / TX-Signal von einem UART empfangen und in RS-485-Pegel konvertieren.
quelle
Wenn Sie nicht besonders an die Idee gebunden sind, Arduinos dafür zu verwenden, können Sie auch andere Mikrocontroller-Boards ausprobieren. Ich mag die verschiedenen Boards, die auf dem ESP8266-Chip basieren, sehr. Diese haben den Vorteil, dass sie über eine integrierte drahtlose Netzwerkverbindung verfügen, sodass alle direkt mit Ihrem zentralen System kommunizieren können, in dem die Eingaben gespeichert sind.
quelle
Haben Sie über Arduino Ethernet mit PoE nachgedacht? Behebt das Problem mit der Stromversorgung der Geräte und ermöglicht 2-Wege-Kommunikation
quelle
Wenn der Abstand zwischen Ihren Knoten nicht groß ist und Sie keine besonders schnelle Kommunikation benötigen, ist eine Verkettung, bei der Nachrichten über serielle UARTs von einem zum nächsten weitergegeben werden, wahrscheinlich eines der wenigen Dinge, die Sie ohne Hinzufügen von Hardware tun können . Es gibt keine Begrenzung für die Länge der Kette, die Sie erreichen können, wenn jede Karte das von ihr weitergeleitete Signal neu generiert. Jeder Knoten fügt jedoch eine gewisse Verzögerung hinzu, bevor er eine Nachricht weiterleitet. In der einfachsten Implementierung kann die Verzögerung pro Knoten gleich der sein Übertragungszeit des Nachrichteninhalts.
Es hört sich jedoch so an, als müssten Sie möglicherweise Nachrichten in beide Richtungen entlang der Kette weiterleiten. Die Herausforderung dabei wäre das Vorhandensein von nur einem Hardware-UART auf jeder Karte. Sie können dies mit einem Software-Uart erweitern. Um jedoch mehr als eine davon zu erhalten, müssen Sie eine komplexere Implementierung verwenden als die mit der IDE gelieferte Standardeinstellung. Wenn Sie eine integrierte USB-Serie aus dem Weg räumen können, können Sie mit dem Hardware-UART in die eine und die Software in die andere Richtung kommunizieren.
quelle
Sie können die I2C-Einschränkungen überwinden, indem Sie die DS28E17 1-Wire-to-I2C-Brücke verwenden.
Die Lösung hängt natürlich von Ihrem Budget und der erforderlichen Bandbreite ab.
quelle