Hallo zusammen,
vielleicht erinnert der Eine oder die Andere sich noch an meinen Beitrag von Anfang des Jahres: Konstante Abtastrate für Beschleunigungssensor definieren - Deutsch - Arduino Forum. Hierbei ging es um einen analogen Beschleunigungssensor dessen Daten mit einer konstanten Abtastrate erfasst werden sollten. Mit Hilfe - maßgeblich von serenifly & combie konnte ich das sehr gut zum Laufen bringen.
Der nächste Schritt ist das kabellose "Versenden" der Messdaten über ein ESP8266-Board via UDP nach Labview. Grundsätzlich funktioniert das auch (Code ist beigefügt). Ich kann die Daten in Labview empfangen und meine Analyse machen. Als Hardware nutze ich ein "Pretzelboard", oder "NanoESP" (Alles über NanoESP & Pretzel Board - Internet of Things mit dem NanoESP) Bevor ich jedoch ins Detail gehe, würde ich gerne mit Euch -bzw. mit denen die Lust drauf haben- noch einige Dinge zur Architektur diskutieren, um gleich den richtigen Weg zu gehen bezüglich des Timings, bzw. um es richtig zu verstehen. Letzteres ist mit am Wichtigsten.
Ich stelle dazu einmal ein paar Fragen:
-
Die erste Frage betrifft das Zusammenspiel zwischen dem dem Lesen des ADCs und dem Versenden der Daten. Wenn ich das richtig verstanden habe, kommuniziert der ESP wiederum über die SoftwareSerial-Schnittstelle mit dem Arduino. Hier kam mir die Frage, ob es dabei zu Timing-Problemen kommen kann? Oberste Priorität ist ja immer noch die konstante Abtastrate für meine FFT in Labview. Anderst gefragt: Wenn ich einfach
sendUDP(String(x)+String(y)+String(z)+";");
in die Funktion printData() einfüge, ist das der korrekte Weg? Siehe auch Abbildung anbei. Bedenken hätte ich, da ja hier detektiert wird, ob Werte von der ADC-Wandlung vorhanden sind oder nicht und diese dann auf die Serial-Schnittstelle geschrieben werden. Von dort hole ich Sie dann mit einer bestimmten Baudrate ab und verknüpfe Sie mit dem ESP. Ich denke, dass es hier -zumindest bei längerem Betrieb- zu Problemen bezüglich des Timings kommen kann, oder ist das tatsächlich der korrekte Ansatz? Hintergrund ist auch, dass ich bei der kabelgebundenen Lösung eine Baudrate bei der Hardware-Serial-Schnittstelle von 500000 eingestellt hatte, um in meiner Visualisierung in Labview alle Werte darzustellen.[/li] -
Meine zweite Frage ist, ob es unter Umständen ein Ansatz wäre, ein Array mit den korrekt abgetasteten Werten zu erstellen und dieses dann in bestimmten -nicht mehr zeitkritischen Abständen- an den ESP8266/Labview zu schicken
-
Eine weitere Frage, die ich mir gestellt habe: Es existieren auch Beispiele (die mit den ESP8266-Bibliotheken mitgeleifert werden) die via UDP-Werte direkt versenden, ohne "Umweg" über die SoftwareSerial-Schnittstelle. Das war ursprünglich mein erster Versuch, hier scheiterte ich jedoch. Prinzipiell würde ich das bevorzugen, da keine neue Schnittstelle im Spiel ist und meines Erachtens das Timing damit besser beherrschbar wäre
Ich hoffe, ich konnte Euch mein Anliegen veranschaulichen. Meine grundsätzlich Frage ist "einfach": Wie mache ich eine saubere "Architektur" wenn ich auf die konstante -zeitrelevante- Abtastrate angewiesen bin.
Wenn Ihr noch Infos braucht, meldet Euch einfach. Im Voraus Euch allen vielen Dank und ich freue mich auf die Diksussion mit Euch!
Grüße
Bire
esp_FFT.ino (13.9 KB)