Oui, effectivement j'aurais du commencer par ca. C'est pour une gestion climatique d'une serre à orchidées.
Donc 6 paramètres captés toutes les secondes et enregistrés toutes les minutes.
J'utilise en parallele Xively et le Shield Wifi pour le stockage et l'affichage des paramètres pour pouvoir verifier finement que le climat a été correctement maintenu
Sur mon ecran, j'ai programmé un petit sketche pour "voir rapidement si tout va bien". Ce sont ces infos que je voudrait stocker et visualiser sur la carte uSD
En résumé : 6 paramètres dont on fait la moyenne et qu'on archive toutes les minutes
1 fichier par jour qui sortirait en format .CSV ou .TXT
quelques infos en plus stockées en fin de fichier
Merci d'avance a ceux qui qui pourront me conseiller un bon bout de code pour faire ce job :))
si moi je stok a mort , voici le code que j'utilise si sa peut te servir!
void DattaLog(){
char Buff_Nom_Fichier[50];
char Buff_Afichage[25];
Serial.println(F("dattalog en cours..."));
long fin;
boolean fichierok;
sprintf(Buff_Nom_Fichier, "DATLOG/%02i%02i%04i.txt", rtcD.j, rtcD.m, rtcD.a);//affichage heure et date
sprintf(Buff_Afichage, "%02i:%02i:%02i", rtcH.h, rtcH.m, rtcH.s);//impresion heure
fichierok= SD.exists(Buff_Nom_Fichier);
file =SD.open(Buff_Nom_Fichier, FILE_WRITE);
if(file==true){
if (fichierok==false) {
file.print(F("Fichier du : "));
file.print(rtcD.j);
file.print(F("/"));
file.print(rtcD.m);
file.print(F("/"));
file.println(rtcD.a);
file.println(F("les donnees sont au format suivant : "));
file.println(F("hh:mm:ss;Temperature piece; Temperature Terra; humidite Piece "));
file.println();
file.print(Buff_Afichage);
file.print(F(";"));
file.print(piecetemp);
file.print(F(";"));
file.print(terratemp);
file.print(F(";"));
file.println(HumiditePiece);
};
if (fichierok==true) {
fin=file.size();
file.seek(fin+1L);
file.print(Buff_Afichage);
file.print(F(";"));
file.print(piecetemp);
file.print(F(";"));
file.print(terratemp);
file.print(F(";"));
file.println(HumiditePiece);
};
};
file.close();
Serial.println(F("dattalog terminer!"));
return;
}
il y a des des variable a modifier notament pour les date et certaine valeur de taille de buffer ! mais ça devrai te servir de base pour ton propre code!
petite question, perso je travaille aussi avec un SD et j'ai longtemps chercher sans jamais trouvé.
Arrives-tu à générer plusieurs fichiers d'enregistrements? pcq moi au mieux, j'aiun seul fichier et ça se met à la suite(avec un espace pour différencier les différents moments).
Si c'est pas clair, dans ma SD,j'arrive a faire qu'un seul fichier alors que tu dis en vouloir un différents pour chaque 24heures.
oui biensur que tu peut créé plusieur fichier , tu peut meme créé des répertoire dans des répertoir avec pluiseur fichier a differents endroit de l'arboressence
le code que j'ai donné plus haut génére un fichier avec la date chaque jour et il réecri les donné en fin de fichier , ce n'est pas optimiser au mieux mais c'est parfaitement fonctionel
Perso pour faire du dataloging j'utilise un module "OpenLog" et des Serial.
Côté carte maitre c'est ultra simple (juste des Serial bien pensé) et côté logger ça ce fait tout seul sur carte SD.
Même pas besoin de changer le firmware pour avoir du multi-fichier c'est prévu de base, bien pratique comme petite bête.
Bonus : si tu utilises actuellement la carte SD sur ta carte maitre uniquement pour le logging ça te fait un max de place libre ne RAM / Flash vu que tu peut te passer de toute la librairie SD.