Hallo zusammen, ich habe eine Frage zur I²C Schnittstelle, da ich vorhabe mehrere Sensordaten die mithilfe eines Arduinos ausgelesen werden und über meinen Flightcontroller (Pixhawk) an die Groundcontrolstation gesendet werden. Die freie Schnittstelle am Flightcontroller ist die I²C Schnittstelle, daher stelle ich mir die Frage ob es sinnvoll ist meine Sensoren an ein Breakoutboard (https://cdn-learn.adafruit.com/downloads/pdf/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout.pdf) anzuschließen, welches mit dem Arduino verbunden ist. Über den Arduino gehen die verarbeiteten Daten dann an den Flightcontroller und an die Groundcontrollstation. Ist da der richtige Weg? Ich bin euch für hilfreiche Antworten sehr dankbar!
Thomas E. schrieb: > Die freie Schnittstelle am Flightcontroller ist die I²C Schnittstelle Wer ist bei diesem Datentransfer der Master?
Lothar M. schrieb: > Wer ist bei diesem Datentransfer der Master? Der Arduino ist der Master und die Sensoren die Slaves, so hatte ich es mir zumindest überlegt
:
Bearbeitet durch User
Und der "Flight Controller"? Welche Rolle spielt dessen I2C-Schnittstelle? Überhaupt, was exakt für ein Ding ist das? "Pixhawk" ist als Beschreibung etwas arg zu ungenau: https://pixhawk.org/
:
Bearbeitet durch User
Thomas E. schrieb: > Ist da der richtige Weg? Welche Probleme stellen sich dir? Welche erwartest du?
Harald K. schrieb: > Und der "Flight Controller"? Welche Rolle spielt dessen > I2C-Schnittstelle? > > Überhaupt, was exakt für ein Ding ist das? "Pixhawk" ist als > Beschreibung etwas arg zu ungenau: > > https://pixhawk.org/ Der Pixhawk (6c) befindet sich im Flugzeug und sendet die Daten via Telemetrie an die Groundcontrollstation. > Welche Probleme stellen sich dir? > Welche erwartest du? Die Auswertung der verschiedenen Daten
Einen Multiplexer benötigst Du typischerweise, wenn mehrere Sensoren mit gleicher Adresse an den Bus angeschlossen werden sollen und sich diese Adresse: - nicht individuell ändern lässt - die Anzahl einstellbarer IDs nicht ausreicht - die Umstellung zu aufwändig ist (vorprogrammiert o.ä.)
Breakoutboard? Flightcontroller? Willst du ein Breakoutboard in einem Flugmodell einsetzen?
Harald A. schrieb: > Einen Multiplexer benötigst Du typischerweise, wenn mehrere Sensoren mit > gleicher Adresse an den Bus angeschlossen werden sollen und sich diese > Adresse: > - nicht individuell ändern lässt > - die Anzahl einstellbarer IDs nicht ausreicht > - die Umstellung zu aufwändig ist (vorprogrammiert o.ä.) Okay also verstehe ich es richtig, das es für meinen Anwendungsfall nicht unbedingt notwendig ist? > Breakoutboard? Flightcontroller? > Willst du ein Breakoutboard in einem Flugmodell einsetzen? Ja das war soweit der Plan
Thomas E. schrieb: > Der Pixhawk (6c) befindet sich im Flugzeug und sendet die Daten via > Telemetrie an die Groundcontrollstation. Das ist ja schön für ihn. https://docs.holybro.com/autopilot/pixhawk-6c/pixhawk-6c-ports Wenn man sich dieses hübsche Bild ansieht, erkennt man, daß die I2C-Schnittstelle des µCs im Controller (ST32H743) genutzt wird: https://docs.holybro.com/autopilot/pixhawk-6c/system-diagram-and-pinout Und das ist mit sehr, sehr hoher Wahrscheinlichkein ein I2C-Master. Da kannst Du keinen Arduino dranhängen, der da herumhampelt, sondern die Firmware dieses ST32 muss sich selbst drum kümmern, Deine I2C-Sensoren anzusteuern.
> Und das ist mit sehr, sehr hoher Wahrscheinlichkein ein I2C-Master. Da > kannst Du keinen Arduino dranhängen, der da herumhampelt, sondern die > Firmware dieses ST32 muss sich selbst drum kümmern, Deine I2C-Sensoren > anzusteuern. Macht es denn einen Unterschied ob der Pixhawk die Daten vom Sensor oder vom Arduino bekommt?
Thomas E. schrieb: > Macht es denn einen Unterschied ob der Pixhawk die Daten vom Sensor oder > vom Arduino bekommt? O ja. Lies Dir durch, was I2C ist. "Obelix" hat da was einfaches verlinkt.
Frank K. schrieb: > Und wie sind Arduino und Pixhawk miteinander verbunden? > > fchk Arduino und Pixhawk benutzen die selbe Masse(GND). - SDA-Leitung des Arduino mit der SDA-Leitung des Pixhawk. - SCL-Leitung des Arduino mit der SCL-Leitung des Pixhawk
Thomas E. schrieb: > - SDA-Leitung des Arduino mit der SDA-Leitung des Pixhawk. > - SCL-Leitung des Arduino mit der SCL-Leitung des Pixhawk Und wo ist da dein Sensor?
Thomas E. schrieb: > Verbesserungsvorschläge sind gerne willkommen! Du musst herausfinden, was Dein "Flight Controller" überhaupt mit seiner I2C-Schnittstelle anstellt. Was macht dessen Firmware damit? Ohne dieses Wissen ist jede weitere Betrachtung völlig witzlos.
Thomas E. schrieb: > Frank K. schrieb: >> Und wie sind Arduino und Pixhawk miteinander verbunden? >> >> fchk > > Arduino und Pixhawk benutzen die selbe Masse(GND). > - SDA-Leitung des Arduino mit der SDA-Leitung des Pixhawk. > - SCL-Leitung des Arduino mit der SCL-Leitung des Pixhawk Das gibt Bruch. Garantiert. Der Pixhawk kann keinen Multimaster-Betrieb. Außerdem muss die nur das Interface stimmen, sondern beide Seiten müssen auch das gleiche High-Level Protokoll sprechen. Ist wie bei USB: Du kannst von der Hardware her so ziemlich alles anschließen, musst aber spezielle Treiber installieren, damit der PC das USB-Gerät kennt. Und der Pixhawk wird Deinen Arduino nicht kennen. Definitiv nicht. Was geht: - Der Pixhawk hat zwei CAN-Busse. Die sind üblicherweise frei. - Statt eines Arduinos nimmst Du einen Teensy 4.0 oder 4.1. Die haben einen CAN-Controller drin, und Du brauchst einen externen CAN-Transceiver (z.B. MCP2562). - Pixhawk und Teensy können über die CAN-Hardware mit dem UAVCAN Protokoll sprechen und Daten austauschen. https://dev.px4.io/v1.10_noredirect/en/uavcan/ Das ist so umsetzbar und wird auch so gemacht. fchk
Frank K. schrieb: > Was geht: > - Der Pixhawk hat zwei CAN-Busse. Die sind üblicherweise frei. > - Statt eines Arduinos nimmst Du einen Teensy 4.0 oder 4.1. Die haben > einen CAN-Controller drin, und Du brauchst einen externen > CAN-Transceiver (z.B. MCP2562). > - Pixhawk und Teensy können über die CAN-Hardware mit dem UAVCAN > Protokoll sprechen und Daten austauschen. > > https://dev.px4.io/v1.10_noredirect/en/uavcan/ > > Das ist so umsetzbar und wird auch so gemacht. > > fchk Vielen lieben Dank das ist sehr hilfreich! Arduino und Pixhawk können ja über das Mavlink Protokoll kommunizieren, gibt es da nicht eine Möglichkeit?
Thomas E. schrieb: > Vielen lieben Dank das ist sehr hilfreich! > Arduino und Pixhawk können ja über das Mavlink Protokoll kommunizieren, > gibt es da nicht eine Möglichkeit? Ja, aber Mavlink geht nur über UART - über I2C ist es meines Wissens nicht spezifiziert. Und CAN ist im Regelfall schneller. Wenn Du einen UART frei hast und Dein Arduino mit 3.3V arbeitet (Pixhawk ist ein 3.3V System), dann ist das auch ein Weg. fchk PS: Teensy verwendet auch die Arduino-IDE.
:
Bearbeitet durch User
Thomas E. schrieb: > Okay also verstehe ich es richtig, das es für meinen Anwendungsfall > nicht unbedingt notwendig ist? Beantworte doch erst mal die Rückfragen!
Thomas E. schrieb: > Arduino und Pixhawk können ja über das Mavlink Protokoll kommunizieren das Widerspricht sich mit (Wikipedia) : "It is used mostly for communication between a Ground Control Station (GCS) and Unmanned vehicles..." Ich glaube, du weißt noch gar nicht welches Gerät mit welchem kommunizieren soll. - Was haben die Sensoren für eine Schnittstelle? - Wer (Arduino / Pixhawk) kann die Sensordaten verarbeiten und hat die Schnittstelle dafür? - Welche Komponente muss mit wem über welche Schnittstelle kommunizieren? - Welche Komponente sendet die Daten zum Boden? - Welches Gerät empfängt die Daten am Boden? Zeichne mal einen Signallaufplan wo alle Komponenten zu erkennen sind. Schau dir an welche Komponente welche Schnittstelle hat und für allem wofür kann man sie nutzen.
:
Bearbeitet durch User
Thomas E. schrieb: > Lothar M. schrieb: >> Thomas E. schrieb: >>> Die freie Schnittstelle am Flightcontroller ist die I²C Schnittstelle >> Lothar M. schrieb: >> Wer ist bei diesem Datentransfer der Master? > Der Arduino ist der Master und die Sensoren die Slaves, so hatte ich es > mir zumindest überlegt Meine Frage war die: wenn beim Flightcontroller "die freie Schnittstelle" der I2C ist, und du diesen I2C mit dem Arduino verbindest, wer ist bei dieser Verbindung dann der Master? Ich wollte damit auslösen, dass du dieses planlose Herumirren beendest, dir einen "Plan zeichnest", damit du einen Plan hat. Also das, was Obelix X. schrieb: > Zeichne mal einen Signallaufplan wo alle Komponenten zu erkennen sind. Ausnahmsweise darf man diesen Übersichtsplan dann auch mal "Schema" nennen. Thomas E. schrieb: > Arduino und Pixhawk können ja über das Mavlink Protokoll kommunizieren, Es sind Daten, die mit irgendeinem Protokoll auf einer Schnittstelle übertragen werden. Die ganz konkrete Frage lautet also: welche Schnittstelle willst/kannst du zwischen Arduino und Pixhawk zur Übertragung der Daten nach dem Mavlink-Protokoll verwenden? Mach dich schlau, was eine Schnittstelle und was ein Protokoll ist. Derzeit sind für dich diese beiden Begriffe gleich. Das ist falsch. Ich kann z.B. Daten per Mavlink-Protokoll auch über "Schnittstellen" wie UART, SPI, CAN, Ethernet, WLAN, Email oder sogar per Postreiter übertragen. Je nach "Schnittstelle" ist dann die Übertragungsrate schneller oder langsamer. BTW: wozu neben dem Beitrag "Kommunikation zwischen Arduino und Flugcontroller" ein zweiter Thread zum selben Thema?
:
Bearbeitet durch Moderator
Lothar M. schrieb: > BTW: wozu neben dem Beitrag "Kommunikation zwischen Arduino und > Flugcontroller" ein > zweiter Thread zum selben Thema? Weil er denkt, wenn er noch einen Thread auf macht wird sich irgendwann seine absolute Unwissenheit lichten und er wird plötzlich alles verstehen und die Lösung wird ihm auf dem Silbertablett präsentiert. Nur noch ein Thread und es ist soweit.
Lothar M. schrieb: > BTW: wozu neben dem Beitrag "Kommunikation zwischen Arduino und > Flugcontroller" ein > zweiter Thread zum selben Thema? Der andere Thread ist älter als dieser hier.
Obelix X. schrieb: > Der andere Thread ist älter als dieser hier. Da kann man nicht von "älter" sprechen: der letzte Post im "alten" Thread war am 11.10. morgens, der erste Post des "neuen" war 11.10. nachmittags.
Obelix X. schrieb: > Thomas E. schrieb: >> Arduino und Pixhawk können ja über das Mavlink Protokoll kommunizieren > > das Widerspricht sich mit (Wikipedia) : > "It is used mostly for communication between a Ground Control Station > (GCS) and Unmanned vehicles..." Nein, das widerspricht sich nicht. Schon mal einen Pixhawk in den Fingern gehabt? Sein Pixhawk hat drei Anschlüsse, die mit "Telem1", "Telem2" und "Telem3" bezeichnet sind. Das sind 3.3V UARTs (Telem 1+2 mit RTS/CTS) plus GND plus 5V Versorgung. Diese Anschlüsse sind eigentlich für Telemetriesender gedacht, die über 868MHz oder 2.4Ghz mit der Grundstation über Mavlink sprechen. Man kann natürlich auch was anderes anschließen, was Mavlink kann und einen 3.3V UART hat. Und für Mavlink zu seinem Arduino/Teensy muss er eben einen dieser drei Ports nehmen. Ggf geht Mavlink auch über den USB-Port, aber den würde ich hier mal außen vor lassen wollen. fchk
Frank K. schrieb: > Und für Mavlink zu seinem Arduino/Teensy muss er eben einen dieser drei Ports nehmen. Also soll der Pixhawk über UART (Schnittstell) per Mavlink (Protokoll) die Sensortdaten an den Arduino senden? Das bedeutet, Sensoren an Pixhawk anschließen über I2C (die vom Pixhawk selbst)? Was macht der Arduino dann mit den Sensordaten, wenn direkt an den Pixhawk ein Telemetriesender angeschlossen werden kann?
:
Bearbeitet durch User
Obelix X. schrieb: > Also soll der Pixhawk ... die Sensortdaten an den Arduino senden? Nein, genau andersrum. Aber das sehen wir dann leicht im noch anzufertigenden Signalflussschema. Thomas E. schrieb: > da ich vorhabe mehrere Sensordaten die mithilfe eines Arduinos > ausgelesen werden Um den Signalfluss zu verdeutlichen: die Sensordaten werden vom Arduino eingelesen.
:
Bearbeitet durch Moderator
Der Pixhawk hat doch auch I2C warum nicht die Sensoren da anschließen? Eigentlich möchte ich mit meinen Fragen eher den TO zum nachdenken anregen als selber Antworten zu bekommen. ;-D
Obelix X. schrieb: > er Pixhawk hat doch auch I2C warum nicht die Sensoren da anschließen? Weil viele andere Ports bereits belegt sind Die Antwort auf die anderen Fragen folgt in kürze
Thomas E. schrieb: > Weil viele andere Ports bereits belegt sind Viele andere Ports sind aber egal. Es geht um den einen I2C Bus. An einem I2C Bus können mehrere Teilnehmer angeschlossen werden. Die müssen nur unterschiedliche Adressen haben. Aber auch dass sehen wir dann ja in deinem Schema.
:
Bearbeitet durch User
Obelix X. schrieb: > Thomas E. schrieb: >> Weil viele andere Ports bereits belegt sind > > Viele andere Ports sind aber egal. Es geht um den einen I2C Bus. An > einem I2C Bus können mehrere Teilnehmer angeschlossen werden. Die müssen > nur unterschiedliche Adressen haben. ... und von der Firmware des Pixhawk unterstützt werden. Das ist dann im Endeffekt das hüpfende Komma, das die Auswahl begrenzt. fchk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.