alors j ai fais l acquisition d'une carte arduino + une carte capable de prendre des photos et les stocker sur une sd via les commandes AT.
Avec cette carte j avais un programme tout fait, jai essayé de le comprendre et je pense l avoir compris mais j ai un soucis au moment de l enregistrer sur la sd.
pouvez vous m aider?
alors le programme:
int led = 13;
int onModulePin = 2; // the pin to switch on the module (without press on button)
int x = 0;
char name[20];
void switchModule(){
digitalWrite(onModulePin,HIGH);
delay(2000);
digitalWrite(onModulePin,LOW);
}
void setup(){
Serial.begin(115200); // UART baud rate
delay(2000);
pinMode(led, OUTPUT);
pinMode(onModulePin, OUTPUT);
switchModule(); // allume le module
for (int i=0;i < 5;i++){
delay(5000);
}
Serial.println("AT+CCAMS"); //demarre la cam
while(Serial.read()!='k');
Serial.println("AT+CCAMSETD=640,480"); //reglage de la resolution 640*480
while(Serial.read()!='k');
Serial.println("AT+FSLOCA=1"); //enregistre l image sur la sd (0 pour 3g module)
while(Serial.read()!='k');
}
void loop(){
delay(1500);
while(Serial.available()!=0){
Serial.read();
}
Serial.println("AT+CCAMTP"); //prendre la photo
while(Serial.read()!='k');
Serial.println("AT+CCAMEP"); // sauvegarder la photo ici je met D:/picture/test01.jpg mais rien :(
while(Serial.read()!='/');
while(Serial.read()!='/');
x=0;
do{
while(Serial.available()==0);
name[x]=Serial.read();
x++;
}while(x < 10);
while(Serial.read()!='k');
Serial.println(name);
Serial.println("AT+CCAME"); // arreter la cam
while(Serial.read()!='k');
while(1);
}
je ne sais pas si quelqu'un à la solution mais pour ma par je n'ai pas compris qui sauvegardai sur une carte SD? du moins la c'est pas le ARDUINO ou alors je n'ai pas trouvé les commande SD dans ton programme :s
quel est la carte qui enregistre sur SD?
dit nous en plus sur ton matériel et leurs rôle individuelle s'il te plait
alors ensuite quand je regarde dans serial monitor je dialogue bien avec la carte et ce me met bien le fichier sauvé
sauf que quand je regarde sur ma carte il y a rien ...
Est-ce que le code exemple donné sur le site fonctionne (copié/collé pur).
Je remarque entre ton source et celui donné sur le site en exemple que tu as converti en minuscule des chaines où il y avait des majuscules
les réponses de la carte (K dans le source du site) (k dans ton code)
le chemin pour le stockage des images (Picture dans la doc de la carte) (picture dans les commentaires de ton code)
d'ailleurs as-tu bien créé le répertoire au préalable?
Quelle est la réponse à cette commande Serial.println("AT+CCAMEP"); vois-tu le nom attendu?
oui jai remplacé les "K" par les "k" pour moi me faciliter la tache
et en chemin je met D:/Picture/test01.jpg
et oui le dossier Picture existe bien deja dans la SD
il me repond bien le nom de mon fichier mais quand je met la sd dans le pc il y a rien dessus ..
je vous montre les étapes qu il s affiche dans le moniteur:
djo54150:
oui jai remplacé les "K" par les "k" pour moi me faciliter la tache
et en chemin je met D:/Picture/test01.jpg
et oui le dossier Picture existe bien deja dans la SD
il me repond bien le nom de mon fichier mais quand je met la sd dans le pc il y a rien dessus ..
je vous montre les étapes qu il s affiche dans le moniteur:
djo54150:
oui jai remplacé les "K" par les "k" pour moi me faciliter la tache
Euh.
Ca n'a pas de sens.
Soit le shield répond "OK" et il faut attendre 'K', soit il répond 'ok' et tu peux attendre 'k'.
La page web dit "OK", alors comment ça peut marcher avec 'k' ?
Pourquoi as tu changé AT+FSLOCA=0 en =1 ? Qu'elle est la différence entre les 2 ?
EDIT : Bon après lecture de la doc, 0 c'est interne au module 3G et 1 la carte SD...
Reste le problème de la carte mal formatée ? Ta carte SD est lisible sur PC ? Quel type de format ?
La page Web indique format supporté FAT16 donc pas FAT32!
le "k" ou le "K"
c est quand une commande AT est affiché sur le monitor il faut que je le rentre pour passé a l autre commande
j espere avoir bien expliqué
djo54150:
le "k" ou le "K"
c est quand une commande AT est affiché sur le monitor il faut que je le rentre pour passé a l autre commande
j espere avoir bien expliqué
Alors tu n'as pas compris le code exemple.
Le code exemple utilise la liaison série pour envoyer les commandes AT au module.
Le module doit te répondre par "OK"
D'où dans le code exemple il attend la lettre 'k'
Ce n'est pas à toi de la taper dans le SerialMonitor
Remet des K majuscules et regarde si le code avance.
C'est d'ailleurs un problème de vouloir utiliser la liaison série unique de l'Arduino à la fois pour débugger avec le SerialMonitor et à la fois pour discuter avec un périphérique.
djo54150:
j ai essayé avec "OK"
et meme si il rep pas jai voulu forcé en l envoyant moi mais il réagit pas avec OK que si il y a que K ca va
Tu te relis des fois avant de cliquer sur "Post" ?
Moi y'en a rien comprendre a cette phrase.
Fait un effort, merci.
es tu sur que c est pas nous qui devont valider les commandes ?
Sur a 100%. Il doit répondre OK pour confirmer la bonne réception et exécution des commandes.
C'est comme cela que marchent les commandes AT depuis plus de 20 ans...
Tu marque résolu mais tu ne postes pas la solution.
Précise le problème, ce que tu as fait pour corriger afin que ton expérience apporte quelque chose au prochain lecteur du forum.