Go Down

Topic: 8 Geräte Seriell am Arduino (Read 1 time) previous topic - next topic

BlackMizi

Moin zusammen,

hier die Eckdaten zum obigen Projekt:
- Basis sollte ein Arduino sein
- An diesen Arduino sollen bis zu 8 Endgeräte via Serieller Schnittstelle angeschlossen werden.
  - Die Endgeräte haben nur ca. 80 Zeichen Puffer.
  - Die Endgeräte haben keine Interrupts.

Das Problem ist, das ich nach einer Lösung suche die 8 Geräte mit Daten zu versorgen, ohne dass es zu Datenverlusten kommt.
- Gibt es ein Board für den Arduino mit 8 Seriellen Ports?
- Kann man das ganze per Software lösen?

Bin für jede Anregung Dankbar.

Gruß Kai

Mein aktuelles Projekt: http://www.plastes.de

ArduFE

Hallo,

meinst du mit serieller Schnittstelle RS232 ? Wenn ja, brauchen die Hardware Handshake (RTS, CTS, ...) ? Welche Baudrate ?

Fertige Boards mit 8 Schnittstellen kenne ich nicht. Es gibt SPI zu UART Chips, davon würde man sicher mehrere brauchen. Keine Ahnung ob es dafür fertige Breakout-Boards gibt.

Bei eingebauten Hardware UARTs ist meines Wissens nach das Maximum bei Arduinos derzeit 6 Stück beim Teensy 3.6, davon können zwei oder drei Hardwarehandshake. Da könnte man aber eventuell mehrere Boards von verbinden, über UART oder I2C.


volvodani

Der mir "größte" einfache bekannte Arduino ist der MEGA mit AVR Mega2560 µC der hat 4 UART Schnittellen je nach Geschwindikeit und Daten könnte man noch mindestens eine Software Serielle Schnittstelle implementieren.
8 sind meiner Meinung nach nicht möglich.  Die 4 UART sind nur dann möglich wenn du die USB Schnittstelle auf dem Arduino nicht nutzt  und den mit ISP programmierst und den Bootloader tilltst.
Evtl ist der MEGA2560Core was für dich erfordert aber Erfahrung.
Gruß
DerDani
0x2B | ~ 0x2B = 0xFF  
(Shakespeare)

BlackMizi

Ja, mit serieller Schnittstelle meinte ich RS232.

Das Problem mit dem Handshake ist, dass ich bei nur einer Schnittstelle 8 Geräte parallel anschließen müsste. Wie macht man das dann mit dem Handshake?
Mein aktuelles Projekt: http://www.plastes.de

ArduFE

Es gibt anscheinend RS233 Multiplexer als fertiges Gerät. Sowas habe ich aber noch nie in der Hand gehabt, kann ich nichts zu sagen.

Bei dir kommt also von einer Schnittstelle was rein und über 8 soll was raus gehen ? Auf alle das gleiche ?

Hm, sonst einen Raspi einen USB-Hub und mehrere (2 oder 4 fach-) USB zu Seriell Umsetzer nehmen ?

Zum Hardwarehandshake auf normalen Arduinos müssen die AVR-Experten was sagen. Meines Wissens nach unterstützt die normale Arduino Serial Klasse kein CTS/RTS. Die für dem Teensy 3.x schon.

papa_avr

Wenn Du nur senden willst, und die Endgeräte selbst programmierst, wäre es kein Problem - dafür reicht eine serielle Schnittstelle, und Du sendest einfach ein Adressbyte mit.

Oder Du nimmst 8 Arduinos plus einen als Master und verbindest sie mit einem anderen vervügbaren Protokoll (SPI oder I2C) - die kleinen kosten ja nicht die Welt.

Oder Du schaltest mit Analogschaltungen oder Relais die Leitungen jeweils um..

Viele Möglichkeiten

BlackMizi

Die Endgeräte sollen eigentlich nur empfangen. Prinzipiell können der Einfachheit halber alle Geräte das gleiche bekommen. Die Datenmenge wird überschaubar sein.

Aber wie bekommen die Endgeräte eine Adresse, die der Arduino dann senden kann? Es gibt leider keine Konfigurationsmöglichkeit der Geräte und eine Hardwarekennung haben die Geräte leider auch nicht!

--> Oder Du schaltest mit Analogschaltungen oder Relais die Leitungen jeweils um.
Wie geht denn so etwas? Bin leider kein Hardwarespezialist!
Mein aktuelles Projekt: http://www.plastes.de

ArduFE

Ein paar Dinge sind mir immer noch nicht klar

Quote
dass ich bei nur einer Schnittstelle 8 Geräte parallel anschließen müsste
Es gibt da ein Gerät mit einer seriellen Schnittstelle als Ausgang und acht Geräte mit einer als Eingang ?
Dazwischen soll dann ein Arduino ?

Dieses erste Gerät sendet feste Daten ? Oder kannst du die ändern ?

Quote
Die Endgeräte haben nur ca. 80 Zeichen Puffer.
Die Frage nach dem Handshake wurde auch noch nicht beantwortet. Also nochmal: Verwenden diese achte Geräte nur die Sende- und Empfangsleitungen (RX / TX) oder auch die Steuerleitungen (CTS, RTS), um zu signalisieren, dass sie Daten annehmen können ? (Im zweiten Falle wäre einfaches Umschalten kaum möglich.)


BlackMizi

Der Arduino werdet diverse Daten aus, bereitet die Daten auf und sendet die aufbereiteten Daten via einer RS232 Leitung an die Geräte. Die Geräte lesen alle Daten, auch wenn nicht alle Daten für alle Geräte nötig wären.

Die Geräte habe keine Steuerleitungen (CTS, RTS) aber natürlich RX/TX.
Mein aktuelles Projekt: http://www.plastes.de

ArduFE

Wenn die Geräte nur empfangen, aber nie was senden, und du an alle das gleiche schickst, brauchst du eigentlich nichts umschalten. Dann kannst du acht MAX232 mit dem gleichen TX-Signal vom Arduino versorgen und das als acht RS232 Signale weitergeben.

Wenn man jedem Gerät etwas anderes schicken will, käme in jede Sendeleitung zu einem MAX232 ein AND-Gatter mit 2 Eingängen (also ein logisches UND, gibt es als IC). Die acht ANDs würde über acht Ausgangspins vom Arduino angesteuert. Man setzt immer nur einen der acht Ausgänge auf HIGH, nur dieses AND lässt das TX-Signal durch.

Anstatt der ANDs könnte man auch ein Analogschalter IC mit einem Eingang und acht Ausgängen nehmen, wie der andere Poster schon gesagt hat.

Falls die Geräte aber auch senden, wird es komplizierter. Da würde ich dann wirklich mehrere Arduinos verbinden und die Daten sammeln.

BlackMizi

Wenn ich es richtig verstehe, dann soll ich die TX Leitungen mit einem Baustein schalten. Klingt klasse und ich bin überzeugt davon, dass es auch ohne Probleme funktioniert, wenn ich wüsste, wie so etwas geht. Ich habe von solchen Bausteinen schon gehört, aber leider NULL Ahnung davon.

Hast Du vielleicht ein sprechendes Bild?
Mein aktuelles Projekt: http://www.plastes.de

ElEspanol

Ich denke, du solltest ein paar Angaben über Einsatzzweck und vor allem die "Endgeräte" machen. Sogar Rückkanal könnte u.U. mit nur eine UART gehen.

ArduFE

Hier schon mal ein kleiner Einstieg, in den Diagrammen rechts sieht man das Ausgangssignal wie es aus dem Arduino kommt und was der RS232 Pegelwandlerbaustein daraus macht.
https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter

Wenn ich mir das genau ansehe, braucht man dann kein AND, sondern ein OR. Mit zwei von denen hier, könnte man die Umschaltung machen.
https://assets.nexperia.com/documents/data-sheet/74HC_HCT32.pdf

ElEspanol

wenn die Endgeräte überhaupt rs232 sind. Und wenn, könnte bereits ein einziger MAX232 reichen

ArduFE

wenn die Endgeräte überhaupt rs232 sind.
Also zumindest sagte er in Beitrag #3
Quote
Ja, mit serieller Schnittstelle meinte ich RS232.
Wenn aber das auch noch unklar ist, halte ich mich hier erstmal raus.

Go Up