Arduino eindeutigen Namen und ID zuweisen?

Guten Morgen,

ich verfolge euer Forum schon sehr lange und es hat mir in vielen Bereichen auch bereits gut helfen können. Ich erfülle mir gerade einen Herzenswunsch und baue mir aus ausrangierten und originalen Airbus A320 Teilen ein Cockpit. Die Ansteuerung funktioniert über Arduino super. Ich nutze dafür DUEs, MEGAs und LEONARDO ETHs.

Nun habe ich bereits eine ganze Menge dieser Geräte verbaut. Leider heißen die je nach Typ im System auch alle gleich, sie sind schlicht nicht auseinander zu halten. Erschwerend kommt dazu, wenn einer mal ausfällt oder abgesteckt wird und womöglich an einen anderen USB-Port am Hub gesteckt wird, bekommt er einen neuen COM-Port zugewiesen und somit muss ich die Steuerung im Simulator komplett neu einstellen. Das nervt massiv. Das Programm denkt dann nämlich, dass es ein neuer Arduino ist.

Gibt es eine Möglichkeit dem Arduino für das System quasi einen einmaligen Namen zu geben? Zum Beispiel "Arduino Due OverheadPanel" oder zumindest eine feste ID, damit die HardwareID wieder die gleiche ist?
Hierfür habe ich leider noch gar keinen Ansatz gefunden der funktioniert.

Habt vielen Dank und ich wünsche euch allen ein schönes Wochenende!

Liebe Grüße,
littlerocky

Jein. Nicht dass ich wüsste.

Was ich machen würde:
a) jeden Sketch mit einer halbewegs sprechenden Serial.print Ausgabe beginnen lassen, damit du weist was du gerade am Serial-Port angesteckt hast
b) Jedem Board im Eeprom eine ID geben und gegebenenfalls auch diese ID am Serial ausgeben
c) Sketche so "standardisiert" wie nur irgendwie möglich zu machen, dass es idealerweise egal ist welchen Controller du etwas flasht und der Controller auf Grund seiner Informationen im EEPROM weis, was er zu tun hat, welche Anzeige, welche Buttons er bedient.
d) ... wens nicht über EEPROM Informationen geht, dann zumindest mit precompiler #defines optionen ein oder ausschalten

Außerdem:
thisThreadIsWorthlessWithoutPics.gif

edit: wtf, ich surfe gerade auf Ebay die wägen ja alte A320 Panels gegen Gold auf oder? Das sind 4 Taster/Schalter mit Beleuchtung Airbus A320 / A319 / A321 Flight Control Panel - 24VU | eBay

thisThreadIsWorthlessWithoutPics.gif

(deleted)

Gibt es eine Möglichkeit dem Arduino für das System quasi einen einmaligen Namen zu geben? Zum Beispiel "Arduino Due OverheadPanel" oder zumindest eine feste ID, damit die HardwareID wieder die gleiche ist?
Hierfür habe ich leider noch gar keinen Ansatz gefunden der funktioniert.

In gewisser Weise ist das gar nicht nötig....
Denn die meisten Arduino haben sowas schon, muss man nur nutzen.

Alle(?) Arduinos mit nativem USB haben eine Seriennummer.
z.B. der Leonardo, der UNO und Mega mit dem 16U2

Der ProMini und der Nano leider nicht.

Der Due?
KA, noch nie nach gesucht.
Auf dem Programmingport, ganz sicher, da sitzt ein 16U2
Auf dem Nativen Port, wahrscheinlich auch.
Haben nicht alle Atmel ARM eine Chip ID?

Bei allen diesen Arduinos sieht man die Unique ID im Gerätemanager bei den USB Geräteeigenschaften.
Also kann man das auch per Software beauskunften.
(frage mich aber bitte nicht wie)

Alternativ:
Das auf den meisten Arduinos vorhandene EEPROM nutzen.
Da kannst du unter bringen, was du willst.

Eigentlich erwarte ich von orginalen Arduinos UNO und MEGA, daß jeder am Windows-PC immer wieder seinen COM-PORT bekommt. vom 2 weiß ich es nicht.
Grüße Uwe

uwefed:
Eigentlich erwarte ich von orginalen Arduinos UNO und MEGA, daß jeder am Windows-PC immer wieder seinen COM-PORT bekommt.

Aber nur, wenn er auch wieder in den gleichen USB-Anschluß gesteckt wird. An einem anderen Anschluß könnte es ja auch ein 2. UNO/MEGA sein.

MicroBahner:
Aber nur, wenn er auch wieder in den gleichen USB-Anschluß gesteckt wird. An einem anderen Anschluß könnte es ja auch ein 2. UNO/MEGA sein.

USB Enumeration Rules:
PID VID
SerialNummer

Und dann erst HUB Port

Also:
Solange der Arduino eine Serial Nummer mitliefert, ist es egal, wo man ihn einsteckt.

Bei Arduino und kompatiblen mit FTDI232, CH340 usw. da werden die COM Bezeichner gewürfelt, da ist es nicht eindeutig.

combie:
Solange der Arduino eine Serial Nummer mitliefert, ist es egal, wo man ihn einsteckt.

Machen das alle Originale? Oder nur UNO und MEGA?

Von den, mit USB direkt am Atmel, weiß ich es.
Also von den mit ATMega16u2 und ATMega32U4
Originale UNO, MEGA, Leonardo, Mikro und deren originalgetreuen Klone/Nachbauten.

Für alle SAM/ARM wird das auch zutreffen, aber keine Garantie darauf.

Ich hab's mal probiert. Bei mir funktioniert das nur bei den Boards, die als USB-seriell Wandler einen zweiten, entsprechend prorammierten Microcontroller auf dem Board haben - z.B. einen 16u2 oder auch einen arm wie auf dem Nano Every. Bei allen Boards, bei denen die USB-Schnittstelle nativ auf dem Controller sitzt, auf dem auch der Sketch läuft, funktioniert das nicht ( Leonardo, Micro, pro Micro oder auch der native Port auf dem Due. Ebensowenig z.B. auf den STM-Boards.

Oh, Mist!
Ja, du hast ja so recht.
Es ist wirklich so, das nur die mit 16U2 ihre UNIQUE ID an den Treiber weiter geben.
Nicht die mit 32U4
(die ARM jetzt nicht getestet)

Dann bleibt für den TO wohl nur das EEPROM für seine Erkennung

Hallo und vielen Dank für eure Beiträge. Ich werde mich mit EEPROM einmal auseinander setzen. Auf allen Arduinos laufen quasi die gleichen Scripte. Diese stellen Joystick Buttons zur Verfügung die ich dann via Software an die Airbus Panels weitergeben kann.

Es sind halt etliche Panels die aufgrund der zahlreichen Pinbelegung mehrere Dues und Leonardos erfordern. Evtl ist ein anderer Weg ein besserer. Ich prüfe das. Da ich nämlich ständig die Einstellungen neu machen darf, da Windows die Geräte durcheinander würfelt und dann zb ein Button der vorher festgelegt wurde in Windows und normal die Flugsteuerung anspricht nun die Parkbremse löst. Ich hatte die Hoffnung das ich den Geräten eindeutige Namen zuweisen könnte, womit das Programm dann nicht durcheinander kommt.

Vielen lieben Dank für eure Tipps und Ratschläge

Schönes Wochenende euch!

Vielleicht solltest Du die Daten auf einem zentralen Arduino sammeln. und nur den mit dem PC verbinden.