Go Down

Topic: Arduino Pro Mini Variablen über RS485 Bus ändern (Read 221 times) previous topic - next topic

peterrre

Guten Tag liebe Community,

in einem Projekt sollen wir mehrere Arduino Pro Mini's über einen seriellen Bus (RS485) ansteuern und je nach Information einige Variablen per Interrupt (vllt. geht es auch einfacher?? ) verändern.

Die Pro Mini's sollen auf eine eindeutige ID reagieren, wenn die ID-Information vom Bus kommt und dann darauf reagieren.
Durch einen Interrupt, oder ähnliches, sollen dann ein paar Variablen die Information vom Bus bearbeiten und die Werte anpassen.
Dies kann z.B. die Farbe von einem LED Streifen von Rot auf Blau per Businformation an ProMini mit der ID-1 sein. Ein weiteres Beispiel, wäre die Helligkeit der Streifen erhöhen.

So die Idee.

Jetzt ist die Frage: Geht das überhaupt, bzw. hat jemand damit Erfahrung oder sogar einen Link zu einem Beispiel, auch wie das Protokoll aussehen könnte?

Vielen Dank im Voraus.

LG


noiasca

#1
Jun 17, 2019, 10:40 am Last Edit: Jun 17, 2019, 10:42 am by noiasca
ja das geht.
Interrupt sehe ich da jetzt keinen.
Was du dir überlegen musst:

Was willst du hin und her schicken.
Ein Protokoll könnte z.B. so aussehen:

From_ID;TO_ID;Befehl;Variablenwert;CRC

einen Bestätigungsalgorhythmus designen, damit der Master weis, ob die Antwort beim Empfänger angekommen ist.
Z.B. ein Echo: nur mit gedrehtem from/to und angepasstem CRC


Grundlagen sind:
Serielle Kommunikation nichtblockierend lesen.
Statemachine.
Verwendung von Modbus andenken.

Viel Arbeit.
Kein Anfängerprojekt.
wenn dir Begriffe unklar sind --> Google ist dein Freund --> anschließend fragen (Eigeninitiative zeigen!)

DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

agmue

Ein Quell der Information: Nick Gammon RS485 communications

Besser geeignet scheint mir der CanBus zu sein, der hat Adressierung, Validierung und sowas schon "eingebaut".
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

peterrre

Besser geeignet scheint mir der CanBus zu sein, der hat Adressierung, Validierung und sowas schon "eingebaut".

Leider ist der Bus eine Vorgabe seitens des Projekts. Da können /dürfen wir keinen anderen nehmen.

Rintin

Hmm... RS485 und farbige LEDs ansteuern... vielleicht kannst du DMX512 verwenden.


agmue

Leider ist der Bus eine Vorgabe seitens des Projekts. Da können /dürfen wir keinen anderen nehmen.
Dann mußt Du die Adressierung und Validierung eben selbst erledigen, alles machbar.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

combie

Quote
hat jemand damit Erfahrung oder sogar einen Link zu einem Beispiel, auch wie das Protokoll aussehen könnte?
In solchen Fällen, meine erste Wahl: CmdMessenger
Nobody is perfect!
(und selbst der nicht zu 100%)

peterrre

Ein Quell der Information: Nick Gammon RS485 communications

Diese Library ist in C++, wir sollen aber mit C arbeiten (ja ich weiß, aber die Vorgaben sind leider soo...)

Ich hab mal recherchiert und folgendes gefunden:
https://github.com/kohyama/AVR-RS485

Hat jemand mit dieser Library schon gearbeitet?

combie

Quote
Diese Library ist in C++, wir sollen aber mit C arbeiten (ja ich weiß, aber die Vorgaben sind leider soo...)
Ihr arbeitet also NICHT mit der Arduino IDE...

Natürlich bekommst du in einem Arduino Forum nur(?) C++ antworten.
Ist ein bisschen wie in einem Obstgarten, da gibts auch eher selten  Räder und Türen.
Nobody is perfect!
(und selbst der nicht zu 100%)

peterrre

Ihr arbeitet also NICHT mit der Arduino IDE...
Zuerst war es VSCode mit PlatformIO, jedoch konnte man da nicht besonders gut debuggen. Jetzt arbeiten wir mit Atmel Studio 7. Da könnte man zwar auch cpp files einbinden und damit arbeiten, aber in diesem Projekt wird seitens der Projektleitung ein reines C Projekt empfohlen. Sorry für diese späte Information

agmue

... aber in diesem Projekt wird seitens der Projektleitung ein reines C Projekt empfohlen.
So lange die Projektleitung den Mehraufwand für "Knüppel zwischen die Beine" bezahlt, kann es Dir ja egal sein.

Arduino ist für mich nur Hobby, weshalb mir die scharfe Trennung zwischen C und C++ egal sein kann. Da muß ich notgedrungen aussteigen.

Viel Erfolg!
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Tommy56

Wenn Ihr kein C++ nutzen dürft, dann könnt Ihr doch einfach die C++ Libs in pure C-Funktionen umschreiben. Ist eine Sch... Arbeit, aber gegen genug Schmerzensgeld von der Projektleidung...
Oder Ihr kümmert Euch um eine neue Projektleidung.
Mein Favorit wäre 2.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up