envoyer trois SMS dans le même programme

Bonjour,
Voici mon programme qui envoie un SMS pour donner la température, maintenant j'ai besoin d'envoyer 3 SMS à trois numéro différents. les deux SMS passe mais le 3éme ne passe pas
#include <GSM.h>
#define PINNUMBER "1111"
#include <math.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // select the pins used on the LCD panel

int a;
float temperature;
float temperature1;
int B=3975; //B value of the thermistor
float resistance;

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;
GSM gsmAccess1; // include a 'true' parameter for debug enabled
GSM_SMS sms1;

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to

// char array of the message
char txtMsg1[200]="ZoneDANGEREUSE T= ";
char txtMsglOG[200]="ALERTE ENVOYE A ";
char txtMsg[200]="ZoneClimatisee T= ";
void setup()
{
// initialize serial communications
Serial.begin(115200);
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
delay(1000);
Serial.print("Current temperature is ");
Serial.println(temperature);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("la temperature");
lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
// nothing to see here
//delay(1000);
lcd.print(temperature);
if(temperature < 30){
Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
sendSMS();
}

else {Serial.println("ZONENormale");}
}

void loop()
{
// lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
// nothing to see here
//delay(1000);
// lcd.print(temperature);
//lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
// nothing to see here
//delay(1000);
//Serial.print("Current temperature is ");
//Serial.println(temperature);
//lcd.print(temperature);
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature1=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
delay(1000);
Serial.print("Current temperature is ");
Serial.println(temperature1);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("la temperature");
// if (temperature1 > 30 ){
Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess1.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
sendSMS1();
//}
lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
// nothing to see here
//delay(1000);
lcd.print(temperature1);
lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over
// nothing to see here
delay(1000);
//Serial.print("Current temperature is ");
//Serial.println(temperature);
lcd.print(temperature1);
if(temperature > 10){
Serial.println("SMS Messages Sender");

// connection state

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess1.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
sendfichierLog();

delay(1000);}
while(1){
delay(1001);
//for(i=0;i<112;i++) {blueToothSerial.write(moveTelegram2,sizeof(moveTelegram2));}
// blueToothSerial.begin(38400);//57600
// blueToothSerial.flush();
//setupBlueToothConnection2();
delay(1000);
}
}

void sendSMS1(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg1);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg1);
sms.print(temperature1);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}
void sendfichierLog(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);
Serial.println("Fichier Log: ");
//Serial.println(remoteNumber1);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg1);
// Serial.println(txtMsglOG);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsglOG);
sms.print(txtMsg1);
sms.print(temperature1);

// sms.print("");
// sms.print(txtMsg1);
// sms.print(temperature1);
// sms.print(txtMsglOG);
// sms.print("");
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}
void sendSMS(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg);
sms.print(temperature);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

bonjour,
utilise déjà la balise code, vire tout ce qui sert a rien.
et mets tout dans la boucle while, pas besoin de la faire 36 fois :wink:
des delay aussi pour attendre que le sms soit envoyé à chaque coup.

mets l'affichage de ton serial, un caractère peut faire mettre par terre le sms.

Bonjour,
Merci pour ta réponse, en fait j'essaye de mettre le programme fonctionner d'abord après je vais l'optimiser puisque je suis débutante en Arduino et c'est un projet à l'école que je dois rendre bientôt, le but c'est de récupérer la température l'envoyer dans un 1er SMS , et apres revoir la température et dans un autre SMS la 2éme température cette étape marche bien les 2 SMS s'envoie avec la température , et après je dois crere un fichier qui contient les deux température envoyés, et l'envoyer à un autre numéro. c'est la où j'ai un problème, j'ai pas réussi à créer un fichier pour insérer les deux valeur de température, maintenant j'essaye tout d'abord d'envoyer un SMS qui contient les températures envoyés par le 1er SMS et le 2éme.
j'ai mis les delays avant la fonction envoyerfichierlog(), mais le 3 éme SMS n'arrive plus:(

#include <GSM.h>
#define PINNUMBER "1111"
#include <math.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // select the pins used on the LCD panel

int a;
float temperature;
float temperature1;
int B=3975; //B value of the thermistor
float resistance;

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;
GSM gsmAccess1; // include a 'true' parameter for debug enabled
GSM_SMS sms1;

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to

// char array of the message
char txtMsg1[200]="ZoneDANGEREUSE T= ";
char txtMsglOG[200]="ALERTE ENVOYE A ";
char txtMsg[200]="ZoneClimatisee T= ";
void setup()
{
// initialize serial communications
Serial.begin(115200);
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
delay(1000);
Serial.print("Current temperature is ");
Serial.println(temperature);

if(temperature < 30){
Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
sendSMS();
}

else {Serial.println("ZONENormale");}
}

void loop()
{
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature1=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
delay(1000);
Serial.print("Current temperature is ");
Serial.println(temperature1);

while (temperature1 > 30 ){
Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess1.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
sendSMS1();
delay(1000);

delay(1000);

Serial.println("SMS Messages Sender");

// connection state
delay(200000);
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess1.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
delay(10000);
Serial.println("GSM initialized");
delay(10000);
sendfichierLog();

delay(1000);
while(1){

delay(1001);

delay(1000);
}
}
}

void sendSMS1(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg1);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg1);
sms.print(temperature1);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}
void sendfichierLog(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);
Serial.println("Fichier Log: ");
//Serial.println(remoteNumber1);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg1);
// Serial.println(txtMsglOG);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsglOG);
sms.print(txtMsg1);
sms.print(temperature1);

// sms.print("");
// sms.print(txtMsg1);
// sms.print(temperature1);
// sms.print(txtMsglOG);
// sms.print("");
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}
void sendSMS(){
char remoteNumber[20]= "";
Serial.print("Message to mobile number: ");
Serial.println(remoteNumber);

// sms text
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg);
sms.print(temperature);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

et voila le resultat

Current temperature is 21.06
SMS Messages Sender
GSM initialized
Message to mobile number:
SENDING

Message:
ZoneClimatisee T=

COMPLETE!

Current temperature is 21.06
SMS Messages Sender
GSM initialized
Message to mobile number:
SENDING

Message:
ZoneDANGEREUSE T=

COMPLETE!

SMS Messages Sender
GSM initialized
Message to mobile number:
Fichier Log:
SENDING

Message:
ZoneDANGEREUSE T=

COMPLETE!

C'est bon Merci, le 3éme message est arrivé, effectivement comme vous avez dit il faut mettre les delay pour donner le temps au SMS pour qu'il soit envoyé, maintenant je doit mettre les 2 valeurs de température dans un fichier pour envoyer le fichier par SMS, est ce que vous avez une idée comment je peux faire pour créer le fichier et insérer les 2 valeurs de température???

Merci infiniment :slight_smile:

pourquoi dans un fichier?
tu prends ta 1ere temp et tu lui mets la 2eme temp dans une variable que tu envoies au 3eme sms.

oui merci bcp, vous avez raison, c'est ce que j'ai fait dans un 1er temps, mais dans le mini projet le prof veut récupérer un fichier log comme un journal où on va trouver les valeurs envoyés avec les numéros de téléphone et la date comme cette exemple,
temperature T = 25, SMS envoyé à 066012453 le 11/10/2014 à 13h,
temperature T = 22, SMS envoyé à 066012453 le 11/10/2014 à 14h,

Donc la je dois créer un fichier, insérer les variables dans un fichier et l'envoyer.
mais je ne sais pas comment faire pour creer le fichier :frowning:

Yep!

Pour le fichier log, il te faut quoi ? une sauvegarde sur SDCard déportée ou via le port usb du pc ?

Peux-tu mettre ton code entre "balise" (sélection du texte, puis l'icône "code" avec les <>)???, ce sera plus facile à lire pour nous tous merci.

Bon! on est entre nous mais les numéros de téléphone sur un forum public, ç'est pas la meilleure chose à faire...

@+

Zoroastre.

oui vous avez raison, en fait je ai mis juste à titre d'exemple des numéros au hasard

Pour la sauvegarde via le port du Pc c'est pas possible car ma carte est branché sur un robot mobile et connectée à une batterie de 9v. donc la seule solution qui reste c'est une sauvegarde sur SDCard, je dois voir comment faire pour le branchement de la carte et quelle carte exactement je dois acheter.

je dois sauvegarder la temperature 1 et 2 et les SMS envoyé avec les numéros.

est ce que vous avez un exemple de code pour sauvegarder sur une carte SD??

Merci bcp.

sa dépend de la carte et la liaison utilisée, spi ,uart ou autre. Sinon il y a quelque librairie proposé en fonction de ton shield. je pense que tu peut trouver sur le net. après avec les librairie c'est facile:
SD.open(nom du fichier)
SD.write(data)
Sd.read
....

je crois que sa ressemble à ça donc c'est assez simple

Ok, merci beaucoup.Je dois donc voir la carte.

Pour le matériel j'ai un Shield de connexion Grove pour UNO connecté à un capteur de température et un shield GSM pour envoyer les SMS.

tu veux vraiment passer par la case fichier joint (mms si je m'abuse)?

pour la carte SD tu as des petits modules comme ICI
ils communique en spi et tu peut utiliser cette librairie: ICI

Effectivement infobarquee, j'ai pas le choix, j'ai pensé à prendre une carte ethernet et lui envoyer les valeurs que je voudrai sauvegarder et cette carte sera brancher avec le PC, donc elle va sauvegarder ces valeur sur le Pc en utilisant un programme avec python. mais puisque je suis débutante en arduino, j'ai peur que je trouverai pas le code et je donnerai pas le projet à temps.
donc je vais envoyer les variables par SMS et les sauvegarder en même temps dans une carte SD.
et après s'il me reste du temps je vais voir l'autre solution.

Merci beaucoup pour vous tous, vous m'avez vraiment aidé :slight_smile:

entre le fait d'envoyer un sms avec un fichier joint et envoyer un sms contenant les données du fichier, c'est pas la même chose.
je te conseille fortement d'utiliser la deuxième solution, incorporer les données du fichier dans le sms.
il suffit de lire le fichier ligne par ligne et les inscrire dans le sms.

oui, c'est ce que je suis entrain de tester, j’espère juste que le prof acceptera cette solution :wink:
Merci beaucoup.