Ciao a tutti, sono settimane che provo a risolvere il mio problema ma non ci riesco, perciò chiedo gentilmente il vostro aiuto.
Sto realizzando un datalogger per un GPS e una IMU (un Adafruit e una MPU6050).
Vorrei salvare tutti i dati su una microSD.
GPS collegato con SW serial su pin 4 e 5
MPU6050 comunica con protocollo I2C
Scheda SD collegata con adattatore ai pin 11,12,13 cs su 9 correttamente definito in sketch,,,,
Lo sketch è strutturato in modo da scrivere 100 volte al secondo i dati IMU e una volta al secondo i dati NMEA del GPS, basato su Arduino Uno
Tutto questo funziona perfettamente se mando in output su seriale, ma se provo a scrivere su SD accade che, in maniera random, alcune sentenze NMEA non vengano processate e quindi non scritte.
Questo comporta la presenza di "buchi" di posizioni GPS nel file di log che vorrei evitare.
Le ho provate tutte, ma non c'è verso. Se mando l'output su seriale funziona perfettamente, se provo a scrivere le stesse cose su SD mi perdo alcune righe del messaggio GPS (a volte anche 4, 5 messaggi).
Quindi mi chiedo?
E' un problema di lentezza della SD?
C'è un modo per velocizzare la scrittura?
??? ![]()
Se provo a mandare tutto su monitor seriale e parallelamente usare Processing per salvare i dati su un file funziona perfettamente.
Grazie per qualsiasi aiuto riusciate a darmi.
Ernesto
PS
Anche se abbasso la frequenza di scrittura della IMU (ad esempio impostando il millis-timer a 100 millisecondi (circa 10 Hz) non risolvo nulla, qualche messaggio GPS non viene comunque interpretato....
log_GPS_IMU_sd.ino (6.12 KB)