Bonjour tout le monde!!!
J'ai besoin de votre aide
... Je voudrai récupérer un fichier .txt qui se trouve sur un serveur pour ensuite envoyer le contenu par sms.
Ma plate forme se compose:
- Arduino Uno
- GPRS Shield v1.2
- Music Shield v2.0
J'ai trouvé un code qui récupère bien le fichier .txt sur le serveur.
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);
void setup()
{
gprsSerial.begin(19200);
Serial.begin(19200);
//fonction SIM900power
SIM900power();
Serial.println("Config SIM900...");
//delai de 30s secondes
delay(30000);
Serial.println("Done!...");
gprsSerial.flush();
Serial.flush();
// attach or detach from GPRS service
gprsSerial.println("AT+CGATT?");
delay(100);
toSerial();
// bearer settings
gprsSerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
delay(2000);
toSerial();
// bearer settings
gprsSerial.println("AT+SAPBR=3,1,\"APN\",\"wapsfr\"");
delay(2000);
toSerial();
// bearer settings
gprsSerial.println("AT+SAPBR=1,1");
delay(2000);
toSerial();
}
void loop()
{
// initialize http service
gprsSerial.println("AT+HTTPINIT");
delay(2000);
toSerial();
//lien vers le fichier txt
gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://........./text.txt\"");
delay(2000);
toSerial();
// set http action type 0 = GET, 1 = POST, 2 = HEAD
gprsSerial.println("AT+HTTPACTION=0");
delay(6000);
toSerial();
// read server response
gprsSerial.println("AT+HTTPREAD");
delay(1000);
toSerial();
gprsSerial.println("");
gprsSerial.println("AT+HTTPTERM");
toSerial();
delay(300);
gprsSerial.println("");
delay(10000);
}
//focntion pour allumer la carte gsm
void SIM900power()
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
}
void toSerial()
{
while(gprsSerial.available()!=0)
{
Serial.write(gprsSerial.read());
}
}
Et j'ai modifié un code pour récupérer un fichier .txt qui se trouve dans ma carte sd puis qu'il l'envoie par sms
#include <SoftwareSerial.h>
#include <SD.h>
SoftwareSerial SIM900(7, 8);
const int chipSelect = 10;
File dataFile;
char messageRead[300];
void setup()
{
Serial.begin(19200);
Serial.print("Initialisation serie");
SIM900.begin(19200);
SIM900power();
delay(30000); // give time to log on to network.
Serial.print("Initialisation de la SD card");
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Echec initialisation ou carte inexistant");
// don't do anything more:
return;
}
Serial.println("Initialisation reussie !");
//Ouvre le fichier
dataFile = SD.open("text.txt");
int mi = 0;
// Si le fichier est invalide
if (dataFile) {
while (dataFile.available()) {
messageRead[mi++] += ((char)dataFile.read());
Serial.write(messageRead[mi-1]);
messageRead[mi] += (char)'\0';
}
//dataFile.close();
}
else {
Serial.println("Erreur d'ouverture");
}
}
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
}
void sendSMS()
{
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = \"+33######\"");
delay(100);
Serial.println("sending sms ");
Serial.println(messageRead);
SIM900.println(messageRead);
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
Serial.println("sent sms ");
SIM900power();
}
void loop()
{
sendSMS();
do {} while (1);
}
Voila, je n'arrive pas à fusionner c'est deux codes (récupérer le fichier sur le serveur, l'enregistrer sur la carte sd puis l'envoyer en sms) ...
Merci de votre aide!