Je n'arrive pas à envoyer d'SMSs

Bonjour à tous,
Je planne depuis un long moment sur l'envoi d'SMS.
J'ai pourtant lu et relu la doc sans succès

Voici mon code.

SoftwareSerial cell(2,3); 
 //Send SMS
    cell.println("AT+SBAND=6");
    cell.println("AT+CMGF=1"); // set SMS mode to text
    cell.println("AT+CMGS=");  // now send message...
    cell.println("\"");
    cell.println("+41760009988");//+41=Country code, 76= Area code
    cell.println("\"");
    cell.println("\r"); 
    delay(500); // give the module some thinking time
    cell.println("Bipme Alarm");   // our message to send
    cell.println("0x1A,10");  // ASCII equivalent of Ctrl-Z 0x1A,10
    delay(15000); // the SMS module needs time to return to OK status
    
    Serial.print("SMS Sent");

Je me demande si le problème vient pas de la ligne

cell.println("0x1A,10");  // ASCII equivalent of Ctrl-Z 0x1A,10

J'ai aussi d'essayé de mettre

cell.println("0x1A");
cell.println("Ctrl-Z");  // ASCII equivalent of Ctrl-Z 0x1A,10

mais sans succès.
Je vous serais très reconnaissant si vous pouviez corriger mon code.
Aussi l'autre doute que j'ai c'est

cell.println("AT+SBAND=6");

J'ai un peu totu essayer

cell.println("AT+SBAND=6");
cell.println("AT+SBAND=4");

Je suis en suisse et la frequence est 900/1800

je vous remercie

bonjour,
tu peux déjà faire un retour dans la console pour voir.
quelle shield utilise tu?
en général, ce que je fais avant de mettre la sim sur l’arduino, je la configure sur un gsm normal.

sinon essaye avec ca

#include <NewSoftSerial.h>
NewSoftSerial mySerial(7, 8);

const char* message = “toto”;
const char* numero1 = “000000000”;

void setup()
{
mySerial.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the GPRS baud rate

}
void loop()
{
for(int i=0;i<2;i++){
mySerial.println(“ATZ”); //Because we want to send the SMS in text mode
delay(1000);
mySerial.println(“AT+CMGF=1”); //Because we want to send the SMS in text mode
delay(1000);
mySerial.print(“AT+CMGS=”); //Start accepting the text for the message
mySerial.print(34,BYTE);
mySerial.print(numero1); //Start accepting the text for the message
mySerial.println(34,BYTE);
delay(1000);
mySerial.print(34,BYTE);
mySerial.print(message); //The text for the message
mySerial.print(34,BYTE);
delay(1000);
mySerial.print(26,BYTE); //Equivalent to sending Ctrl+Z
}
}

Pas de code PIN sur la carte SIM ?

Hello,
Merci pour vos réponses.
MAis quand entendu pas un return dans la console?
J'ai essayé de le faire ca ne me donne rien.

Non, j'ai pensé à desactivé le code PIN et j'avais deja insérer la carte dans un téléphone. J'ai pu aller sur internet et recevboir des appels

Ce qui me préoccupe toujours c'est command configurer la band

cell.println("AT+SBAND=6");

J'ai aussi essayer de mettre 4.

Aussi une petite question, bête. Pour le moment mon arduino est allimenté pae mon port USB. Es-ce que ca pourrait etre un manque de Voltage?
je n'ai pas encore essayer de l'alimenter avec 9V.

J'ai aussi ajouté ceci

cell.println("ATZ");

je ne l'avais pas, mais apparement ca n'a rien changer.

Grrrrr, je comprend rien.

Je vous remets mon code:

const char* message ="Coucou";
const char* numero ="0762244555";
cell.println("ATZ");
    cell.println("AT+SBAND=6");
    cell.println("AT+CMGF=1"); // set SMS mode to text
    cell.println("AT+CMGS=");  // now send message...
    cell.println("\"");
    cell.println(numero);
    cell.println("\"");
    cell.println("\r"); 
    //delay(500); // give the module some thinking time
    cell.println(message);   // our message to send
    cell.println("0x1A");  // ASCII equivalent of Ctrl-Z 0x1A,10
    //delay(15000); // the SMS module needs time to return to OK status
    
    Serial.print("SMS Sent");

Au passage, c'est quoi le * après le char: char*?

Le char * signifie une chaine de caractères.

Pourquoi ne pas essayer avec la librairie GoGprs si le shield est compatible ?

Ca masque les commandes AT et simplifie la syntaxe, les puristes détesteront. :slight_smile:

si tu nous donnais le type de carte gsm que tu utilise :wink:

EDIT :
je pense a un truc, essaye de mettre le code pays au lieu du 07
pour le france ca donnerait ceci
+33 6 00 00 00 00

EDIT 2 :
je viens de retrouver un tuto suite à un mystère avec un shield gsm

infobarquee:
si tu nous donnais le type de carte gsm que tu utilise :wink:

EDIT :
je pense a un truc, essaye de mettre le code pays au lieu du 07
pour le france ca donnerait ceci
+33 6 00 00 00 00

EDIT 2 :
je viens de retrouver un tuto suite à un mystère avec un shield gsm
http://arduino.cc/forum/index.php/topic,106227.0.html

Alors ce serait plutôt +41 76xxxxxxx

(076, 079… sont des préfixes pour les téléphones portables GSM en Suisse)

Oui j'avais trouvé ce tuto, mais je n'avais pas le téléphone du service center, maintenant c'est fait

J'ai aussi essayé d'utiliser GoGprs, mais sans succès, il me retourne toujours

Not registered on Network
Not registered on Network

Pourtant j'ai mis la carte dans un téléphone et ca marche.

J'ai en fait essayer un des exemple fourni avec la librairie

Jean-François:

infobarquee:
si tu nous donnais le type de carte gsm que tu utilise :wink:

EDIT :
je pense a un truc, essaye de mettre le code pays au lieu du 07
pour le france ca donnerait ceci
+33 6 00 00 00 00

EDIT 2 :
je viens de retrouver un tuto suite à un mystère avec un shield gsm
Arduino Forum

Alors ce serait plutôt +41 76xxxxxx (076, 079... sont des préfixes pour les téléphones portables en Suisse)

hé oui, pour ca que j'ai bien mis "pour le france ca donnerait ceci" (avec une belle faute en prime :slight_smile:
j'aimais bien le fendant et j'aime bien le chocolat, mais je connais pas l'indicatif de la suisse XD 8)
JF aux aguets comme dab :wink:

Bon ben chais plus quoi faire. J’ai fait un petit fichier séparé et voci mon réaultat final

#include <SoftwareSerial.h> 
SoftwareSerial cell(2,3); 
void setup(){
   Serial.begin(9600);
    cell.begin(9600);
  
  //Let's get started!

  Serial.println("Starting SM5100B Communication...");

  delay(3000);
}
void loop(){
  
    //Send SMS
    const char* message ="Alarm";
    const char* numero ="+41761112233";
  
//cell.print("AT+SBAND=4"); 
    cell.println("ATZ");
    cell.println("AT+CMGF=1"); // set SMS mode to text
    cell.print("AT+CSCA=+41765980000");
    cell.print("AT+CMGS=");  // now send message...
    cell.print("\"");
    cell.print(numero);
    cell.print("\"");
    cell.print("\r"); 
    delay(500); // give the module some thinking time
    cell.print(message);   // our message to send
    //cell.write("0x1A");
    cell.println("0x1A");  // ASCII equivalent of Ctrl-Z 0x1A,10
    //delay(15000); // the SMS module needs time to return to OK status
    
    Serial.print("SMS Sent");

delay(15000);
}

Chais pas il doir manquer un truc, un chioua.
Peut etre c’est mon harware qui embete

infobarquee:
JF aux aguets comme dab :wink:

:grin:

tu ne réponds toujours pas sur le type de ta carte gsm.

si tu regarde mon exemple, il te faut des delay(1000);
juste en passant, es tu certain que ta carte est sur on?

#include <SoftwareSerial.h>
SoftwareSerial cell(2,3);
const char* message =“Alarm”;
const char* numero ="+41761112233";

void setup(){
cell.begin(19200);
Serial.begin(19200);

//Let’s get started!

Serial.println(“Starting SM5100B Communication…”);

delay(3000);
}
void loop(){

//Send SMS

//cell.print(“AT+SBAND=4”);
cell.println(“ATZ”);
delay(1000);
cell.println(“AT+CMGF=1”); // set SMS mode to text
delay(1000);
cell.print(“AT+CMGS=”); //Start accepting the text for the message
cell.print(34,BYTE);
cell.print(numero); //Start accepting the text for the message
cell.println(34,BYTE);
delay(1000);
cell.print(34,BYTE);
cell.print(message); //The text for the message
cell.print(34,BYTE);
delay(1000);
cell.print(26,BYTE); //Equivalent to sending Ctrl+Z

Serial.print(“SMS Sent”);

delay(15000);
}

Ha, mais qu'entend tu par type de carte?
C'est une carte SIM, prepay.
N'es-ce pas la réponse que tu attends.
Je vais copier ton code, mais je crois que

cell.println(34,BYTE);

me génère une erreur.

heuuuu non, c'est le type de la carte gsm que je te demande depuis le début :wink:
la sim pour le moment, on s'en fiche un peu.

Haaaaaa!!!!!
tu veux dire ca?
https://www.sparkfun.com/products/9607?
Attends alors je suis à l'ouest :slight_smile:

J'ai pensé que peut etre j'ai mis une mauvaise antenne, mais j'arrive appeler mon module depuis mon portable donc, je ne crois pas.

Aussi, j'ai remplacé

cell.print(34,BYTE);

par

cell.write(34);

car le premier me génèrait un message d'erreur du genre "The byte keyword is not supported, please use Serial.write().

je viens de trouver ceci

Suisse CHE Sunrise 900/1800
Swisscom 900/1800/ 3G 2100
Digicel 900/1800

donc

Write Command
Return
Reference
AT+SBAND?
+SBAND:
OK
AT+SBAND=
OK
value:0-10
value
0 GSM900
1 DCS1800
2 PCS1900
3 GSM850
4 GSM900&DCS1800
5 GSM850&GSM900
6 GSM850&DCS1800
7 GSM850&PCS1900
8 GSM900&PCS1900
9 GSM850&GSM900&DCS1800
10 GSM850&GSM900&PCS1900

cell.println(“AT+SBAND=0 OU 4”);

Ben je te remercie, mais j'avais deja essaye et je viens de le refaire.....

un petit tuto http://garagelab.com/profiles/blogs/tutorial-how-to-use-the-cellular-shield-sm5100b-with-arduino
il est indiqué que le shield peut mettre dans les 10s avant de se connecter au réseau.