Problème d'envoi de SMS avec le module GenPlug 18e

Bonjour alors voilà je suis en projet de terminal et je dois m’occuper d’envoyer un SMS avec le module : GenPro OEM SQB (R20)

Mon programme ainsi que le montage marche très bien , je reçois bien les commande sur le module (j’ai vérifier avec un oscilloscope ) .La led disant que la carte SIM est connecter au réseau clignote ce qui signifie que cela marche bien

Le problème étant que je ne reçois aucun SMS sur mon téléphone.J’utilise une carte Mega et une carte sim sosh pour envoyer le SMS , et ma prof ne sait pas pourquoi cela ne marche pas (je galère depuis 3 semaines)

Le programme :

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX
char operateur [7] = {‘A’, ‘T’, ‘+’, ‘C’, ‘G’, ‘E’, ‘G’}; //Test
const char debut[8] = {‘A’, ‘T’, ‘+’, ‘C’, ‘M’, ‘G’, ‘S’, ‘=’};
char SIM[14] = {‘A’, ‘T’, ‘+’, ‘C’, ‘P’, ‘I’, ‘N’, ‘=’, ‘"’, ‘0’, ‘0’, ‘0’, ‘0’, ‘"’};
const char message[5] = {‘t’, ‘e’, ‘s’, ‘t’, ‘1’};
char num[12] = {’"’, ‘0’, ‘7’, ‘6’, ‘6’, ‘6’, ‘6’, ‘6’, ‘6’, ‘6’, ‘6’, ‘"’};

void operateur_test(); //test
void debut_protocole_SMS();
void deblocage_SIM_SMS();
void envoi_numero_SMS();
void message_envoi_SMS();
void fin_protocole_SMS();
int BPtest=0;

void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
pinMode(A0, INPUT);
pinMode(7, INPUT);
}

void loop()
{
//Début programme capteur de vibration
//int sensorValue = analogRead(A0);
BPtest = digitalRead(7);
//Serial.println(sensorValue);
Serial.println(BPtest);
delay(300);
if (BPtest == 1 )
//if (sensorValue == 1023)
{
//Début programme envoi de SMS
deblocage_SIM_SMS();
delay(100);
operateur_test(); //test
delay(100);
debut_protocole_SMS();
delay(100);
envoi_numero_SMS();
delay(100);
message_envoi_SMS();
delay(100);
fin_protocole_SMS();
delay(150);
//Fin programme envoi de SMS
}
else
{
}
//Fin programme capteur de vibration

}
void operateur_test() //test
{
unsigned char i;
Serial.println(“Operateur”);
for (i = 0; i < 7; i++)
{
Serial.println(operateur*);*
_ mySerial.print(operateur*);_
_
delay(2);_
_
}_
_
}_
void debut_protocole_SMS()
_
{_
_
unsigned char i;_
_
Serial.println(“debut protocole lancer”);_
_
for (i = 0; i < 8; i++)_
_
{_
_ Serial.println(debut);
mySerial.print(debut);
delay(2);
}
}
void deblocage_SIM_SMS()
{
unsigned char i;
Serial.println(“deblocage SIM lancer”);
for (i = 0; i < 14; i++)
{
Serial.println(SIM);
mySerial.print(SIM);
delay(2);
}
}
void envoi_numero_SMS()
{
unsigned char i;
Serial.println(“envoi numero lancer”);
for (i = 0; i < 12; i++)
{
Serial.println(num);
mySerial.print(num);
delay(2);
}
mySerial.write(0x0d);
delay(2);
}
void message_envoi_SMS()
{
unsigned char i;
Serial.println(“messagenvoi sms lancer”);
for (i = 0; i < 5; i++)
{
Serial.println(message);
mySerial.print(message);
delay(2);
}
}
void fin_protocole_SMS()
{
Serial.println(“fin protocole lancer”);
mySerial.write(0x1a);
delay(2);
}_

Programme_capteur___SMS.ino (2.38 KB)*

Bonjour,

En C et C++ une chaine de caractère est terminée par un 0.
Quand tu fais mySerial.print(operateur) ça envoie les caractères situés à l'adresse operateur jusqu'a rencontrer un 0, mais il n'y a pas de 0 à la fin de tachaine operateur.

Il faut donc que tu déclare tes chaines comme des chaines C. C'est à dire pour operateur

char operateur [] = "AT+CGEG";

Ce ne doit pas être le seul problème, il y a d'autres choses bizarres dans ton code.

Mets ton code entre balises.