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.
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
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?
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.
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..
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!
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 ?
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.)
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.
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.
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.
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.
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.
Alles mit nur einem Baustein (MAX232) regeln würde mir sehr gefallen. Leider muss ich gestehen, dass ich mir die Datenblätter angesehen habe und nur Bahnhof verstehe. Ein Bild / Skizze würde mich da zu 100% retten. :-[
postmaster-ino:
Wie wäre Es damit: Budda bei de Fische?
Wenn Dir AND-Gatter und MAX232 Fremdworte sind (und Dein Google ggf. eine Störung hat) wird Das wohl schwierig werden.
Das Problem bei den Endgeräten ist, dass die existierende Programmierung das Gerät speichertechnisch schon fast ausgereizt hat, deshalb der wenige freie Speicher.
Und was nützt es mir, wenn ich Google und das gelesene leider nicht verstehe.
Also wenn das die anzusteuernde Teile sind, da lese ich:
"1 x Asynchronous hardware serial port, TTL interface, with 300 baud to 600K baud."
aber nix von RS232
Eventuel könntest du sowas auch mit einem oder 2 CD4051 realisieren, dann brauchst du keine Adressierung mit einbauen