envoi/reception SMS avec SIM808

Bonjour je suis Patrick.
J’essaye en ce moment d’envoyer et de recevoir un sms avec le module SIM808 et une arduino uno.
J’ai trouvé ce code sur : https://www.dfrobot.com/wiki/index.php/SIM808_GPS/GPRS/GSM_Shield_SKU:_TEL0097#Arduino_Examples

Qui est bien détaillé mais un problème persiste.

 #include <DFRobot_sim808.h>

  //Mobile phone number, need to change
  #define PHONE_NUMBER  "06********"   

  DFRobot_SIM808 sim808(&Serial);

  void setup() {
    //mySerial.begin(9600);
    Serial.begin(9600);
    //********Initialize sim808 module*************
    while(!sim808.init()) {
        delay(1000);
        Serial.print("Sim808 init error\r\n");
    }
    Serial.println("Sim808 init success");
    Serial.println("Start to call ...");

    //*********Call specified number***************
    sim808.callUp(PHONE_NUMBER);
  }
  void loop() {
    //nothing to do
  }

Je reçois ce message d’erreur. J’ai essayé de réinstaller les librairies DFRobot_sim808 comme me l’a conseillé un ami mais sans succès. Avez-vous une idée du problème et de sa solution ?

C:\Users\PatrickJonhson\Desktop\TIPE\SIM 808\DFRobot_SIM808-master\DFRobot_SIM808-master\examples\SIM808_SendSMS\SIM808_SendSMS.ino:1:29: fatal error: DFRobot_sim808.h: No such file or directory

  #include <DFRobot_sim808.h>

                             ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

Clairement il vous manque la librairie DFRobot_sim808.h

Comment l’avez vous installée exactement ?

J'ai réglé le problème en passant à la dernière version de Arduino, apparemment il n'a à reconnaitre la librairie

Malgrès cela le programme ne marche pas, je me demande si c’est parce que je ne renseigne nul part le code pin de la carte SIM insérée dans le SIM808…

Je reçois les avertissements suivant :

C:\Users\PatrickJonhson\AppData\Local\Temp\arduino_modified_sketch_324133\SIM808_SendSMS.ino: In function 'void setup()':

C:\Users\PatrickJonhson\AppData\Local\Temp\arduino_modified_sketch_324133\SIM808_SendSMS.ino:46:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   sim808.sendSMS(PHONE_NUMBER,MESSAGE); 

                                      ^

C:\Users\PatrickJonhson\AppData\Local\Temp\arduino_modified_sketch_324133\SIM808_SendSMS.ino:46:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J’ai donc essayé de rajouter les lignes pour renseigner le code PIN de la carte sans succès.
Cela donne :

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

//Mobile phone number,need to change
#define PHONE_NUMBER "06********"  
 
//The content of messages sent
#define MESSAGE  "Message test"

//#define PIN_TX    10
//#define PIN_RX    11
//SoftwareSerial mySerial(PIN_TX,PIN_RX);
//DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,

DFRobot_SIM808 sim808(&Serial);

void setup() {
  //mySerial.begin(9600);
  Serial.begin(9600);

  Serial.println ("AT");
  delay (200);

  Serial.println ("AT+CPIN=0000");
  delay (200);
 
 //******** Initialize sim808 module *************
  while(!sim808.init()) {
      delay(1000);
      Serial.print("Sim808 init error\r\n");
  }  
  Serial.println("Sim808 init success");
  Serial.println("Start to send message ...");

  //******** define phone number and text **********
  sim808.sendSMS(PHONE_NUMBER,MESSAGE); 
}

void loop() {
  //nothing to do
}

Je reçois les mêmes avertissements que plus haut.
Avez-vous une idée du problème ?

Merci d’avance

Les avertissements n’ont rien à voir, la méthode de la librairie pour sendSMS() attend un char * ce qui veut dire que le compilo pense que potentiellement la méthode modifie la chaîne ce qui n’est pas le cas) et vous passez un #define qui en fait une chaîne constante donc vous avez un warning - mais ça n’est pas un soucis. (Modifiez la lib pour mettre const char * comme params pour le supprimer ou mettez votre N° etc dans un tableau char telNb = “06....”;

Ah oui pour le numéro je vois le problème.
Je vais changer la ligne renseignant le numéro et je reviens vers vous par la suite.

Edit:
J’ai donc la ligne :

#define PHONE_NUMBER “char telNb = ‘06********’;”

Pouvez vous me dire si la ligne est bien écrite ? Il est fort possible qu’elle soit fausse car à part Python je n’avais jamais utilisé Arduino avant, c’est tout récent.

Non juste char PHONE_NUMBER[] = “06********”;

Pour tester mettez votre SIM dans un tel et désactivez le pin code - sérialisez les problèmes

J'ai modifié mon code comme vous me l'aviez réctifié mais de nouvelles "erreurs" apparaissent.

Si j'ai bien compris j'ai des soucis de déclarations dans une ligne.

C:\Users\PatrickJonhson\AppData\Local\Temp\arduino_modified_sketch_204695\SIM808_SendSMS.ino: In function 'void setup()':

SIM808_SendSMS:31: error: 'PHONE_NUMBER' was not declared in this scope

 sim808.sendSMS(PHONE_NUMBER,MESSAGE); 

                ^

exit status 1
'PHONE_NUMBER' was not declared in this scope

Je ne vois pas pourquoi il me dit que 'PHONE_NUMBER' n'est pas déclaré.
Est-ce à cause de la modification faite plus haut ?

postez le code...

Je suis désolé de vous poussez à bout ^^, j’ai vraiment du mal avec Arduino

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

//Mobile phone number,need to change
#define char PHONE_NUMBER [] = "06********";
 
//The content of messages sent
#define MESSAGE  "Test, Pat"

//#define PIN_TX    10
//#define PIN_RX    11
//SoftwareSerial mySerial(PIN_TX,PIN_RX);
//DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,

DFRobot_SIM808 sim808(&Serial);

void setup() {
  //mySerial.begin(9600);
  Serial.begin(9600);

 //******** Initialize sim808 module *************
  while(!sim808.init()) {
      delay(1000);
      Serial.print("Sim808 init error\r\n");
  }  
  Serial.println("Sim808 init success");
  Serial.println("Start to send message ...");

  //******** define phone number and text **********
  sim808.sendSMS(PHONE_NUMBER,MESSAGE); 
}

void loop() {
  //nothing to do
}

ça c’est pas ce que je vous ai écrit plus haut…:slight_smile:

//Mobile phone number,need to change
#define char PHONE_NUMBER = “06********”;

→ essayez avec cela (modifié sans tester)

#include <DFRobot_sim808.h>

char PHONE_NUMBER[] = "06********"; //Mobile phone number,need to change
char MESSAGE[] =  "Test, Pat"; //The content of messages sent

DFRobot_SIM808 sim808(&Serial);

void setup() {
  Serial.begin(9600);
  while (!sim808.init()) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("\nSim808 init success");
  Serial.println("Start to send message ...");
  sim808.sendSMS(PHONE_NUMBER, MESSAGE);
}

void loop() {}

Ah autant pour moi j'avais donc mal compris ce que vous aviez dis.

Le code compile sans erreurs mais je ne reçois pas le message, j'ai pourtant désactiver le code pin comme vous me l'aviez conseillé.

Je vais vérifier si la carte SIM ne dispose plus du code PIN comme je lui ai demandé, en espérant que le problème viennent de là.

que dit la console?

et essayez avec comme N° de tel "+336*******" au lieu de "06*****"

La carte n’a plus de code PIN mais je ne reçois rien.
Ci-dessous un aperçu de ce que le code fait. A chaque double AT j’ai changé les positions (None, USG_DBG,Arduino) et j’ai reset.

Je reste toujours dans la boucle while. Je n’arrive pas à initialiser la carte apparemment.

AT
Sim808 init error
AT
AT
Sim808 init error
AT
AT
Sim808 init error
AT
Sim808 init error
AT
Sim808 init error
AT

Elle est alimentée comment? Vous avez un lien sur votre carte? Quand vous mettez la sim dans le tel, pouvez vous envoyer un sms?

Elle est alimentée avec un chargeur pour arduino uno.
Ma carte est celle-ci : https://www.dfrobot.com/product-1469.html
Et oui la carte sim peut envoyer un sms sans soucis.

9V 2A ? Ou 5V 500mA ?

Votre téléphone quand vous testez - vous pouvez désactiver la 3G et 4G pour tester les sms en 2G ? (La carte ne supporte que le « 2G GSM network » qui n’est plus dispo partout en france)

En sortie j'ai : DC 5V 1500mA

EDIT:

Je viens de renseigner, 2G en réseau mobile au cas ou, je ressaie de ce pas.
Je vous tiens au courant si c'était la source du problème.

Ok c’est peut être un peu juste mais ça devrait faire

Vous avez bien connecté l’antenne au bon endroit ?