envoyer sms avec SIM900 GSM GPRS

Bonjour, j'ai acheté un shield SIM900 GSM GPRS pour envoyer/recevoir des sms et des appels vocaux.

J'ai suivie ce tuto (qui est je trouve bien expliqué)

j'ai la meme carte gsm que l'auteur que j'ai branché à mon arduino elegoo uno revision 3
J'ai effectué les meme branchement à savoir 2 cable pour la masse, 1 pour TXD relier au pin 7 et RXD au pin 8

ensuite j'ai juste copier-coller le code poure nvoyer le sms

/*********
  Complete project details at http://randomnerdtutorials.com  
*********/

#include <SoftwareSerial.h>

// Configure software serial port
SoftwareSerial SIM900(7, 8); 

void setup() {
  // Arduino communicates with SIM900 GSM shield at a baud rate of 19200
  // Make sure that corresponds to the baud rate of your module
  SIM900.begin(19200);
  // Give time to your GSM shield log on to network
  delay(20000);   
  
  // Send the SMS
  sendSMS();
}

void loop() { 
  
}

void sendSMS() {
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1\r"); 
  delay(100);

  // REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
  // USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
  SIM900.println("AT + CMGS = \"+330608996677\""); 
  delay(100);
  
  // REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
  SIM900.println("Message example from Arduino Uno."); 
  delay(100);

  // End AT command with a ^Z, ASCII code 26
  SIM900.println((char)26); 
  delay(100);
  SIM900.println();
  // Give module time to send SMS
  delay(5000); 
}

Je vous donne un numéro bidon 0608996677 qui dans le code donne donc : 330608996677
(évidement j'ai rentré un bon numéro dans mon code)

mais la question : pourquoi sa ne marche pas :frowning:

Mon opérateur est orange j'ai mis la carte sim dans le shield. J'ai une carte micro sim mais l'ai mis avec un adaptateur dans mon shield je pense pas qeu le probleme vienne de la.
Ma carte sim n'a pas de code pin (j'ai testé sur 2 téléphones, aucun ne me demande de code pin pour démarrer), à moins qu'il existe un code par défaut style 0000 ce qui expliquerais pourquoi j'arrive pas à envoyer de sms.

En tous cas je sais pas pourquoi sa ne marche pas, quelqu'un aurait 'il une idée ?

Il ne faut pas d’espace dans les commandes AT et pas le 0 pour 06

=> essayer avec

  SIM900.println("AT+CMGS=\"+33608996677\"");

Même chose partout - je n’ai pas tout lu

Il se peut que la carte soit en 9600 bauds au lieu de 19200 - essayez avec

SIM900.begin(9600);

Il faut aussi une alimentation pour la carte - vous n’en parlez pas. Il faut qu’elle délivre 2A (au moins 1.5A)

Sinon le code n’est pas top - vous envoyez des CRLF avec le println du SMS et il faudrait écouter les réponses du module et pas faire des delay partout

merci pour votre aide.
J'ai mis votre modification.
j'ai aussi relier la carte au secteur avec la prive 9v
j'ai testé en 9600 et 19200

hélas aucun changement

Je pense que la carte et en 19200, je vous donne le lien amazon ou j'ai acheté cette carte :
https://www.amazon.fr/dp/B075P1B64Q/ref=pe_3044141_189395771_TE_dp_2

  1. Le réglage par défaut d'usine pour le Shield GPRS UART est de 19200 pb 8-N-1. (Il peut être modifié à l'aide des commandes AT).

je ne l'ai pas modifié donc ce doit etre du 19200. au passage sa veut dire quoi "pb 8-N-1"

baldouine:
je ne l'ai pas modifié donc ce doit etre du 19200. au passage sa veut dire quoi "pb 8-N-1"

cf la documentation de [url=https://www.arduino.cc/reference/en/language/functions/communication/serial/begin/]Serial.begin()[/url] ça concerne la parité, stop bit etc

Ce sont les valeurs par défaut donc ça devrait être bon

Votre sim carte dans le module à-t-Elle un pin code ?

Quelle est la puissance de votre alimentation ?

ma carte sim n'a pas de code pin
J'utilise une alimentation 12v 1A

Comme à la fin du tuto j'ai bien mis aussi les jumper comme il faut
comme sur cette image

bon j'ai changé de tuto

et sa marche, j'arrive à envoyer des sms !
Les appels fonctionne aussi

#include <SoftwareSerial.h>

/*
Herramientas Tecnologicas Profesionales
www.hetpro-store.com
Tutorial Original:
https://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900-gsm-modules/
Comandos AT:
https://probots.co.in/Manuals/SIM900%20GSM%20Modem%20-%20Starter%20Guide.pdf
Hoja de datos:
Instrucciones para Arduino: Configura la terminal serial a 19200 baudios para que puedas ver los mensajes.
*/




SoftwareSerial SIM900(7, 8); // Configura el puerto serial para el SIM GSM

char incoming_char=0; //Variable que guarda los caracteres que envia el SIM GSM
int salir = 0;
void setup()
{
SIM900.begin(19200); //Configura velocidad serial para el SIM
delay(25000); //Retardo para que encuentra a una RED
Serial.begin(19200); //Configura velocidad serial para el Arduino
Serial.println("OK"); //Mensaje OK en el arduino, para saber que todo va bien.
}

void llamar()
// Función que permite llamar a un celular local
{
SIM900.println("ATD 06089996688;"); //Celular
delay(100);
SIM900.println();
delay(30000); // wait for 30 seconds...
SIM900.println("ATH"); // Cuelta el telefono
delay(1000);
}
void mensaje_sms()
//Funcion para mandar mensaje de texto
{

SIM900.print("AT+CMGF=1\r"); // AT command to send SMS message
delay(100);
SIM900.println("AT+CMGS=\"0608996688\""); // recipient's mobile number, in international format
delay(100);
SIM900.println("test sms"); // message to send
delay(100);
SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26 //Comando de finalizacion
delay(100);
SIM900.println();
delay(5000); // Tiempo para que se envie el mensaje
Serial.println("SMS sent successfully");
}

void espera_mensaje()
{
salir = 1;
while(salir==1)
{
if(SIM900.available()>0)
{
incoming_char=SIM900.read(); //Get the character from the cellular serial port.
Serial.print(incoming_char); //Print the incoming character to the terminal.
salir = 0;
}
}
}
void modo_recibe_mensaje()
{
//Configura el modo texto para enviar o recibir mensajes
SIM900.print("AT+CMGF=1\r"); // set SMS mode to text
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");

// blurt out contents of new SMS upon receipt to the GSM shield's serial out
delay(1000);
}
void loop()
{
llamar(); //Llama
mensaje_sms(); //Envia mensaje
modo_recibe_mensaje();
for(;;)
{
if(SIM900.available()>0)
{

incoming_char=SIM900.read(); //Get the character from the cellular serial port.
Serial.print(incoming_char); //Print the incoming character to the terminal.
}
if(Serial.available()>0)
{
if(Serial.read() == 'A') break;
}
}
Serial.println("OK-2");

delay(100);
SIM900.println();
delay(30000);
while(1); // Espérate por tiempo indefinido

}

autre chose, pour que sa marche chez moi j'ai du virer le 33 devant le numéro

j'ai encore un dernier soucis.

Pour pouvoir utiliser ma sim900 je dois appuyer manuellement sur le bouton netlight (qui permet de ce connecter au réseau)

Y'aurais t'il un moyen d'activer le réseau sans appuyer sur ce bouton (donc de le faire automatiquement dans mon code)

par avance merci.

Bonjour, vous dites que sur ce tuto cela fonctionne :

Cependant, j'ai pas de carte arduino officielle mais une variante, et les connexions (celles qui vont sur le connecteur jaune) partent de la UNO sur les pin GND et GND vers le SIM900 sur le connecteur jaune comme indiqué sur le tuto.

Cependant ils parlent en espagnol de RX et TX..

Faut 'il les brancher?

Encore une qestion, vous dites que vous enlever le 33 avant le numéro, c'est a dire : 06855... ou bien : 6855... ?

Je n'ai toujours pas réussite a faire fonctionner le module Sim 900.

J'ai soudé R13 sur la SIM900 pour démarrer automatiquement le module.

Et j'ai rajouté :

digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);

Et branché un clable du pin 9 comme indiqué sur le 1er tuto que vous indiqué.

Cordialement

Personne ne parle du code Pin ???

Si on ne fait pas de commande pour code pin pas besoin d'aller plus loing !!!