Programme d'enregistrement horodaté de 6 capteurs

Bonjour à tous,

Je me présente en deux mots, je m’appelle Florian et je suis étudiant dans le domaine des énergies. Je viens solliciter votre aide pour un projet que je mène. Je vais réaliser un démonstrateur sur l’évolution de la température dans deux ballons d’eau chaude. Pour ce faire, je compte donc disposer 3 sondes par ballon (haut, milieu et bas). Je désire ensuite effectuer des enregistrements de ces températures avec horodatage. J’ai découvert récemment les cartes arduino qui sont très évolutives et permettent de faire énormement de choses. J’envisage donc d’effectuer mes enregistrement via carte arduino + shield SD, d’un point de vue matériel le projet reste basique. Mais d’un point de vue programmation, étant débutant en la matière j’avoue etre quelque peu dépassé pour le moment. Je souhaite donc obtenir un fichier texte, ou .csv de la forme suivante :

Sonde A Sonde B Sonde C Sonde D Sonde E Sonde F
Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6
Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6
Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6

Tout d’abord, pensez-vous que cela soit possible ?

J’ose imaginer que la réponse à la question ci-dessus sera positive. De ce fait, nous en arrivons au programme à fournir à la carte arduino pour que le système travaille correctement. J’ai pu trouver sur internet un exemple de programme pour un capteur, il faut donc que je l’adapte pour 6 capteurs. Voici mon résultat :

    #include <Wire.h>
    #include <SD.h>
    #include <RTClib.h>

    // Declaration des pin utilisées
    const char pin_chipSelect = 10;                            //10 est la pin utilisée par le shield mémoire pour le signal ChipSelect
    const char pin_capteurH1 = 0;                                //Numéro de la pin où est relié le capteur haut du ballon 1
    const char pin_capteurM1 = 1;                                //Numéro de la pin où est relié le capteur milieu du ballon 1
    const char pin_capteurB1 = 2;                                //Numéro de la pin où est relié le capteur bas du ballon 1
    const char pin_capteurH2 = 3;                                //Numéro de la pin où est relié le capteur haut du ballon 2
    const char pin_capteurM2 = 4;                                //Numéro de la pin où est relié le capteur milieu du ballon 2
    const char pin_capteurB2 = 5;                                //Numéro de la pin où est relié le capteur bas du ballon 2

    // Declaration des variables générales
    const unsigned long F_refresh = 300000;                    //Entrez ici la fréquence de rafraichissement du capteur, en millisecondes
    DateTime moment;                                           //Création d'un objet contenant les données temporelles
    String datastring;                                         //Création d'un objet type string pour les données à écrire
    RTC_Millis RTC;
    File fichier;


    void setup()
    {
     
      Serial.begin(57600);                                     //Initialisation de la liaison série

    
     
      Serial.print("Initialisation de la SD card...");
      pinMode(pin_chipSelect, OUTPUT);                         // Mettre la pin en output
     
       RTC.begin(DateTime(__DATE__, __TIME__));                //Initialisation de l'horloge RTC avec les valeurs DATE et TEMPS de votre ordinateur
       

      if (!SD.begin(pin_chipSelect))                           // Vérification de la présence de la SD card
        {                         
          Serial.println("Carte fausse ou absente");
          return;                                              // Si problème, sortir et bloquer l'exécution
        }
     
      Serial.println("Carte OK.");
     
      datastring = "\nReleve et horodatage des valeurs du capteur, selon horloge RTC\n---------\n ";
     
      fichier = SD.open("log1.txt", FILE_WRITE);               // Ouverture du fichier en mode Ecriture.
     
      if (fichier)                                             // Si le fichier existe déja, on écrira à la suite des données présentes.
        {
          fichier.println(datastring);
          fichier.close();
          Serial.println(datastring);                          // dupliquer la donnée sur port série
        }
       
      else                                                     //Si problème à l'ouvertre, alors signaler l'erreur
        {                                                       
            Serial.println("erreur d'ouverture du fichier durant la configuration");
        }
     
    }

    void loop()
    {
       
      delay(F_refresh);
     
     
      moment = RTC.now();                                      //Init de l'objet temporel
     
      datastring=String(moment.day(),DEC)+'/'+String(moment.month(),DEC)+'/'+String(moment.year(),DEC)
      +' '+String(moment.hour(),DEC)+':'+String(moment.minute(),DEC)+':'+String(moment.second(),DEC);

      int sensor = analogRead(pin_capteurH1);                    // lire la valeur du capteurH1 et la mettre dans la chaine de caractères
      int sensor = analogRead(pin_capteurM1);                    // lire la valeur du capteurM1 et la mettre dans la chaine de caractères
      int sensor = analogRead(pin_capteurB1);                    // lire la valeur du capteurB1 et la mettre dans la chaine de caractères
      int sensor = analogRead(pin_capteurH2);                    // lire la valeur du capteurH2 et la mettre dans la chaine de caractères
      int sensor = analogRead(pin_capteurM2);                    // lire la valeur du capteurM2 et la mettre dans la chaine de caractères
      int sensor = analogRead(pin_capteurB2);                    // lire la valeur du capteurB2 et la mettre dans la chaine de caractères

      datastring += String("\t Valeur capteur = ");            // préalablement remplie avec les données temporelles
      datastring += String(sensor);
       
      fichier = SD.open("log1.txt", FILE_WRITE);

      if (fichier)
        {

          fichier.println(datastring);
          fichier.close();
          Serial.println(datastring);                           // dupliquer la donnée sur port série
        }
      else {
          Serial.println("erreur d'ouverture du fichier");

         
      }
     
      datastring =0;
     
    }

J’imagine qu’il y a des erreurs, le code de base comprenait un seul capteur et des led pour indiquer l’état de l’enregistrement. J’ai donc supprimé les lignes de code concernant les led et dupliquer celle du capteur puisque dans mon cas j’en ai 6.

En espérant ne pas être trop trop loin de la vérité avec ce programme et vous remerciant par avance pour votre aide.

Cordialement,

Florian LE GAL.

Bonjour, Et donc qu'est ce qui ne fonctionne pas dans ton code? :grin:

bonjour, avec un peu de logique tu pourras comprendre que tu écrase à chaque fois ta valeur sensor ;) ca serait plus logique d'avoir sensor1, sensor2, etc...... puis en faisant simple

datastring += String("\t Valeur capteur1 = ");          
datastring += String(sensor1);
datastring += String("\t Valeur capteur2 = ");          
datastring += String(sensor2);
etc.....

après tu peux intégrer une boucle style

for (int numsensor = 1; numsensor !=6; numsensor++){
datastring += String (\t Valeur capteur[numsensor] = ");
datastring += String (sensor[numsensor]);
}
eciture de datastring sur la SD
code vite fait sans vérifier

Bonjour,

Tout d’abord, merci pour vos réponses !

John,

Je ne peux pas te répondre, puisque j’en suis encore à la réflexion sur le programme, le matériel n’a pas encore été commandé.

Infobarquee,

Effectivement, je me posais la question sur l’ecriture des données, n’ayant qu’une ligne pour 6 capteurs …
J’ai également modifié les lignes concernant l’horodatage, elles étaient mal passées tout à l’heure.

Voici mon nouveau code :

    #include <Wire.h>
    #include <SD.h>
    #include <RTClib.h>

    // Declaration des pin utilisées
    const char pin_chipSelect = 10;                            //10 est la pin utilisée par le shield mémoire pour le signal ChipSelect
    const char pin_capteurH1 = 0;                                //Numéro de la pin où est relié le capteur haut du ballon 1
    const char pin_capteurM1 = 1;                                //Numéro de la pin où est relié le capteur milieu du ballon 1
    const char pin_capteurB1 = 2;                                //Numéro de la pin où est relié le capteur bas du ballon 1
    const char pin_capteurH2 = 3;                                //Numéro de la pin où est relié le capteur haut du ballon 2
    const char pin_capteurM2 = 4;                                //Numéro de la pin où est relié le capteur milieu du ballon 2
    const char pin_capteurB2 = 5;                                //Numéro de la pin où est relié le capteur bas du ballon 2

    // Declaration des variables générales
    const unsigned long F_refresh = 300000;                    //Entrez ici la fréquence de rafraichissement du capteur, en millisecondes
    DateTime moment;                                           //Création d'un objet contenant les données temporelles
    String datastring;                                         //Création d'un objet type string pour les données à écrire
    RTC_Millis RTC;
    File fichier;


    void setup()
    {
     
      Serial.begin(57600);                                     //Initialisation de la liaison série

    
     
      Serial.print("Initialisation de la SD card...");
      pinMode(pin_chipSelect, OUTPUT);                         // Mettre la pin en output
     
       RTC.begin(DateTime(__DATE__, __TIME__));                //Initialisation de l'horloge RTC avec les valeurs DATE et TEMPS de votre ordinateur
       

      if (!SD.begin(pin_chipSelect))                           // Vérification de la présence de la SD card
        {                         
          Serial.println("Carte fausse ou absente");
          return;                                              // Si problème, sortir et bloquer l'exécution
        }
     
      Serial.println("Carte OK.");
     
      datastring = "\nReleve et horodatage des valeurs du capteur, selon horloge RTC\n---------\n ";
     
      fichier = SD.open("log1.txt", FILE_WRITE);               // Ouverture du fichier en mode Ecriture.
     
      if (fichier)                                             // Si le fichier existe déja, on écrira à la suite des données présentes.
        {
          fichier.println(datastring);
          fichier.close();
          Serial.println(datastring);                          // dupliquer la donnée sur port série
        }
       
      else                                                     //Si problème à l'ouvertre, alors signaler l'erreur
        {                                                       
            Serial.println("erreur d'ouverture du fichier durant la configuration");
        }
     
    }

    void loop()
            {
              delay(F_refresh);
             
              DateTime moment = RTC.now();         //Init de l'objet temporel
              datastring=String(moment.day(),DEC);
              datastring+='/';
              datastring+=String(moment.month(),DEC);
              datastring+='/';
              datastring+=String(moment.year(),DEC);
              datastring+=' ';
              datastring+=String(moment.hour(),DEC);
              datastring+=':';
              datastring+=String(moment.minute(),DEC);
              datastring+=':';
              datastring+=String(moment.second(),DEC);
             
              int sensor = analogRead(pin_capteur);                    // lire la valeur du capteur et la mettre dans la chaine de caractères
                                                                       
              datastring += ("\t Valeur capteur1 = ");                // préalablement remplie avec les données temporelles
              datastring += String(sensor1);
              datastring += ("\t Valeur capteur2 = ");            
              datastring += String(sensor2);
              datastring += ("\t Valeur capteur3 = ");            
              datastring += String(sensor3);
              datastring += ("\t Valeur capteur4 = ");            
              datastring += String(sensor4);
              datastring += ("\t Valeur capteur5 = ");            
              datastring += String(sensor5);
              datastring += ("\t Valeur capteur6= ");            
              datastring += String(sensor6);
             
              fichier = SD.open("log1.txt", FILE_WRITE);
             
              if (fichier)
                {
                 
                  fichier.println(datastring);
                 
                  fichier.close();
                 
                  Serial.println(datastring);                 // dupliquer la donnée sur port série
                }
              else {
                    Serial.println("erreur d'ouverture du fichier");
                    }
             
              datastring =0;
            }

A la vue de vos réactions, il ne doit pas etre si mal que ca. Je vais voir pour commander le matériel et faire des essais.

Merci encore.

FlorianLG: Bonjour à tous,

Je me présente en deux mots, je m'appelle Florian et je suis étudiant dans le domaine des énergies. Je viens solliciter votre aide pour un projet que je mène. Je vais réaliser un démonstrateur sur l'évolution de la température dans deux ballons d'eau chaude. Pour ce faire, je compte donc disposer 3 sondes par ballon (haut, milieu et bas). Je désire ensuite effectuer des enregistrements de ces températures avec horodatage. J'ai découvert récemment les cartes arduino qui sont très évolutives et permettent de faire énormement de choses. J'envisage donc d'effectuer mes enregistrement via carte arduino + shield SD, d'un point de vue matériel le projet reste basique. Mais d'un point de vue programmation, étant débutant en la matière j'avoue etre quelque peu dépassé pour le moment. Je souhaite donc obtenir un fichier texte, ou .csv de la forme suivante :

Sonde A Sonde B Sonde C Sonde D Sonde E Sonde F Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 Jour/Mois/Année hh:mm:ss Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 ....

Tout d'abord, pensez-vous que cela soit possible ?

bonjour oui c'est possible , mais ton approche n'est pas la meilleure passé 2 ou 3 capteurs , il est preferable de passer par des tableaux , chaque capteur (valeur du capeur) ensuite n'etant géré que par son indice plutot que temp1,temp2,... tempx temp ou I est l'indice (numero) du capteur

Par ailleurs il te faudra peut-être choisir tes capteurs avant de faire ton code car si tu prends des capteurs en I2C le principe restera le même mais le code non.

;)

Artouste,

Merci pour votre réponse,

Je vais me pencher sur la création d'un tableau !

John,

Effectivement il faut que je voie quel type de capteur je vais utiliser, je pensais utiliser des sondes classiques type PT100. Je ne connais pas la technologie en "L2C".

FlorianLG: Artouste,

Merci pour votre réponse,

Je vais me pencher sur la création d'un tableau !

John,

Effectivement il faut que je voie quel type de capteur je vais utiliser, je pensais utiliser des sondes classiques type PT100. Je ne connais pas la technologie en "L2C".

Alors si tu en es aussi (ou encore) à la phase de choix des capteurs de T° je te conseille de regarder du coté des capteurs DS18B20 sous tubage inox , àa ne coute pas (tres cher) c'est fiable et il existe des bonnes libraries qui embarquent déjà l'indexation

Artouste,

Si ces capteurs sont tout indiqués pour mon utilisation alors c'est parfait !

D'ailleurs ca ne m'étonnerais pas qu'il s'agisse du type de capteur que j'avais pu voir sur une installation de mesure avec carte arduino également.

Merci pour l'info.

FlorianLG: Artouste,

Si ces capteurs sont tout indiqués pour mon utilisation alors c'est parfait !

D'ailleurs ca ne m'étonnerais pas qu'il s'agisse du type de capteur que j'avais pu voir sur une installation de mesure avec carte arduino également.

Merci pour l'info.

A suivre plus tard pour moi 8) , mais ça semble etre bien dans ta "fenetre de tir" T° eau expose plus ton projet

Artouste: je te conseille de regarder du coté des capteurs DS18B20 sous tubage inox

En plus tu peux en mettre beaucoup en cascade sur 1 sortie, car ils ont chacun une adresse différente. http://www.dx.com/p/diy-ds18b20-stainless-steel-temperature-sensor-probe-black-151327#.U1EaYvmKX01 http://skyduino.wordpress.com/2012/04/26/arduino-capteur-de-temperature-ds18b20/

ça te permet d'utiliser les autres pins pour d'autres choses

;)

C'est une caractéristique intéressante en effet ! J'ai regardé du coté des tableaux pour mon programme, et je n'ai pas tout saisi donc je vais rester sur la méthode actuelle. D'autant que je n'ai "que" 6 capteurs, et qu'il s'agit d'un test sur une maquette a savoir que les enregistrements s'effectueront sur 16 ou 24 heures tout au plus.

Pour en revenir au message d'Artouste qui voulait que j'expose plus mon projet.

En faite il s'agit de production d'eau chaude via panneaux solaires thermique. Je dispose de deux panneaux différents je vais donc réaliser deux circuits identiques (capteur solaire + ballon de stockage). L'objectif est de définir lequel des deux panneaux produit l'eau la plus chaude. Pour ce faire, je vais instrumenter mes deux ballons de stockage avec des sondes en position haute, milieu et basse. Le système Arduino doit me permettre d'enregistrer les températures toutes les 5 minutes, par exemple. Ainsi à la fin de la journée je pourrais comparer les deux systèmes.

Cette maquette n'a pas vocation à durer dans le temps, j'effectuerais des mesures sur 2 ou 3 jours, à raison de 8h d'enregistrement par jour.

Pour l'instant je suis assez novice en la matière, j'ai découvert le monde de l'Arduino il y a peu. Et je ne dispose pas spécialement du temps nécessaire pour apprendre la programmation d'ici la phase de test. Cependant, plus je me renseigne et plus je me rend compte que les possibilités avec Arduino sont quasi infinies. C'est pourquoi j'espere bien me familiariser avec ce système pour les projets à venir. En attendant, je dois me contenter de bricoler ce que je peut sur les exemples de programme trouvés sur le net. C'est pourquoi je suis venu demander vos avis sur mon programme avant de me jetter en aveugle dans la mise en pratique !

Donc voila, je compte me procurer le matériel nécessaire dans le courant de la semaine prochaine. En espérant que mon programme soit opérationnel d'ici la réception pour ne pas perdre de temps ensuite.

Merci encore à vous pour vos conseils et l'intéret que vous portez à mon projet ;)

Prochaine étape si le programme fonctionne, il y aura de la motorisation !

Cordialement,

Florian

Pour les tableaux c'est tout simplement qu'Artouste voulait dire qu'il est plus simple de gérer des tableaux type temperature[X][Y] où X=référence du capteur Y=données

Que de créer: capteur1 données1 capteur2 données2 capteur3 données3 ....

Car dans le code tu pourras utiliser des boucles avec les tableaux, alors qu'avec les déclarations 1 par 1 tu devras dupliquer ton code.

Mais bon de toute façon tu y viendra quand tu seras vraiment dedans et tu verras que ça viendra naturellement.

Oui j'imagine que si vous le conseillez c'est parce qu'il est plus simple d'utiliser un tableau. Mais pour le moment les tableaux, et les "boucles" me semblent un peu abstraits alors que le programme :

capteur1 donnée1 capteur2 donnée2 ...

me semble plus clair ou du moins je vois directement ce que le programme veut faire.

Je testerais les deux méthodes une fois le matériel sous la main, il est clair qu'à l'usage je comprendrais mieux la différence.

FlorianLG: classiques type PT100. Je ne connais pas la technologie en "L2C".

C'est du "I2C", http://fr.wikipedia.org/wiki/I2C "two wire interface". Les résistances au platine pt100 utilisées pour mesurer la température se branchent sur une pin de l'Arduino individuelle, en nombre forcément limité. A l'inverse, les capteurs i2C ont l'intérêt de tous utiliser les 2 mêmes fils de câblage. Chaque capteur porte une adresse d'identification unique (fixée en usine). Le même programme arduino les interroge tous successivement et récupère leurs mesures, on peut en monter plein, avec peu de pins, et avec le même code pour tous. Les capteurs Ds18B20 c'est parfait.

FlorianLG: ... Donc voila, je compte me procurer le matériel nécessaire dans le courant de la semaine prochaine. En espérant que mon programme soit opérationnel d'ici la réception pour ne pas perdre de temps ensuite.

Merci encore à vous pour vos conseils et l'intéret que vous portez à mon projet ;) ... Florian

Bonjour Il ne faut pas trop rever non plus :grin: Mais si tu à choisi ton/tes capteurs , commence déjà à regarder les exemples d'utilisations

Oui, c'est peut-etre un peu utopique de vouloir que tout fonctionne du premier coup :sweat_smile:

D'autant plus que les choses ont quelques peu évoluées, je vais augmenter le nombre de capteurs pour avoir : - 10 sondes de température. -2 débitmètres.

Ainsi, je pourrais vraiment exploiter toutes les données importantes pour comparer mes deux sytèmes.

Donc il va falloir que je me penche sur les tableaux, vu le nombre actuel de capteurs je pense que c'est préférable !

Cordialement,

Florian

FlorianLG: Oui, c'est peut-etre un peu utopique de vouloir que tout fonctionne du premier coup :sweat_smile:

D'autant plus que les choses ont quelques peu évoluées, je vais augmenter le nombre de capteurs pour avoir : - 10 sondes de température. -2 débitmètres.

Ainsi, je pourrais vraiment exploiter toutes les données importantes pour comparer mes deux sytèmes.

Donc il va falloir que je me penche sur les tableaux, vu le nombre actuel de capteurs je pense que c'est préférable !

Cordialement,

Florian

bonjour Il faut y aller etape par etape - comprendre l'acquisition des capteurs de T° - comprenbdre l'acquisition des debitmetre et ensuite mixer le tout. le plus simple est quand meme de commencer avec les capteurs en main, ce qui ne veut pas dire ne pas déjà faire un organigramme structurel.

Bonjour à tous,

Je vous donne quelques nouvelles sur mon avancée.
Il y a eu des évolutions sur le nombre de capteurs, j’en suis donc à comparer deux circuits identiques comprenant :

5 sondes de température DS18B20 & 1 débitmètre YFS201. (Soit 10+2 capteurs au total)

Le matériel est commandé :
-Carte Arduino Uno Rev 3
-Un shield mémoire
-Un power screwshield
(Breadboard,cables …)

Malheureusement, je n’ai pas encore trouvé où me procurer les débitmètres.

J’ai repris totalement mon code pour en arriver à :

// Programme de stockage horodaté de plusieurs capteurs : 10 sondes de températures DS18B20 et 2 débitmètres YFS201.


#include <Wire.h>
#include <SD.h>
#include <RTClib.h>

//Déclaration des pins utilisées

const char pin_chipselect = 10;						//10 est la pin utilisée par le shield mémoire pour le signal chipselect
const char pin_temperature = 0;						// 0 est la pin utilisée parle bus One Wire pour les données de température
const char pin_debit1 = 1;						// 1 est la pin utilisée par le débitmètre du ballon 1
const char pin_debit2 = 2;						// 2 est la pin utilisée par le débitmètre du ballon 2
OneWire ds(pin_temperature);						// Création de l'objet OneWire ds

//Déclaration des variables générales

const unsigned long F_refresh = 300000;					//Fréquence du rafraichissement du cycle : 5 minutes
RTC_DS1307 RTC;
File fichier;
String datastring;

void setup()
{
	Serial.print("Initialisation de la carte SD");

	pinMode(pin_chipselect, OUTPUT);				//Mettre la pin en output
	Wire.begin();
	RTC.begin();
	if (! RTC.isrunning())
	{
		RTC.adjust(DateTime(__DATE__, __TIME__));		//Si la RTC n'est pas configurée, lui donner la date-heure du PC à la compilation
	}
	if (! SD.begin(pin_chipselect));				//Vérification de la présence de la carte SD
	{
		Serial.printIn("Absence de carte SD");			//Signalement absence de carte SD
		return;
	}
	else
	{
		Serial.printIn ("Présence de carte SD");		//Signalement présence de carte SD
	}

	datastring = "\nReleve et horodatage des valeurs des capteurs, selon horloge RTC \n---\n ";

	fichier = SD.open ("log1.txt", FILE_WRITE);			//Ouverture du fichier en mode écriture.

	if (fichier)
	{
		fichier.printIn(datastring);
		
		fichier.close();

		Serial.printIn(datastring);				//Dupliquer la donnée sur port série
	}
	else
	{
		Serial.printIN(datastring);				//Dupliquer la donnée sur le port série
	}
}

void loop()
{
	delay(F_refresh);						//Mise en place de la temporisation, durée définie dans les variables

	DateTime moment = RTC.now();					//Initialisation de l'objet temporel sous la forme "day/month/year hour:minute:sec"
	datastring+=String(moment.day(), DEC);
	datastring+='/';
	datastring+=String(moment.month(),DEC);
	datastring+='/';
	datastring+=String(moment.year(),DEC);
	datastring+=' ';
	datastring+=String(moment.hour(),DEC);
	datastring+=':';
	datastring+=String(moment.minute(),DEC);
	datastring+=':';
	datastring+=String(moment.second(),DEC);

	int debit1 = digitalRead(pin_debit1);				//Lit la valeur du capteur débit 1

	datastring+= ("\t Valeur du débit 1 = ");
	datastring+= String (debit1);					//Ecrit la valeur du débit 1

	int debit2 = digitalRead(pin_debit2);				//Lit la valeur du capteur débit 2

	datastring+= ("`t Valeur du débit 2 = ");
	datastring+= String (debit2);					//Ecrit la valeur du débit 2

======================================================================================================
Récupération et écriture des données des capteurs du bus OneWire
======================================================================================================
	fichier = SD.open("log1.txt", FILE_WRITE);

	if (fichier)
	{
		fichier.printIn(datastring);

		fichier.close();
	}
	else
	{
		serial.printin("erreur d'ouverture du fichier");
	}

	datastring = 0;
}

Je pense que la partie concernant l’horodatage, la récupération des données des débitmètres ainsi que l’écriture de ces éléments est bonne, ou du moins elle me semble cohérente en tout cas.

Je bloque maintenant sur la partie température. A savoir, retrouver les sondes DS18B20 sur le bus OneWire, récupérer sa valeur, puis l’écrire.

J’ai lu plusieurs sujets sur ce thème et j’ai l’impression que les différentes versions commencent à m’embrouiller.

http://forum.snootlab.com/viewtopic.php?f=30&t=72
Ce sujet m’a bien aidé pour l’horodatage et la récupération des données des débitmètres.

http://forum.snootlab.com/viewtopic.php?f=38&t=454
Je pense que ce sujet est la clé pour ce que je souhaite faire, même s’il n’est utilisé qu’un seul sonde.

Sur ces bonnes paroles, je m’y remet !

Cordialement,

Florian

FlorianLG: Bonjour à tous,

Je vous donne quelques nouvelles sur mon avancée. Il y a eu des évolutions sur le nombre de capteurs, j'en suis donc à comparer deux circuits identiques comprenant :

5 sondes de température DS18B20 & 1 débitmètre YFS201. (Soit 10+2 capteurs au total)

Le matériel est commandé : -Carte Arduino Uno Rev 3 -Un shield mémoire -Un power screwshield (Breadboard,cables ...)

Malheureusement, je n'ai pas encore trouvé où me procurer les débitmètres.

J'ai repris totalement mon code pour en arriver à : ...

http://forum.snootlab.com/viewtopic.php?f=38&t=454 Je pense que ce sujet est la clé pour ce que je souhaite faire, même s'il n'est utilisé qu'un seul sonde.

Sur ces bonnes paroles, je m'y remet !

Cordialement,

Florian

Bonsoir pour le code déjà attention à la syntaxe :grin: oui pour les capteurs DS18B20 c'est une bonne base de depart , le code s'adapte automatiquement au nombre de sondes presentes sur le bus onewire.

attention à ne pas oublier dans tes "emplettes" une resistance de 4.7K?