Différences entre versions de « Arduino SD CARD »
Ligne 64 : | Ligne 64 : | ||
WS.HTM 2016-12-29 11:37:10 1206 | WS.HTM 2016-12-29 11:37:10 1206 | ||
</pre> | </pre> | ||
− | == Fonctions spécifiques à la | + | == Fonctions spécifiques à la classe SD== |
+ | ===begin()=== | ||
+ | {| | ||
+ | |valign="top"| | ||
+ | Démarre la communication avec le module SD : | ||
+ | *begin(pin) : | ||
+ | **pin : la broche ''SS'' (slave select) du module (si différent de la broche ''4'') | ||
+ | |valign="top"| | ||
+ | |} | ||
+ | ===exists()=== | ||
+ | Permet de tester si un répertoire ou un fichier existe | ||
+ | ===mkdir()=== | ||
+ | Permet de créer un répertoire | ||
+ | ===open()=== | ||
+ | Permet d'ouvrir un fichier, | ||
+ | ===remove()=== | ||
+ | |||
+ | ===rmdir()=== | ||
+ | |||
+ | == Fonctions spécifiques à la class File== | ||
+ | === Lire un fichier === | ||
==Exemple== | ==Exemple== |
Version du 15 janvier 2017 à 16:19
Partie électronique
Le composant
Pour intérargir avec une carte SD, il est possible d'utiliser un shield comme le shiled Ethernet ou d'utiliser un module pour carte SD monté sur une platine.
Wiznet 5100 version shield pour Mega/Uno | Module pour carte micro SD |
Peut importe que vous ayez le shield ou le module pour carte micro SD, le montage est le même et utilise le protocole SPI (Serial Port Interface).
Le montage
La plupart des modules pour carte SD embarquent des régulateurs de tension qui permettent d'utiliser 3.3v ou 5v sans problèmes.
N'oubliez pas que la communication entre l'Arduino et le module se fait a travers certaines broches qu'il ne faut donc pas utiliser !
Partie logicielle
Les librairies
La librairies utilisée est déjà inclue de base :
- SD.h
Préparation de la carte
La plupart des cartes SD marchent directement avec l'Arduino mais, si ce n'est pas le cas, il faut passer par la casse formatage !
Attention, formater trop souvent une carte SD réduit considérablement sa durée de vie !
La librairie utilisée pour intérragir avec les cartes SD supporte le FAT16 et le FAT32 mais, il est préférable d'utiliser le FAT16.
Sous Windows
Sous Windows, les étapes sont déjà détaillées ici
Sous Linux
Utilisez la commande df pour identifier le nom de périphérique de la carte SD, généralement /dev/sdb et donc /dev/sdb1 pour la première partition. Si la carte est montée automatiquement, il faut la démonter avec la commande umount sans la retirer de l'ordinateur.
Le formatage est effectué grâce à la commande suivante :
# mkfs.vfat -F 16 /dev/sdb1
Si la commande n'existe pas, c'est que le paquetage dosfstools n'est pas installé.
Une fois l'opération terminée, il faut monter la carte SD pour vérifier que le formatage s'est bien déroulé.
Convention de nommage
Lorsque l'on utilise le système de gestion de fichiers FAT16, il faut respecter la convention de nommage 8.3 qui oblige, dans les grandes lignes, à avoir des :
- noms de fichier à ne pas dépasser 8 caractères ;
- extensions à ne pas dépasser 3 caractères.
Pré-requis pour utiliser la carte SD
Vérification
Avant d'aller plus loin, il est intéressant d'utiliser le sketch CardInfo présent dans la liste d'exemple pour s'assurer du bon fonctionnement de la carte SD. Après ouverture de la console, les lignes suivantes devraient s'afficher :
Initializing SD card...Wiring is correct and a card is present. Card type: SDHC Volume type is FAT32 Volume size (bytes): 3650486272 Volume size (Kbytes): 3564928 Volume size (Mbytes): 3481 Files found on the card (name, date and size in bytes): INDEX.HTM 2016-12-21 18:58:44 146 WS.HTM 2016-12-29 11:37:10 1206
Fonctions spécifiques à la classe SD
begin()
Démarre la communication avec le module SD :
|
exists()
Permet de tester si un répertoire ou un fichier existe
mkdir()
Permet de créer un répertoire
open()
Permet d'ouvrir un fichier,
remove()
rmdir()
Fonctions spécifiques à la class File
Lire un fichier
Exemple
Import
#include "SPI.h"
#include "SD.h"
Setup
Pour utiliser la carte SD on doit démarrer la communication avec le module. Si la broche SS n'est pas la numéro 4, il faut l'indiquer en argument de la fonction begin() :
SD.begin()