Envoie/Réception SMS avec SIM908

Bonjour,

Je suis en projet de fin d’éude et je dois réaliser mon programme d’envoie et de réception de SMS sur un téléphone.
J’ai suivis plusieurs tutoriels sans réussir car beaucoup utilisaient la SIM900.
Je suis le tutoriel : https://www.dfrobot.com/wiki/index.php/GPS/GPRS/GSM_Module_V3.0_(SKU:TEL0051)#Basic_things_you_need_to_know
J’ai réussi l’envoie et la réception de SMS grace à des commandes AT via Coolterm (le logiciel) qu’il proposait, ainsi j’ai pu déjà vérifier que ma SIM908 fonctionnait.
Seulement maintenant j’en suis à la programmation sur Arduino et j’ai essayé d’utiliser le programme qu’il donnait pour l’envoie d’un SMS.

// Product name: GPS/GPRS/GSM Module V3.0
// # Product SKU : TEL0051
// # Version     : 0.1

// # Description:
// # The sketch for driving the gsm mode via the Arduino board

// # Steps:
// #        1. Turn the S1 switch to the Prog(right side)
// #        2. Turn the S2 switch to the Arduino side(left side)
// #        3. Set the UART select switch to middle one.
// #        4. Upload the sketch to the Arduino board
// #        5. Turn the S1 switch to the comm(left side) 
// #        6. RST the board 

// #        wiki link- http://www.dfrobot.com/wiki/index.php/GPS/GPRS/GSM_Module_V3.0_(SKU:TEL0051)

byte gsmDriverPin[3] = {
  3,4,5};//The default digital driver pins for the GSM and GPS mode
//If you want to change the digital driver pins
//or you have a conflict with D3~D5 on Arduino board,
//you can remove the J10~J12 jumpers to reconnect other driver pins for the module!
void setup()
{    
  //Init the driver pins for GSM function
  for(int i = 0 ; i < 3; i++){
    pinMode(gsmDriverPin[i],OUTPUT);
  }
  digitalWrite(5,HIGH);//Output GSM Timing 
  delay(1500);
  digitalWrite(5,LOW);  
  digitalWrite(3,LOW);//Enable the GSM mode
  digitalWrite(4,HIGH);//Disable the GPS mode
  delay(2000);
  Serial.begin(9600); //set the baud rate
  delay(5000);//call ready
  delay(5000);
  delay(5000);
}

void loop()
{  
  Serial.println("AT"); //Send AT command  
  delay(2000);
  Serial.println("AT");   
  delay(2000);
  //Send message
  Serial.println("AT+CPIN=1234");
  delay(1000);
  Serial.println("AT+CMGF=1");
  delay(1000);
  Serial.println("AT+CMGS = \"06XXXXXXXX\"");//Change the receiver phone number
  delay(1000);
  Serial.print("HELLO");//the message you want to send
  delay(1000);
  Serial.write(26);
  while(1);
}

J’ai tenté de le faire fonctionner, sans succès car je n’ai reçu aucuns SMS.
J’ai ensuite pensé que comme ma carte sim présente sur le SIM908 avait un code pin je devais le renseigner (captain obvious), j’ai alors rajouté grace à divers documents sur le sujet.
Ce qui donne : Serial.println(“AT+CPIN=1234”);

De plus, j’ai modifié légèrement la ligne pour renseigner mon numéro de téléphone.
Ce qui donne : Serial.println(“AT+CMGS = “06XXXXXXXX””);

Je tiens à rajouter, que je n’ai aucun messages d’erreur ce qui est troublant… :frowning:
Je suis bien évidemment disponible presque tout le temps.
En espérant avoir des réponses, merci.

Re-bonjour,

J'ai réussi à reçevoir un SMS une seule fois, le problème est que maintenant je n'y arrive plus.
De plus, il semblerait que je sois obligé de rester connecter un USB avec ma carte, ce que je ne souhaite pas

En effet j'utilise les commandes AT, que j'utilise avec Coolterm... savez-vous comment faire pour faire la même opération sans être connecté en USB avec Coolterm de connecté.

Le but final serait de pouvoir envoyer des SMS et les reçevoir à intervalle régulier en ayant juste une alimentation de la SIM908.

j'ai acheté un sim908 il y a longtemps mais suis passé a un sim800L,
si je ne dis pas de betises, les fonctions simples (sous formes AT) sont compatibles entre les sim800, 808, 900 et 908.

essai la librairie sim808 de dfrobot qui est assez bien faite avec des commandes toutes simples pour l'emission et la reception ainsi que la verification de message en attente ou non

restera plus qu'a faire correspondre les broches dans ton programme.

Le but final serait de pouvoir envoyer des SMS et les reçevoir à intervalle régulier en ayant juste une alimentation de la SIM908.

il te faudra au moins une carte arduino de connecté si tu veux faire quelque chose, par l'UART pour ton module simcom et un softserial pour communiquer avec ton ordi (si tu veux pouvoir écrire les messages a envoyer sinon pas besoin pour un message prédéfini)
le mieux etant de faire l'inverse: le softserial pour le GSM et l'UART pour l'ordi

J'ai en effet la SIM908 avec une carte arduino uno et je branche les deux.
J'ai essayé plusieurs fois les programmes avec les librairies de Dfrobot mais ça ne marchait pas.
Pour seulement reçevoir les coordonnées GPS (but final) donc des SMS au final, la arduino uno et la SIM908 sufise non ?
Le but serait de mettre le tout sur une personne pour pouvoir à distance reçevoir ses coordonnées GPS donc aucun ordi ne sera placé sur un animal. Le but est d'avoir un système ressemblant à un emetteur GPS pour les chiens par exemple.
La réception des coordonnées GPS de chien par reception SMS.

le projet que j'avais développé avait cette fonction de tracker GPS mais je me suis rendu compte que c’était assez compliqué d'utiliser ce shield car les données GSM et GPS sont sur la meme voie,

la solution que j'ai utilisée est d'un coté un Sim800L pour le GSM sur le softSerial1 et un tinyGPS+ pour le GPS sur le softSerial2
comme ca plus de problème de données GPS et GSM mélangées, c'est la seule solution que j'ai trouvé pour remplacer ce shield

D'accord je ne vois pas trop comment tu as pu faire car je suis encore novice..
Mais du coup comment fonctionnait ton installation ?
Tu pouvais reçevoir les coordonnées GPS sans soucis ?

l’avantage avec le softserial c’est que tu peux (presque) en mettre autant que tu veux, il suffit “d’écouter le bon” (voir fonction listen.serial() )
ensuite tu branche chaque module sur chaque softserial que tu as créé apres il te suffit d’ecouter et de lire les infos sur le bon serial, ça facilite énormément les choses, le tinyGPS+ a une broche d’activation ,tu la met a 1 (ou 0 je ne sais plus) et il t’envoie les trames GPS, il te suffit d’attendre quelques secondes que le signal soit acquis, de les decoder et tu obtient la position GPS

j’ai un bout de code qui peut t’être vachement utile pour ça, quand tu en arrivera là je le posterai :wink:

ensuite in te reste plus qu’a retourner sur le softserial du module et d’envoyer ton sms avec les coordonnées.

heu mon système… il est trop complexe pour expliquer son fonctionnement facilement mais la partie qui t’intéresse fonctionne comme ce que je viens de décrire au dessus

Pour réaliser ce que je veux avec tes indications, il me faut le SIM900L du coup ? ou je peux garder ma Arduino UNO + ma sim 908

A toi de voir ce que tu peux faire avec ton sim908 mais personnellement jr te conseille un sim800 avec une bonne alim er un tinygps +

D'accord je vois, tu as des sites avec des bons tuto pour faire ce que je veux car à part la SIM908 je ne connais pas le reste.
Il existe aussi des SIM808 qui remplacent les SIM908 mais je ne sais pas si les programmes compatibles.

Si je dis pas de bêtises, c'est adafruit qui fait le tinygps + , leur site est plutôt bien fourni en explications et avec quelques exemples,(si ma mémoire est bonne) pour le sim800 tu peux piquer la librairie "sim808 dfrobot" assez claire et avec plein de fonctions simples. Il suffit d'aller voir sur github dans les fichiers de la librairie ils sont plutôt bien commentés.

Oui il existe la sim808 mais ça reste du 808 c'est à dire du GSM et du GPS combiné, tu auras exactement le même problème de données que tu as déjà. Base toi sur des modules ou shields à base de sim800 ou sim900

À savoir que la plupart des bibliothèques son compatibles entre sim 800 808 900 908 (biensur les fonctions à base de composants non présents ne fonctionneront pas: tel que les fonctions relevant du GPS sur les sim 800 et 900 car ils ne dispose pas de gps)