Enregistrement des données du capteur Arduino dans un fichier texte

34

Comment puis-je sauvegarder les données extraites d'un capteur dans un fichier texte sur l'ordinateur?

des notes
la source

Réponses:

30

vous pouvez écrire les données du capteur sur le port série à l'aide de serial-lib et écrire un petit programme de traitement qui lit les données du port série et les écrit dans un fichier.

dans le code arduino initalize la lib série de la méthode d'installation

Serial.begin(9600);

et écrivez vos valeurs de capteur sur l'interface série à l'aide de

Serial.println(value);

dans votre méthode de boucle

côté traitement, utilisez un PrintWriter pour écrire les données lues du port série dans un fichier

import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
   mySerial = new Serial( this, Serial.list()[0], 9600 );
   output = createWriter( "data.txt" );
}
void draw() {
    if (mySerial.available() > 0 ) {
         String value = mySerial.readString();
         if ( value != null ) {
              output.println( value );
         }
    }
}

void keyPressed() {
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
    exit();  // Stops the program
}
Nikolaus Gradwohl
la source
Où le code "côté traitement" doit-il aller - dans le même code arduino ou dans un script c séparé?
Ulad Kasach
1
Dans un script de traitement séparé - le traitement n'est pas compilé en C mais en java
Nikolaus Gradwohl
@UladKasach "Processing" est un environnement de programmation multiplateforme. En fait, c'est l'environnement de programmation qui porte le nom le plus stupide du monde.
Scott Seidman
9

Une autre option consiste à utiliser un lecteur / graveur de carte SD et à écrire votre fichier sur une carte SD. Lorsque vous avez terminé de collecter des données, remplacez les cartes SD par votre ordinateur de poste de travail. Cette approche vous permettra d'exécuter votre projet déconnecté d'un ordinateur et assurera le stockage non volatile de grandes quantités de données.

Craig Trader
la source
6

Le programme gobetwino enregistrera les valeurs des capteurs d’un Arduino dans un fichier texte ou une feuille de calcul avec un minimum d’effort. Il peut également automatiser des choses sur l'ordinateur, ajouter des horodatages (vous n'avez donc pas besoin de les programmer dans l'arduino), etc.

texte alternatif

endolithe
la source
5

La méthode la plus simple consiste à utiliser la bibliothèque Serial et la sortie correspondante. Vous pouvez ensuite capturer la sortie dans un fichier texte à l'aide d'un programme de terminal. Hyperterminal est disponible sous Windows, Teraterm sous Linux et Z Term sous OS X.

Mélanie

Cyberspice
la source
4

Si vous souhaitez écrire les données du capteur directement dans un fichier de votre ordinateur sans avoir à copier et coller le résultat de la fenêtre du moniteur série, essayez de lire le flux de données directement à partir du port série (ce que le moniteur série fait quand même, I suspect). Sur mac / linux, faites quelque chose comme:

cat /dev/cu.usbmodem1d11 

Dieu sait quelle est l'équivalent sur les machines Windows.

garageàtrois
la source
1
Vous voudrez probablement également associer des horodatages à chaque lecture de capteur, auquel cas vous devrez probablement remplacer cette catcommande par une sorte de script.
garageàtrois
3

Vous pouvez créer un script python pour lire le port série et écrire les résultats dans un fichier texte:

##############
## Script listens to serial port and writes contents into a file
##############
## requires pySerial to be installed 
import serial

serial_port = '/dev/ttyACM0';
baud_rate = 9600; #In arduino, Serial.begin(baud_rate)
write_to_file_path = "output.txt";

output_file = open(write_to_file_path, "w+");
ser = serial.Serial(serial_port, baud_rate)
while True:
    line = ser.readline();
    line = line.decode("utf-8") #ser.readline returns a binary, convert to string
    print(line);
    output_file.write(line);
Ulad Kasach
la source
1

J'ai trouvé plus facile et plus sûr d'utiliser un script Python. J'utilise habituellement celui-ci basé sur la bibliothèque de série . Il est très courant d'utiliser également le module datetime pour ajouter les horodatages:

import serial
from datetime import datetime

sensor = "DH11"
serial_port = '/dev/ttyACM0'
baud_rate = 9600
path = "%s_LOG_%s.txt" % (str(datetime.now()), sensor)
ser = serial.Serial(serial_port, baud_rate)
with open(path, 'w+') as f:
    while True:
        line = ser.readline()
        f.writelines([line.strip(), " t = %s \n " % (datetime.now())])
GM
la source
0

La prochaine étape consiste à utiliser soit le bouclier Ethernet, soit quelque chose comme une carte WIZ810MJ et Internet pour activer votre Arduino. Vous pouvez ensuite écrire des données dans ce fichier et l’envoyer à un serveur Web pour le rassembler. Je le fais dans mon moniteur de température de vivarium .

Cyberspice
la source