SIM900A Mini V3.8.2

Salut,

J'ai fais l'erreur d'acheter un module SIM900A Mini V3.8.2 sans vraiment me renseigner auparavant :kissing:

Maintenant que je l'ai je voudrais le faire fonctionner ( normal, non ?) avec un arduino mega qui me sert depuis un an comme alarme pour ma maison. Le but est d'envoyer des SMS lors des déclenchements d'alarme.

Le module en question :

Le problème auquel je me confronte c'est que je ne trouve rien d'explicite concernant ce module... de ce que j'ai cru comprendre, le "A" de SIM900A n'est pas anodin puisqu'il semblerait que celui ci indique que le module ne fonctionne que dans certains pays d'Asie.

D’après certains forums Anglais il semble possible de flasher le SIM900A pour lui intégrer le firmware du SIM900.

Dans tous les cas avant de tenter cette manip qui me semble d√©j√† legerement au dessus mes comp√©tences j'ai voulu essayer de le faire fonctionner sur une Mega que j'ai en plus. Et la second probl√®me, je ne trouve m√™me pas de datasheet ou de tuto concernant le c√Ęblage...

J'ai fait différents montage avec les bribes d'info trouver ci et la mais rien n'y fait :

Montage 1 :

Montage 2 :

Avec ces montages, rien ne fonctionne, d'ailleurs les LEDs RX et TX du Mega ne clignotent jamais donc pour moi je n'arrive même pas a établir de connexion entre les deux....

En r√©sum√© j'ai vraiment besoin d'aide pour me remettre sur les rails, je ne veux pas n√©cessairement une solution tomb√©e du ciel mais un ptit coup de pouce comme par exemple un tuto que je n'aurais pas trouv√© (en Fran√ßais si possible car mon Anglais est plut√īt rusty :frowning: )

Merci !

je l'ai fais avec ce document mais ça fait un moment et je n'ai pas pris de note
pour le flascher il faut utiliser un interface USB/série raccordé sur rx/tx en 5v (celles du milieu du bloc 2*3 pins ton montage 1)
après ça fonctionne avec une SIM de FREE

rjnc38:
je l’ai fais avec ce document mais ça fait un moment et je n’ai pas pris de note
pour le flascher il faut utiliser un interface USB/série raccordé sur rx/tx en 5v (celles du milieu du bloc 2*3 pins ton montage 1)
après ça fonctionne avec une SIM de FREE

Impeccable merci pour la doc, je viens de lire en travers, ca me rassure deja que tu es réussi. Je vais regarder pour m’acheter une interface USB- serie et me lancer dans ce nouveau defi :slight_smile:

Niveau c√Ęblage entre le module et ton arduino tu utilises le RX/TX en 5 volt ? ou les 3 pins seuls sur le cot√© ?

Bon pour le petit retour,

Avec la doc fournie par rjnc38, tout fonctionne nickel pour transformer un SIM900a en SIM900.

Avec la librairie gsm.h j'arrive a communiquer avec mon alarme pour connaitre son état, déclenché ou arrêter la sirène et même ouvrir mes portes de garages électrique...

Le problème c'est que aléatoirement au bout de quelques SMS, mon alarme ne réagit plus a mes SMS. il faut que je coupe l'alimentation puis que je la remette et l'alarme exécute les actions demandées (celle qu'elle n'a pas faite).

Ca me fait penser a un probleme de memoire ou de perte de reseau, pourtant quand mets la carte SIM dans mon portable, aucun SMS n'est stockés dedans donc celle ci ne peut etre saturée et quand je laisse branché le SIM900 avec l'exemple "GSM Scan Networks" il ne perd jamais le reseau meme apres plusieurs heures....

Avez vous une idée du probleme ?

tu l'alimentes comment ta SIM900 ?
Il ne faut pas oublier qu'elle peut avoir besoin de pics de 2A/5V. Si tu l'alimentes depuis ton Arduino il y a peu de chances qu'il y ait assez de jus pour la "nourrir" correctement...
J'ai eu un problème semblable il n'y a pas si longtemps avec mon gestionnaire de bruleur/chaudière, en branchant directement les 5V de mon alim (stabilisée) tout fonctionne bien maintenant !

J'ai pensé aussi a ça mais j'alimente avec un LM2596 réglé a 5 volt et 3A donc je pense pas que le problème vienne de là... :confused:

Hache76:
J'ai pensé aussi a ça mais j'alimente avec un LM2596 réglé a 5 volt et 3A donc je pense pas que le problème vienne de là... :confused:

bonsoir
tu a verifié "toi meme" que ton LM débite/maintien bien ? :grin:

Effectivement j'ai réglé la tension a vide...

Le problème avec la SIM900 c’est que ce sont les pics qui semblent être source de panne, pas le fonctionnement nominal… La preuve, la mienne fonctionnait pendant 1 semaine sans problème alimentée en sous-tension et pas assez de courrant via le régulateur de l’Arduino…

je vais tenter de voir quelque chose avec le multimètre mais si les pics sont rapide j'ai peur que celui ci ne voit rien du tout... (j'ai pas de voltmètre a aiguille....)

Ce qui me gène le plus, c'est que je ne trouve pas de fonction dans gsm.h qui permette de surveiller le fait que le module GSM fonctionne bien... C'est très gênant pour une alarme... je dois être a 100% que cela va fonctionner !

J'ai refais un test ce matin, lorsque mon alarme ne répondait plus a mes SMS, j'ai simplement débranché la "puissance" de la SIM900 (donc l'arduino est resté sous tension et n'est pas repassé dans le SETUP ou se fait l'initialisation du gsm) puis j'ai rebranché et l'ensemble c'est remis a fonctionner, l'alarme a fait les actions des SMS précédent...

j'avais le même comportement. Après, ce qui m'étonne c'est que t'utilises la librairies du shield GSM officiel d'Arduino avec une SIM900 : moi je me suis codé ma librairie pour gérer les commandes AT de la SIM900 (seulement pour l'envoi/réception de SMS)...

J'ai sollicité ma femme pour faire quelques tests... (a quatre mains c'est plus simple qu'avec deux :slight_smile: )

J'ai mesuré la tension a l'entrée de la SIM900 ==> 4.95 volt

J'ai envoyé un texto ==> pas de réponse

J'ai redémarré arduino + SIM 900 ==> j'ai reçu un SMS de bon fonctionnement car dans le SETUP j'ai mis ca :

  boolean notConnected = true;

  while (notConnected) {
    if (gsmAccess.begin() == GSM_READY) {
      notConnected = false;
    } else {
      lcd.setCursor(0, 0);// Colone 1 Ligne 0
      lcd.print("attente reseau GSM") ;
    }
  }


   sms.beginSMS("+336XXXXXXXX");
   sms.print("Module GSM en fonction");
   sms.endSMS();

J'ai pas vu de baisse de tension (j'ai un multimètre numérique bas de gamme) donc pour les pics de tension c'est mort :frowning:

Ensuite j'ai monté la tension sur la SIM 900 a 5.2 Volt.

J'ai fait une ouverture/fermeture de porte de garage par SMS ( c'est vraiment classe quand ca fonctionne !) puis 5 minutes apr√®s j'ai demand√© la mise en service de l'alarme et je n'ai jamais eu de r√©ponse... l'arduino n'est pas plant√© car je peux tout faire en manuel depuis le boitier de contr√īle...

Hache76:
Ensuite j'ai monté la tension sur la SIM 900 a 5.2 Volt.

Bonjour
je ne comprend pas tes manips
extrait du DS SIM900

The power supply range of SIM900 is from 3.2V to 4.8V
. The transmitting burst will cause voltage drop and the
power supply must be able to provide sufficient current up to 2A. For the VBAT input, a bypass capacitor (low
ESR) such as a 100 őľF is strongly recommended; this capacitor should be placed as close as possible to SIM900
VBAT pins.
...
The single 3.6V Li-ion cell battery can be connected to SIM900 VBAT pins directly. But the Ni-Cd or Ni-MH
battery must be used carefully, since their maximum voltage can rise over the absolute maximum voltage of the
module and damage it.

Artouste:
Bonjour
je ne comprend pas tes manips
extrait du DS SIM900

Je crois que moi non plus :slight_smile:

j'ai remis une tension correcte ça de toutes manières, j'avais le même soucis...

j'ai donc remis une tension de 4.5 volt sur le SIM900 et un gros condensateur a l'entrée du LM2596 mais pareil....

En revanche j'ai (re) fait quelques tests qui me font penser que le soucis vient plut√īt du soft...

Pour simplifier le fonctionnement de mon alarme, j'ai mis dans le loop des verifications de presence de SMS

if (sms.available())
Reception_SMS();

Donc si un SMS se présente je vais dans la fonction "Reception_SMS" que voila

void Reception_SMS(){

  // lecture des entrées
  int portep = digitalRead(PorteP);
  int portegarage = digitalRead(PorteGarage);
  int portesetfenetres = digitalRead(Portesetfenetres);
  int bpdroit = digitalRead(BPdroit);
  int bpgauche = digitalRead(BPgauche);
  int alarme = digitalRead(MESalarme);
  int bpbleu = digitalRead(BPbleu);
  int bpblanc = digitalRead(BPblanc);
  int volet = digitalRead(Volet);
  int volets = digitalRead(Volets);

  char c;
  char SMS[128];
  int x = 0;

  SMS[0] = '\0';

  sms.remoteNumber(senderNumber, 20);
  
    // Lecture du SMS
    while (c = sms.read()) {
     
        if ( c != ' ')// je prends que un seul mot
        {
        SMS[x]= c;
        }
        else{
        SMS[x]= '\0';// marque la fin du message !!!
        break;
        }
        x++;   
        SMS[x]= '\0';// marque la fin du message !!!
    }

  sms.beginSMS(senderNumber);
  
  // Si demande de l'etat general de l'alarme
    if ( strcmp(SMS, "Etat")== 0)
    {

  if((volets == 0) && (portep == 0) && (portesetfenetres == 0) && (portegarage == 0))
    {
  
    sms.print("Aucun defaut \n");
  
  }else{
  
  if(volets == 1)
  sms.print("Volet ouvert \n");
  
  if(portep == 1)
  sms.print("Porte entree ouverte \n");
  
  if(portesetfenetres == 1)
  sms.print("Porte ou fenetre ouverte \n");
  
  if(portegarage == 1)
  sms.print("Porte garage ouverte \n");
  
  }

  if(AlarmeEnService == 0)
  {
    sms.print("Alarme Hors Service \n");
  }else{
  sms.print("Alarme En Service \n");
  }

  sms.endSMS();

  
  }
 

    // Demande de mise en service de la sirene d'alarme par sms
    if ( strcmp(SMS, "SireneON")== 0)
    {
    // mise a l'arret des relais
    digitalWrite(RelaisAlarmeInterieure, LOW);// Alarme
    digitalWrite(RelaisAlarme, LOW);// Alarme
    sms.print("Sirenes En Service");
    sms.endSMS();
    }
 
    // Demande d'arret de la sirebe d'alarme par sms
    if ( strcmp(SMS, "SireneOFF")== 0)
    {
    // mise a l'arret des relais
    digitalWrite(RelaisAlarmeInterieure, HIGH);// Alarme
    digitalWrite(RelaisAlarme, HIGH);// Alarme
    sms.print("Sirenes Hors Service");
    sms.endSMS();
    }


  
  // Si demande d'ouverture la porte de garage Droite
    if ( strcmp(SMS, "GarageDroite")== 0)
  {
    
  if(portegarage == 0)
  {
  sms.print("Ouverture Porte de Garage Droite en cours...");
  sms.endSMS();
  }else{
  sms.print("Fermeture Porte de Garage Droite en cours...");
  sms.endSMS();
  }

   OuvertureGarageDroite();
  
  }
  
  
  // Si demande d'ouverture la porte de garage Gauche
    if ( strcmp(SMS, "GarageGauche")== 0)
  {
  
  if(portegarage == 0)
  {
  sms.print("Ouverture Porte de Garage Gauche en cours...");
  sms.endSMS();
  }else{
  sms.print("Fermeture Porte de Garage Gauche en cours...");
  sms.endSMS();
  }

  OuvertureGarageGauche();
  
  } 
  

    // efface le message de la memoire
    sms.flush();



}

Donc en fait mon alarme envoi des SMS seulement en réponse à une "commande" elle même reçue par SMS.

Le seul moyen qu'elle envoi un SMS de maniere autonome est le declenchement d'alarme qui envoi cette fonction :

void Envoie_SMS(){

  // lecture des entrées
  int portep = digitalRead(PorteP);
  int portegarage = digitalRead(PorteGarage);
  int portesetfenetres = digitalRead(Portesetfenetres);
  int bpdroit = digitalRead(BPdroit);
  int bpgauche = digitalRead(BPgauche);
  int alarme = digitalRead(MESalarme);
  int bpbleu = digitalRead(BPbleu);
  int bpblanc = digitalRead(BPblanc);
  int volet = digitalRead(Volet);
  int volets = digitalRead(Volets);

  sms.beginSMS("+336xxxxxxxx");

  sms.print("Alarme Hadrien Declenchee \n");
  
  if(volets == 1)
  sms.print("Volet ouvert \n");
  
  if(portep == 1)
  sms.print("Porte entree ouverte \n");
  
  if(portesetfenetres == 1)
  sms.print("Porte ou fenetre ouverte \n");
  
  if(portegarage == 1)
  sms.print("Porte garage ouverte \n");
  
 
  sms.endSMS();

 

}

Mon dernier test a été d'envoyer une commande, je n'ai pas eu de réponse (donc problème). J'ai ensuite déclenché volontairement l'alarme et j'ai reçu un SMS de réponse a la commande precedente et pas le message normal en cas de déclenchement d'alarme.

J'ai p√Ľ ensuite refaire plusieurs (3 je crois) tests de commande qui ont bien fonctionn√©s avant de nouveau le m√™me soucis...

Je me demande donc s'il n'y a pas un "embouteillage" de SMS a l'entrée de la SIM900 qui ne transmet pas a l'arduino, celui ci traite correctement les informations qu'il reçoit (mais faut il qu'il les reçoivent !)

Est ce que cela pourrait venir d'un problème de mémoire vive de la SIM900 ?

Dans ma fonction de réception de SMS, devrais je mettre un sms.flush après le traitement de celui ci ?

    // Lecture du SMS
    while (c = sms.read()) {
     
        if ( c != ' ')// je prends que un seul mot
        {
        SMS[x]= c;
        }
        else{
        SMS[x]= '\0';// marque la fin du message !!!
        break;
        }
        x++;   
        SMS[x]= '\0';// marque la fin du message !!!
    }

    // efface le message de la memoire
   [color=red] sms.flush();[/color]

plutot que :

    // Lecture du SMS
    while (c = sms.read()) {
     
        if ( c != ' ')// je prends que un seul mot
        {
        SMS[x]= c;
        }
        else{
        SMS[x]= '\0';// marque la fin du message !!!
        break;
        }
        x++;   
        SMS[x]= '\0';// marque la fin du message !!!
    }

  sms.beginSMS(senderNumber);


  
   OuvertureGarageDroite();
  
  }
  
  
 // traitement du message et envoi du SMS de confirmation...
  

    // efface le message de la memoire
   [color=red] sms.flush();[/color]



}

Je commence a être persuadé que c'est un ptit cailloux qui traine quelques part qui met tout en vrac... >:(

Personne n'a de piste pour résoudre mon soucis ?

Faut il configurer quelque chose en particulier sur la carte SIM ?

Encore et toujours le même problème, ça fonctionne nickel puis sans raison les messages ne sont plus traités...

J'ai trouvé un post en Anglais ou le gars a le même soucis mais pas de réponse :

j'ai trouvé ce sujet aussi :

donc demain je mis remet en essayant de comprendre D‚Äôo√Ļ vient le probl√®me...

D√©sol√© d'insister mais une alim r√©gul√©e 5V/3A √ßa ne co√Ľte pas trop cher, ne serait-ce que pour tester. Moi je n'ai plus ces soucis depuis que j'alimente comme √ßa ma SIM900...

Zorro_X:
D√©sol√© d'insister mais une alim r√©gul√©e 5V/3A √ßa ne co√Ľte pas trop cher, ne serait-ce que pour tester. Moi je n'ai plus ces soucis depuis que j'alimente comme √ßa ma SIM900...

Toutes les solutions sont bonnes a prendre, je me vexe pas :slight_smile:

Actuellement, je l'alimente pas un LM2596 avec un gros condensateur en // a l'entrée. L'ensemble alimenté par une batterie de voiture en floating.

Comme je dois faire une commande sur Dealextreme prochainement, je vais voir pour m'acheter un alimentation régulée a 3A qui dans le pire des cas me servira toujours pour un autre projet :slight_smile:

As tu un modèle a me conseiller ?

J'ai refait des petits test ce matin...

J'ai glissé un :

lcd.print(gsmAccess.getStatus());

Dans mon code afin de visualiser l’état du SIM900 sur mon LCD. Cela affiche 3 (GSM_READY), j'envoie quelques SMS jusqu’à avoir mon soucis qui apparait et ensuite cela continu d'afficher 3 donc une fois de plus j'en perds mon latin...

Comme si, malgré le problème avéré l'arduino et le SIM900 communiqués correctement...

D'ailleurs une fois le problème arrivé, j'ai tenté d'envoyer un SMS depuis mon alarme vers mon portable et ca n'a pas fonctionné....