Pages: [1]   Go Down
Author Topic: Enregistrer les données du port série dans un fichier texte ?  (Read 2737 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, je débute sur arduino et j'ai fait une genre de station température qui lit seulement la température. J'utilise un TMP36. Voici le code Arduino :

Code:
//////////////////////////////////////////////////////
// Objet  : Mesure de temperature avec un LM35 DZ    //
// lm35_phm_temperature.ino                          //
// Auteur : PHM                                      //
// Date création : Le 10 juin 2011                   //
// Date dernière mise à jour : Le 27 juin 2011       //
///////////////////////////////////////////////////////

//Déclaration et initialisation des variables
  float mesure=0;        //Variable pour le stockage mesure retournée par le capteur
  float tension=0;       //Variable pour le stockage de la tension
  float temperature=0;   //Variable pour le stockage de la température
  float tempmin=100;     //Temperature min
  float tempmax=0;       //Temperature max
  int portana0 = 0;      //Numéro du port analogique sur lequel la température est mesurée

//Traitements initialisation
  void setup()
  {
    analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
    Serial.begin(9600);        //initialisation de la liaison série à 9 600 bauds
  }

//Traitements itératifs
  void loop()
  {
    mesure = analogRead(portana0);  //Lecture de la valeur fournie par le capteur de température
    tension = mesure * 1.1 / 1024;  //Conversion en tension (en volt)
   
    temperature = (tension - .5) * 100;    //Conversion en température (en degré Celsius)
    if (temperature < tempmin) {tempmin = temperature;} //Calcul temperature mini
    if (temperature > tempmax) {tempmax = temperature;} //Calcul temperature maxi
   
    //Envoi de la tension et des températures au PC par la liaison série pour affichage dans la console
    Serial.print("Tension : "); Serial.print (tension); Serial.print(" Volts - ");         
    Serial.print("        Temperatures :");
    Serial.print("        Actuelle : "); Serial.print (temperature);
    Serial.print("        Minimum : "); Serial.print (tempmin);
    Serial.print ("        Maximum : "); Serial.println (tempmax);
    //Attente de 5 secondes avant de faire une nouvelle mesure
    delay(5000);                   
  }

On peut ensuite voir les données recues dans le port série. J'aimerais maintenant savoir comment faire pour que ces données s'enrigistrent dans un fichier texte.

Merci   smiley-lol
Logged

France
Online Online
Faraday Member
**
Karma: 38
Posts: 3543
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu veux les enregistrer localement ou sur la machine distante à travers le lien série?

Dans le second cas regardes là : http://arduino.cc/forum/index.php/topic,147668.0.html
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quand tu dis "A travers le lien série" c'est par le cable USB ?
Logged

France
Online Online
Faraday Member
**
Karma: 38
Posts: 3543
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quand tu dis "A travers le lien série" c'est par le cable USB ?
Oui, c'est un lien série viruel.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors oui je veux enregistrer sur la machine distante a travers le lien serie mais je ne comprend pas même en lisant la conversation comment faire alors si tu pouvait m'expliquer.

Merci
Logged

France
Online Online
Faraday Member
**
Karma: 38
Posts: 3543
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La version la plus simple:
Sur ton PC, au lieu d'utiliser la console série qui se trouve dans l'IDE arduino, tu peux très bien utiliser un autre logiciel de terminal comme par exemple hyperterminal ou putty. Ces logiciel permettent de capturer le texte reçu dans un fichier. Ensuite tu peux exploiter le fichier de capture comme tu l'entends.

La solution plus compliquée:
Du développe un logiciel (en C, C++, Python, Java, ou n'importe quel langage que tu maitrises) qui ouvre le port série virtuel correspondant à ta carte arduino et tu récupères les données pour les sauver dans un fichier et/ou les afficher en même temps (texte ou graphique suivant tes compétences)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci ca a marché.  smiley
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Envoi tes données côté arduino avec Serial.println() sous un format type CSV (1 ligne = 1 donnée).
Côté PC je te conseille de faire un script python (syntaxe et utilisation très simple).

Ps: pour la communication série il te faudra pySerial.

Voici un exemple rapide (pas testé) de redirection Serial -> Fichier :
Code:
import serial

ser = serial.Serial(port = '/dev/ttyUSB0', baudrate = 9600)
ser.open()

if not ser.isOpen():
print 'Erreur d\'ouverture du port !'
exit(1)

fo = open('output.txt', 'w')
if not fo:
print 'Erreur d\'ouverture du fichier !'
exit(1)

try:
while 1 :
line = ser.readline()
fo.write(line)
except (KeyboardInterrupt, SystemExit):
ser.close()
fo.close()
except:
print 'Erreur interne !'
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci de l'aide.
Logged

France
Online Online
Faraday Member
**
Karma: 38
Posts: 3543
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gare, si tu es sous Windows il faut remplacer:
Code:
ser = serial.Serial(port = '/dev/ttyUSB0', baudrate = 9600)
par
Code:
ser = serial.Serial(port = COM1:', baudrate = 9600)
en mettant le bon numéro de port série évidemment
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

par
Code:
ser = serial.Serial(port = COM1:', baudrate = 9600)

Plutôt :
Code:
ser = serial.Serial(port = 'COM1', baudrate = 9600)
smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: