Schreiben von Daten über die serielle Schnittstelle // Arduino & MPU6050 Gyro + Accelerometer

Ich bin neu in der seriellen Kommunikation und kratze nur an der Oberfläche, also bitte enthüllen Sie mich.

Was ich erreichen muss, ist die Übertragung der Gyroskopdaten, die ich auf meinem Arduino sammle, zur Verarbeitung auf meinem Macbook. Ich habe bereits den Code bereit, der meine Kreisel-/Beschleunigungsdaten liest, einen komplementären Filter anwendet und dies als Zeichenfolge an den seriellen Monitor ausgibt.

Ich möchte lernen, wie man diese Daten direkt vom Arduino an Processing sendet.

  • Was wäre der effektivste Weg, um Daten, die positiv und negativ sein können, seriell zu senden?
  • Ich habe herumgesucht und bin darauf gestoßen, Zeichenfolgen über serielle zu verwenden und sie in Processing zu lesen/aufzuteilen. Ich bin kein Fan dieser Methode. HighByte& LowByte und Float/Char-Byte-Array scheint eine Alternative zu sein, wird aber für mein aktuelles Wissen und Verständnis zu kompliziert.

Es wäre großartig, wenn mich jemand in die richtige Richtung drängen oder mir einfach helfen könnte, die serielle Kommunikation zu lernen und Daten von einem Arduino an eine Macbook-/Processing-App zu senden/lesen. Ich weiß theoretisch, was drinnen vor sich geht, aber was den Code angeht, bin ich irgendwie verloren.

Vielen Dank im Voraus,

Antworten (1)

Ich bevorzuge die Verwendung von Klartext für solche Datenübertragungen - Sie können die Daten mit einem Terminalprogramm lesen, um zu überprüfen, ob der Arduino sendet, was Sie denken (oder nicht!), um Probleme zu isolieren.

Ich verwende ein einfaches Protokoll (eigentlich basierend auf NMEA-0183) - bilde die Daten in "Sätze" mit einem Satzanfangszeichen, das in den Daten nicht vorkommt (ich verwende normalerweise "$") und sende dann die Datenelemente, die durch Kommas getrennt sind und mit einem Zeilenumbruch oder CR/LF enden.

Gibt es auch eine Möglichkeit, die Daten in einem Byte-Array oder Paketen zu senden?
Das Problem, das ich beim Senden von rohen Binärdaten sehe, besteht darin, dass alle möglichen Bytewerte gültige Daten sein können. Daher ist es schwierig zu erkennen, wie der Start der Daten markiert werden muss, um Sender und Empfänger synchron zu halten. Einige Mikrocontroller-UARTs können ein neuntes Bit als Befehlsflag verwenden, aber ich glaube nicht, dass die üblichen PC/USB-UARTs damit umgehen können.