Vous êtes sur la page 1sur 9

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

1 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

View Edit Attributes History Attach Print Search


ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien voir |

ACCUEIL
ARDUINO
> S'installer
> Dbuter
> Approfondir
> Tous les programmes
> ATELIERS ARDUINO
Rfrence
Gnrateur de Code
Vidos

SD Card : Enregistrement simple d'une mesure analogique l'aide d'une carte SD


et affichage graphique du fichier obtenu dans un tableur.
Par X. HINAULT - Page cre le : 18/02/2012.

Mini-PC embarqus
> pcDuino ****
> RaspberryPi **
> Cubieboard 2 **
> Librairie Pyduino
> ATELIERS PYDUINO
Webapps
> ATELIERS WEBAPPS
Python
> Shell
> PyQt+Arduino
> PyQt apps
> PyQt Lab'
> ATELIERS Python + Qt
IMPRESSION 3D
> Imprimantes Reprap
> ATELIERS I3D
PROCESSING
MATERIEL
OUTILS
TESTS
Plus...
VIDEOS
COMPRENDRE
REFERENCES
CODER
TECHNIQUE
GNU/LINUX
LIENS
Rien voir
Atelier Arduino et Robotique
de Ploemeur
Ma Boutique virtuelle
Toutes les pages
..

Sur cette page... (Masquer)


1.Prsentation
2.Matriel Ncessaire
2.1L'espace de dveloppement Arduino
2.2Le matriel suivant pour raliser le montage associ
3.Instructions de montage
4.Le circuit du montage
5.Explication du programme
6.Mise en oeuvre du programme
6.1Prparation du montage et programmation de la carte Arduino :
6.2Prparation du Terminal ct PC dans le logiciel Arduino
6.3Fonctionnement
6.4Procdure pour rcuprer les donnes d'enregistrement dans un tableur.
7.Le programme complet en langage Arduino

1. Prsentation
Ce programme permet de raliser 1000 mesures analogiques intervalle rgulier et d'enregistrer le rsultat dans une SD-Card : les
bases des applications de datalogging (enregistrement de donnes) sont ainsi poses !
Les donnes sont enregistres dans un fichier texte au format dit "CSV", les valeurs tant spares par un ;

Une fois de plus, toute la puissance du langage Arduino apparat ici : pour crire des donnes sur la
SD-Card, on utilise tout simplement l'instruction file.print() ou file.println(), tout comme on le ferait
pour afficher des messages dans le Terminal Srie !

Vous aimez ce site ?


Soutenez-le !
Ensuite, les donnes obtenues sont directement utilisables dans un tableur pou ralisation d'un graphique et donc toute utilisation
ultrieure dans un document, etc...

Par c ompte Paypal ou carte bancaire

Vous pouvez donner ds 1 !

Ensuite, on peut rutiliser ce graphique et les donnes sous toutes les formes de son choix. En rsum : on enregistre les donnes
avec la carte Arduino sur une SD-Card, on les rcupre dans un tableur, on fait tout ce qu'on veut avec ! Simple, souple : qui dit
mieux ?
Ce programme utilise les fonctionnalits suivantes :
Utilise la connexion srie vers le PC
Utilise le module Ethernet Arduino (uniquement pour le connecteur SD Card)
Ressources utiles associes ce programme :
La librairie Serial - pour les communications sries entre la carte Arduino et l'ordinateur ou d'autres composants
La librairie SD - pour utiliser une SD Card

2. Matriel Ncessaire
2.1 L'espace de dveloppement Arduino
... pour diter, compiler le programme et programmer la carte Arduino.

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

2 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

2.2 Le matriel suivant pour raliser le montage associ


un module Arduino Ethernet ou tout autre module disposant d'un emplacement pour carte mmoire SD.

une carte mmoire micro-SD

une rsistance variable,

3. Instructions de montage
La connexion srie vers le PC utilise les broches 0 et 1 (via le cble USB)
Le module Ethernet est enficher broche broche sur la carte Arduino
Connecter broche SCLK du module Ethernet sur la broche 13
Connecter broche MISO du module Ethernet sur la broche 12
Connecter broche MOSI du module Ethernet sur la broche 11
Connecter broche Select Ethernet du module Ethernet sur la broche 10
Connecter broche Select SD Card du module Ethernet sur la broche 4
Le module Ethernet est compatible avec la carte Mega via le connecteur ICSP
On connectera la rsistance variable sur la broche analogique 0.

4. Le circuit du montage

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

3 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

Le schma du montage raliser (cliquer pour agrandir)

5. Explication du programme
Ce programme initialise la SD Card et ouvre le rpertoire racine.
Ensuite, un fichier appel data.txt est cr et ouvert en criture
Une boucle ralise 1000 mesures analogiques
Les donnes sont crites dans la SD-CARD au fur et mesure.
Le droulement des oprations est affich dans un Terminal Srie

6. Mise en oeuvre du programme


6.1 Prparation du montage et programmation de la carte Arduino :
Commencer par raliser le montage indiqu sur plaque d'exprimentation
Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procdure habituelle

6.2 Prparation du Terminal ct PC dans le logiciel Arduino


Ct PC, il faut ouvrir la fentre terminal de l'IDE Arduino : pour ce faire, un simple clic sur le bouton Srial Monitor .

La fentre Terminal s'ouvre alors :

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

4 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

Il faut alors rgler le dbit de communication sur la mme valeur que celle utilise par le programme avec lequel nous allons
programmer la carte Arduino :

6.3 Fonctionnement
Ouvrir le Terminal Srie : on obtient une srie de message tmoins du droulement des oprations.

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

5 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

Lors de la phase d'enregistrement, faire varier la valeur de la rsistance variable !

6.4 Procdure pour rcuprer les donnes d'enregistrement dans un tableur.


Une fois l'enregistrement termin, enlever la SD-Card de son emplacement et la connecter au PC. Ouvrir la carte SD et ouvrir le
fichier data.txt qui doit tre prsent dessus. On obtient un affichage du type :

A partir de l, copier l'ensemble du fichier texte dans le presse-papier. Puis ouvrir le tableur de la suite open source Libre Office.
Faire "coller" : le fentre suivante s'ouvre :

Slectionner ; en tant que sparateur puis valider. Ensuite, on obtient les donnes dans le tableur sous la forme :

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

6 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

A partir de l, on peut faire ce que l'on veut avec les donnes obtenues, et notamment crer un graphique. Voici par exemple le
graphique obtenu avec l'enregistrement de 1000 mesures analogiques en faisant varier la rsistance variable :

Ensuite, on peut rutiliser ce graphique et les donnes sous toutes les formes de son choix. En rsum : on enregistre les donnes
avec la carte Arduino sur une SD-Card, on les rcupre dans un tableur, on fait tout ce qu'on veut avec ! Simple, souple : qui dit
mieux ?

7. Le programme complet en langage Arduino


A copier/coller directement dans l'diteur Arduino

// --- Programme Arduino --// Trame de code gnre par le gnrateur de code Arduino
// du site www.mon-club-elec.fr
// Auteur du Programme : X. HINAULT - Tous droits rservs
// Programme crit le : 18/02/1012

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

7 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

// ------- Licence du code de ce programme ----//

This program is free software: you can redistribute it and/or modify

//
//

it under the terms of the GNU General Public License as published by


the Free Software Foundation, either version 3 of the License,

//

or any later version.

//
//

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of

//

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

//

GNU General Public License for more details.

//
//

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

// ////////////////////

See the

PRESENTATION DU PROGRAMME ////////////////////

// -------- Que fait ce programme ? --------/* Ce programme teste le stockage de valeurs issues
de mesures analogiques dans un fichier
sur carte mmoire micro-SD
Donnes au format CSV pour utilisation directe
dans un tableur OpenOffice. */
// --- Fonctionnalits utilises --// Utilise la connexion srie vers le PC
// Utilise la conversion analogique numrique 10 bits
// Utilise une carte mmoire micro-SD avec le module Ethernet Arduino
// Utilise une fonction permettant de connaitre la RAM restant disponible
// -------- Circuit raliser --------// La connexion srie vers le PC utilise les broches 0 et 1 (via le cble USB)
// Le module Ethernet est enficher broche broche sur la carte Arduino
// Connecter broche SCLK du module Ethernet sur la broche 13
// Connecter broche MISO du module Ethernet sur la broche 12
// Connecter broche MOSI du module Ethernet sur la broche 11
// Connecter broche Select Ethernet du module Ethernet sur la broche 10
// Connecter broche Select SD Card du module Ethernet sur la broche 4
// Le module Ethernet est compatible avec la carte Mega via le connecteur ICSP
// Broche 14 : Une rsistance variable de 10 KOhms
// /////////////////////////////// 1. Entte dclarative ///////////////////////
// A ce niveau sont dclares les librairies incluses, les constantes, les variables, les objets
utiles...
// --- Dclaration des constantes --// --- Inclusion des librairies --#include <SD.h> // cre automatiquement un objet racine SD reprsentant la carte mmoire SD
// --- Dclaration des constantes utiles --// --- Dclaration des constantes des broches E/S numriques --const int brocheSDCardSelect=4; // broche utilise pour slectionner la SD card
// --- Dclaration des constantes des broches analogiques --const int analog0= A0; // Constante pour la broche analogique 0
// --- Dclaration des variables globales --int mesure_brute=0;// Variable pour acquisition rsultat brut de conversion analogique numrique
float mesuref=0.0;// Variable pour calcul rsultat dcimal de conversion analogique numrique
int test; // Variable utilise pour tester valeur renvoye par fonctions SD Card

// --- Dclaration des objets utiles pour les fonctionnalits utilises ---

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

8 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

/*
Sd2Card card; // cration d'un objet Sd2Card
SdVolume volume; // cration d'un objet SdVolume
SdFile root; // cration d'un objet SdFile pour le rpertoire racine
SdFile file; // cration d'un objet SdFile pour le fichier utilis
*/
File file; // objet file
File root; // objet root pour le rpertoire racine

// ////////////////////////// 2. FONCTION SETUP = Code d'initialisation //////////////////////////


// La fonction setup() est excute en premier et 1 seule fois, au dmarrage du programme
void setup()

{ // debut de la fonction setup()

// --- ici instructions excuter 1 seule fois au dmarrage du programme --// ------- Initialisation fonctionnalits utilises ------Serial.begin(115200); // initialise connexion srie 115200 bauds
// IMPORTANT : rgler le terminal ct PC avec la mme valeur de transmission
//---- initialise l'utilisation de la carte mmoire SD en mode SPI
pinMode(10, OUTPUT); // met la broche 10 (SS) en sortie (ncessaire avec module ethernet)
digitalWrite(10, HIGH); // mais dsactive le

circuit intgr W5100 du module ethernet!

//----- initialisation de la carte SD ----Serial.println("Initialisation de la SD card...");


pinMode(10, OUTPUT); // laisser la broche SS en sortie - obligatoire avec librairie SD
test=SD.begin(brocheSDCardSelect); // initialisation de la carte SD avec broche 4 en tant que CS renvoie true/false
if (test!=true) { // si initialisation n'est pas russie
Serial.println("Echec initialisation!"); // message port Srie
}
else { // si nitialisation russie
Serial.println("Initialisation reussie !"); // message port Srie
//----- affiche le contenu du rpertoire
root = SD.open("/"); // ouvre la SD Card la racine
Serial.println("Repertoire racine ouvert !");
} // fin si initialisation russie
// ------- Broches en sorties numriques ------// ------- Broches en entres numriques ------// ------- Activation si besoin du rappel au + (pullup) des broches en entres numriques ------// ------- Initialisation des variables utilises ------} // fin de la fonction setup()
// ********************************************************************************
////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme
//////////////////
// la fonction loop() s'excute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){ // debut de la fonction loop()
//---- efface fichier au pralable --test=SD.remove("data.txt"); // efface fichier et mmorise rsultat opration
if (test) Serial.println("Fichier efface"); // affiche message si fichier bien effac
//---- cre fichier en criture --file = SD.open("data.txt", FILE_WRITE); // ouvre le fichier en criture

4/13/2015 12:14

www.Mon-Club-Elec.fr | MAIN / ArduinoExpertMemorisationSDCardEn...

9 of 9

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MA...

// NB : le fichier est cr si il n'existe pas !


//---- test si fichier dispo en criture
if (!file) { // si fichier pas dispo
Serial.println ("Erreur ouverture fichier !");
} // fin if
else { // si le fichier existe et est ouvert
Serial.println ("Fichier pret pour ecriture !");
//----- Ecriture dans le fichier au format CSV ----// premiere ligne du fichier CSV - entete avec liste des champs
file.println("NumeroMesure;ValeurBrute;ValeurFloat;Millis");
Serial.println ("Enregistrement en cours :");
for (int i=0; i<1000; i++) { // n mesures CAN
// acquisition conversion analogique numrique (100s env.) sur broche analogique indique
mesure_brute= analogRead(A0) ;
// calcul tension en Volts
mesuref=mesure_brute*5.0;
mesuref=mesuref/1023.0;
// valeur premier champ
file.print(i), file.print(';');
// valeur deuxieme champ
file.print(mesure_brute), file.print(';');
// valeur troisieme champ
file.print(mesuref), file.print(';');
// valeur quatrieme champ
file.print(millis());
// le dernier champ doit se terminer par un saut de ligne +++
file.println();
delay(10); // entre chaque mesure
if ((i+1)%50) Serial.print("."); else

Serial.println(".");// affiche ligne de 50 points

} // fin boucle for


file.close(); // ferme le fichier
Serial.println("Fin enregistrement !");
Serial.println("Fermeture fichier !");
Serial.println("Retirez SD-Card et la lire sur le PC !");

} // fin else
while(1); // stoppe loop
} // fin de la fonction loop() - le programme recommence au dbut de la fonction loop sans fin
// ********************************************************************************

[Obtenir le Code]

View Edit Attributes History Attach Print Search - Page last modified on February 18, 2012, at 02:11 PM

4/13/2015 12:14