OpenLog - Speicherfehler ?

Moin Moin,

ich habe schon seit längeren das Problem, dass mein OpenLog die gesammelten Daten meines Arduinos nicht speichert! Er leuchtet zwar blau und es werden auch txt-dateien erstellt, aber diese sind immer komplett leer...

Kann mir da jemand helfen?

Ich habe in meinen Sketch nirgends eine Art "Speichercode" geschrieben, da mir gesagt wurde, dass es reicht, wenn der OpenLog folgender maßen verbinde:

Arduino TX to OpenLog RXI Arduino 5V to OpenLog VCC Arduino GND to OpenLog GN

Bitte um Hilfe, Danke :)

Sollen wir googeln, was du unter Openlog verstehst und dann raten, was du vermutlich falsch gemacht hast ? Ich tippe mal auf diesen OpenLog Gehen denn die Beispielsketche, wenn du sie genau wie beschrieben aufbaust ?

Aber Du schreibst schon auf die serielle Schnittstelle? Welchen Typ Arduino benutzt Du? Mit welcher Baudrate schreibst Du?

Oh verzeihung, ja das ist der richtige OpenLog.

Die Beispielsketche funktionieren einwandfrei wenn ich den Arduino über USB verbunden habe, aber das ist ja nicht das was ich erzielen will :D

Wenn ich eine SD Karte einführe und den Arduino über Batterie betreibe, scheint der OpenLog wie gesagt etwas zu speichern, aber die txt-Dateien sind leider leer...

Ich lasse das ganze unter 19000 Baud laufen und habe die Textdatei des OpenLogs auch von 9600 auf 19000 Baud geändert

Ich lasse das ganze unter 19000 Baud laufen und habe die Textdatei des OpenLogs auch von 9600 auf 19000 Baud geändert

19000 oder 19200 Baud? Bitte poste den Inhalt dieser Datei (ich hoffe doch, dass es sich dabei um config.txt handelt).

Sorry, habe mich verschrieben. Meine natürlic 19200 :)

Config:

19200,26,3,0,1,1,0
baud,escape,esc#,mode,verb,echo,ignoreRX

thilo007007: Oh verzeihung, ja das ist der richtige OpenLog.

Die Beispielsketche funktionieren einwandfrei wenn ich den Arduino über USB verbunden habe, aber das ist ja nicht das was ich erzielen will :D

Wenn ich eine SD Karte einführe und den Arduino über Batterie betreibe, scheint der OpenLog wie gesagt etwas zu speichern, aber die txt-Dateien sind leider leer...

Ich lasse das ganze unter 19000 Baud laufen und habe die Textdatei des OpenLogs auch von 9600 auf 19000 Baud geändert

Den Sketch bitte. Das hier ist wie tappen im Dunkeln. Wenns in den Beispielen geht, dann hast du vermutlich einen Fehler in der Programmierung. Wer sagt, dass dein Sketch nicht genau das macht, was er macht. Nichts schreiben.

Hier ist mein Sketch:

der print hier ist auf einen Sender bezogen. Mir wurde gesagt, dass ich den SD-Logger nur anschließen muss und es atomatisch speichert… Ich glaube langsam, dass das nicht so recht gestimmt hat :stuck_out_tongue:

#include <Wire.h>
#include <Adafruit_BMP085.h>  // Adafruit Bibliothek einbinden

Adafruit_BMP085 bmp;

int tempPin = A4; // TMP-36-Temperature
int tempReading = 0;
float temperatureC = 0;
float temperatureF = 0;
const int interval = 10*100; // interval between sensor read, in ms
long lastReadTime = 0;        // the last time you read the sensor, in ms

void setup(){
pinMode(16, OUTPUT);
 // Seriellen Monitor 
 Serial1.begin(19200);


 if (!bmp.begin()) {
  Serial1.println("NO BMP found!");
  while (true) {}
 }
}

void loop(){

 Serial1.println("Sender");
 Serial1.print("Temperatur:");
 // readTemperature() Temperatur °C read
 Serial1.print(bmp.readTemperature());
 Serial1.print(" ");  
 Serial1.write(176);  
 Serial1.println("C");

 Serial1.print("Pressure: ");
 // readPressure() Pressure in Pa read
 Serial1.print(bmp.readPressure());
 Serial1.println(" Pa");

 Serial1.print("Height: ");
 // readAltitude() height above sea
 Serial1.print(bmp.readAltitude());
 Serial1.println(" meter");
 
   // get the current time in ms:
  long currentTime = millis();
  if (currentTime > lastReadTime + interval) 

    // READ TEMPERATURE
    tempReading = analogRead(tempPin);

    // convert readings to voltage, using 3.3V battery
    float tempVoltage = tempReading * 3.3;
    tempVoltage /= 1024.0;
    
    Serial1.println ("(*C) \t(*F)");
    // now print out the temperature degrees C
    temperatureC = (tempVoltage - 0.5) * 100 ;
    Serial1.println("\t"); 
    Serial1.print(temperatureC);

    // now convert to Fahrenheight
    temperatureF = (temperatureC * 1.8) + 32.0;
    Serial1.print("\t"); 
    Serial1.println(temperatureF); 

    // update the time of the most current reading:
    lastReadTime = millis();

 Serial1.println(""); // Leerzeile anzeigen
 delay(1000);      
  }

Eine neue Datei wird üblicherweise erzeugt, wenn der Openlog startet. Da du nirgends explizit in den Kommando-Modus gehst, sollte er eigentlich alles was auf RXi reinlommt, abspeichern. Ist das mit dem Serial1.Ausgabe-Pin verbunden ? ( Die einfachsten Fehler zuerst , auch wenn's peinlich wäre ;)

Die Beispielsketche funktionieren einwandfrei wenn ich den Arduino über USB verbunden habe

https://github.com/sparkfun/OpenLog/blob/master/firmware/examples/OpenLog_Test_Sketch/OpenLog_Test_Sketch.ino geht ?

Das mit USB versteh ich jetzt nicht. Dein Arduino ist ein MEGA2560 ? ( weil du Serial1 verwendest )

Ja genau ich verwende den Mega2560. Das print1. bezieht sich auf einen Sender. Der Openlog ist mit einem anderen RXI-Pin verbunden... Heißt das also, dass ich einfach nur print2. schreiben muss und dann schreibt der das darauf?

Weil es meinte mal jemand, dass es reicht wenn die verbunden sind und man gar nicht zusätzliches "programmieren" brauch...

Weil es meinte mal jemand, dass es reicht wenn die verbunden sind und man gar nicht zusätzliches "programmieren" brauch

Ich kenn das openlog jetzt nicht, aber aus der Sparkfun Erklärung lese ich das auch so: Im Grundzustand wird automatich mit 9600 Bd gelesen und auf die Speicherkarte geschrieben. Fertig.

Nochmal, wenn das Beispiel https://github.com/sparkfun/OpenLog/blob/master/firmware/examples/OpenLog_Test_Sketch/OpenLog_Test_Sketch.ino geht, das ist dann doch eine gute Vorlage.

Deinen Satz mit USB versteh ich immer noch nicht.

Ich habe es jetzt 1000 mal probiert und es klappt immer noch nicht :disappointed_relieved:

Also die beschreibung sagt, dass man nur Arduino TX mit OpenLog RXI verbinden soll. Was ist denn mit dem TX Pin des OpenLogs ?

Wie wäre es wenn ich beide verbinde? also tx - rxi und rxi-tx ?

Wie wäre es wenn ich beide verbinde?

Warum nicht, wenn du auch liest, ob dein openlog was sagt. Aber selbst das ist egal: Das einfache Serial ( mit RX, TX, GND ) kümmert sich nicht drum, ob es jemanden interessiert was man sendet. Bei TTL-Level-Serial ( wie hier) kontrolliert der Sender den Pegel der Leitung, ohne externe Pullup - Widerstände.