Forum: Mikrocontroller und Digitale Elektronik Arduino mit vielen Seriellen Pins


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Cicada3301 (Gast)


Lesenswert?

Hallo,ich suche ein Arduino (durch Arduino IDE programmierbaren), mit 
möglichst vielen Seriellen Anschlüssen (Software Seriell geht nicht, da 
ich alle Daten gleichzeitig empfangen muss).

Gibt es da welche mit mehr als 4 (Arduino Mega)?

LG
Cicada

von MagIO (Gast)


Lesenswert?

Was soll er denn sonst noch können? Und wie schnell solls denn sein 
(bps)?

Mir würde da als erstes ein Propeller von Parallax einfallen. Da der 
keine Hardware-Pins hat, sondern alles in Software macht, kann man alle 
Pins zu Seriellen Schnittstellen umfunktionieren. Macht also 14.

Die Programmierung ist auch recht simpel, wenn man nicht all zu 
verrückte Sachen damit machen möchte. Auf jeden Fall einfacher, als VHDL 
zu lernen und das alles mit einem FPGA zu machen.

von Cicada3301 (Gast)


Lesenswert?

Hallo, er soll Serielle Daten Lesen und auf die mit Seriellen Daten 
Antworten.
Die Rechenleistung ist also ziemlich gering. Außerdem soll er einen 
ESP8266 (Web Server) ansteuern und lesen.

LG
Cicada

von MagIO (Gast)


Lesenswert?

Irgendwie ist das eine magere Ausbeute an neuen Informationen!

Nochmal:
Wieviele serielle Ports sollen es denn sein?
Wie schnell laufen die seriellen Schnittstellen?
Kann der uC an einer Seite lesen und wo anders die Daten wieder senden, 
oder muss da auch gepuffert werden?

Und auch nochmal:
14 Serielle Schnittstellen sind mit dem Propeller kein Problem (full 
duplex bei 115200 baud). Das können 4 Kerne erledigen und 4 Kerne 
bleiben zum Verteilen.

Wenn nicht zuviel Logik dahinter steckt, dann kann man das mit der 
Propeller-Eigenen Hochsprache machen. Aber um das bewerten zu können 
müsste man mehr von der Aufgabenstellung wissen.

von Cicada3301 (Gast)


Lesenswert?

Es sollen 10 Serielle Ports sein. wenn z.B. an RX 1 "Scharf" ankommt 
soll er dass erkennen und am TX 2 "ballaballa" senden. Außerdem soll auf 
dem Webserver eine GUI laufen an dem Daten gelesen werden sollen und 
Über Seriellen Ports verteilt werden.(Tendenziell wenig Rechenleistung).
Die Spannung der Seriellanschlüsse ist 5 Volt (Propeller 3,3V) 
"Umrechnung" möglich?

LG
Magnus

von Cicada3301 (Gast)


Lesenswert?

Baudrate: 9600

von Peter (Gast)


Lesenswert?

Je nachdem reicht wohl schon der ESP8266 mit Software Serial, den sollte 
man nicht unterschätzen :).

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

TIs LM4F120H5QR bietet schon mal 8 davon und kommt in
einem 64-Pin LQFP-Package.

Nur fuer die Antuinofraktion nicht.

SCHADE...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Cicada3301 schrieb:
> Es sollen 10 Serielle Ports sein. wenn z.B. an RX 1 "Scharf" ankommt
> soll er dass erkennen und am TX 2 "ballaballa" senden.

Könnte es sein, daß das ein etwas ... ressourcenvergeudendes 
Hardwaredesign ist?

Warum können die an den seriellen Ports hängenden Geräte nicht an einem 
anständigen seriellen Bus hängen? Dann wird dafür nur eine einzige UART 
verballert.

Klar, dann ist ein Protokoll erforderlich (wie z.B. auf üblichen 
RS485-Bussen gebräuchlich), aber auch da muss kein Rad neu erfunden 
werden.

Wenn das Argument "Reaktionsgeschwindigkeit" lautet, dann kann man die 
Baudrate auch einfach erhöhen.

Welche Anforderungen in Sachen Reaktionsgeschwindigkeit hast Du denn 
tatsächlich, und was für Geräte sollen das sein, die an den Ports 
hängen?

Beitrag #5003681 wurde von einem Moderator gelöscht.
Beitrag #5003683 wurde von einem Moderator gelöscht.
von Sebastian S. (amateur)


Lesenswert?

Da haben sich die Atmels so viel Arbeit gemacht und Listen mit den 
Eigenschaften ihrer Prozessoren erstellt - und keiner liest sie;-)

Atmega max 4
XMega  max 8

von Cicada3301 (Gast)


Lesenswert?

Hallo,
es sollen mehrere Arduino's zur Hausautomatisierung zusammengeschlossen 
werden mit Webinterface. Reaktionszeit unter 5 Sekunden also nicht hoch.
PS ich habe relativ wenig Ahnung von solchen Sachen :(

C
LG
Cicada

von Peter (Gast)


Lesenswert?

Da solltest Du einen Bus nehmen (CAN, RS424 oä). Eine Serielle 
Schnittstelle ist für ein Netzwerk sonderlich schlecht geeignet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Cicada3301 schrieb:
> es sollen mehrere Arduino's zur Hausautomatisierung zusammengeschlossen
> werden mit Webinterface. Reaktionszeit unter 5 Sekunden also nicht hoch.

Dann genügt eine Schnittstelle und ein serieller Bus.

Beispiele findest Du unter dem Stichwort "Hausbus".

Ein weiterer Vorteil: Du musst nicht jedes einzelne Gerät direkt mit 
Deiner Zentrale verbinden, sondern es genügt eine Busleitung, die an 
jedem Gerät vorbeigeführt wird. Das ist deutlich weniger Aufriss als 
eine Sternverkabelung.

von MagIO (Gast)


Lesenswert?

Cicada3301 schrieb:
> Die Spannung der Seriellanschlüsse ist 5 Volt (Propeller 3,3V)
> "Umrechnung" möglich?

Für die Eingänge reicht ein Vorwiderstand, für die Ausgänge kann man 
Levelshifter nehmen.
Den Propeller gibt es im 40 poligen DIP. Levelshifter von Adafruit gibts 
auf einer DIP breakout-Platine.

Aber ... wie weit sind denn die angeschlossenen Gegenstellen entfernt? 
Schon klar, dass es mit 5V eh nicht all zu weit weg sein kann?

von Bernhard S. (b_spitzer)


Lesenswert?

Peter schrieb:
> Da solltest Du einen Bus nehmen (CAN, RS424 oä).
Da ist wohl eher RS422 gemeint... Oder aber RS485.

von spess53 (Gast)


Lesenswert?

Hi

>PS ich habe relativ wenig Ahnung von solchen Sachen :(

Dann solltest du dich mit den simpelsten Grundlagen vertraut machen. Nur 
vom Hörensagen kann man nicht programmieren.

MfG Spess

von Rene Z. (renezimmermann)


Lesenswert?

Wenn es unbedingt sein muss gibt es Ic für Spi/I2c to Usart mit FiFo.

Max3107, 3109 und andere.

Gruß Rene

von J. S. (engineer) Benutzerseite


Lesenswert?

Cicada3301 schrieb:
> Hallo,ich suche ein Arduino (durch Arduino IDE programmierbaren), mit
> möglichst vielen Seriellen Anschlüssen (Software Seriell geht nicht, da
> ich alle Daten gleichzeitig empfangen muss).

Was heisst denn gleichzeitig? Verarbeiten kannst Du sie eh nur serielle 
und dann reduziert sich das auch einen Portmultiplexer mit Latches. Mit 
einem 8 bit breiten Port hast Du mit einem Schlag 8 Leitungen drin und 
kannst sie interpretieren. Ich habe das schon für 256 Bit IOs ausgebaut. 
(4 64 Bit Worte)

: Bearbeitet durch User
von MagIO (Gast)


Lesenswert?

Cicada3301 schrieb:
> Hallo,
> es sollen mehrere Arduino's zur Hausautomatisierung zusammengeschlossen
> werden mit Webinterface. Reaktionszeit unter 5 Sekunden also nicht hoch.
> PS ich habe relativ wenig Ahnung von solchen Sachen :(
>
> C
> LG
> Cicada

Mehrere Arduinos macht ja fast nur Sinn, wenn die räumlich voneinander 
getrennt sind.
Wie soll denn die Verbindung genau aussehen?

Funk? Wenn ja, welcher Standard? BT? RF? ...
Kabel? Wenn ja, welche? EIB? LAN? ...

von Cicada3301 (Gast)


Lesenswert?

Hallo,

An spess53:
Programmieren kann ich nur ich kenn nicht alle Hardwareseitigen 
Möglichkeiten.(Habe schon das Fertige Skript für ein Gerät)
Deshalb frage Ich.


Es kamm ja die Idee, dass ich Arduino 1 mit Arduino 2, Arduino 2 mit 
Arduino 3,Arduino 4 mit Arduino 1 verbinde.
Da muss ich den Arduino sagen dass sie alles einfach weitersenden und 
auch mit lesen.
Müsste es dann nicht passieren das irgendwann immer noch alte befehle 
Rumhängen?
Sollte man dann einfach Label wer was Gesendet hat und wenn es bei ihm 
wieder ankommt das er das dann Löscht?
Oder wäre eventuell ein Netz wo Jeder Arduino mit Jedem Kommuniziert?

Es müssen Im "Test-Zimmer" 7 Servos,8 Buttons, 2 Potis, 4 DHT11 Und 
einer Arduino Alarmanlage (Das Könnte auch Seriell gehen, Sie sit schon 
Fertig und in Betrieb, nen Paar zeigen Code bekomme ich schon hin)

LG
Cicada

von Einer K. (Gast)


Lesenswert?

Cicada3301 schrieb:
> Es kamm ja die Idee, dass ich Arduino 1 mit Arduino 2, Arduino 2 mit
> Arduino 3,Arduino 4 mit Arduino 1 verbinde.
> Da muss ich den Arduino sagen dass sie alles einfach weitersenden und
> auch mit lesen.
> Müsste es dann nicht passieren das irgendwann immer noch alte befehle
> Rumhängen?
> Sollte man dann einfach Label wer was Gesendet hat und wenn es bei ihm
> wieder ankommt das er das dann Löscht?

Das kann man aufbauen.

Nennt sich dann Tokenring, oder Tokenpassing System.
Ist jetzt nicht das schnellste System, aber funktioniert!

Zumindest bemerkt man bei einem solchen System sofort, wenn irgendwo was 
klemmt.

von Cicada3301 (Gast)


Lesenswert?

Das ist dann wohl das sinnvollste dieser Tokenring. Wie sollte man das 
mit den Kennzeichnungenn machen das die Daten nicht immer im Kreis 
senden

von MagIO (Gast)


Lesenswert?

Hast du doch selbst schon geschrieben ... Label ... heißt zwar bei Token 
Ring Token ... aber man kann auch ein Label Ring aufbauen ;o)

Ist nix weiter, als eine eindeutige Zahl an der der Sender sein eigenes 
Paket wieder erkennt. Also z.B. sowas wie Nummer der Arduinos + laufende 
Nummer.

von MagIO (Gast)


Lesenswert?

Wir wissen immer noch nicht von welchen Leitungslängen wir reden, oder?

von Einer K. (Gast)


Lesenswert?

Cicada3301 schrieb:
> Wie sollte man das
> mit den Kennzeichnungenn machen das die Daten nicht immer im Kreis
> senden


Im einfachsten Fall:

Jedes Datenpaket mit einem Header und einer Prüfsumme versehen.



Jeder Knoten bekommt eine ID


Der Header umfasst:
Quellen ID
Ziel ID
laufende Nummer(MessageID)
//einen Zähler für die Hopps/Weiterreichungen



Pakete mit falscher Prüfsumme (CRC) werden verworfen.
Pakete mit Ziel != eigener ID werden weitergeleitet
Pakete mit Quelle == eigener ID  werden verworfen
Pakete mit Ziel == eigener ID werden verarbeitet

// Pakete mit mehr als z.B. 30 Hopps werden verworfen

von Route_66 H. (route_66)


Lesenswert?

Arduino F. schrieb:
> Der Header umfasst:
> Quellen ID
> Ziel ID
> laufende Nummer(MessageID)

Es sollte auch noch Pakete mit Ziel ID == an Alle geben.
Die werden verarbeitet UND weitergegeben - erst an der Quelle dann 
gelöscht

von Einer K. (Gast)


Lesenswert?

Eine Art Broadcast/GeneralCall?

Wenns für die Anwendung Sinn macht, klar!

von Cicada3301 (Gast)


Lesenswert?

Hallo,
habs grad mit 3 Arduino versucht, hat Funktioniert :-))

jetzt nur noch auf alle Arduino "portieren".

LG
Cicada

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.