[resolu]Probleme, sketch qui fonctionne plus.

Bonsoir,

J’avais un sketch assez simple qui me permettais de passer des appels téléphonique avec mon shield GSM.

il fonctionnais jusqu’a hier soir et ce matin rien a faire ça veux pas.
j’ai essayé un autre sketch qui fonctionnais, celui dans les exemples gsm nommé MAKE A CALL,
ça fonctionne pas non plus.

le seul qui fonctionne utilise la librarie call.h et sim900.h

j’ai verrifié les pin rx tx, les positions des jumpers sur le shield gsm rien a faire

si quelqu’un avais une idée je suis preneur car la je sèche et plus je passe de temps dessus moins j’y arrive

voici le code qui fonctionne pas

#include <SoftwareSerial.h>
SoftwareSerial SIM900(2, 3);  

void setup()
{
  SIM900.begin(2400);               
  delay(10000);  // temps pour se conecter au reseau 
}

void MakeCall()
{
  SIM900.println("ATD + +33xxxxxxxxx;"); 
  delay(100);
  SIM900.println();
  delay(30000);            //on attend 30 seconds...
  SIM900.println("ATH");   // raccroche
}
 
void loop()
{
  MakeCall(); // effectue un appel  
   do {} while (1); // ne fait rien 
}

voici le code qui fonctionne

 #include "SIM900.h"
 
#include <SoftwareSerial.h>
 
#include "call.h"
 
CallGSM call;
 
char number[]="+33xxxxxxxxxx";
 
int mon_entree = 5;
 
void setup()
 
{
 
 Serial.begin(9600);
 
 if (gsm.begin(2400))
 
   Serial.println("\nstatus=READY");
 
 else 
 Serial.println("\nstatus=IDLE");
 
 
};
 
void loop()
{
 if(digitalRead(mon_entree) == HIGH)
  {
   Serial.println("Alarme");
      call.Call(number);
     delay(2000);
     Serial.println("Call"); 
     delay(1000);
 
    if(call.CallStatus()== CALL_ACTIVE_VOICE){
      Serial.println("appel en cours");
    }
    else{
      Serial.println("appel manque");
 
      if(call.CallStatus()== CALL_ACTIVE_VOICE){
        call.SendDTMF("0", 1);
        delay(5000);
 
     }
 
     else{
 
       call.SendDTMF("0,0", 1);
 
       delay(5000);
 
     }
 
   };
 
 }
 
  
 delay(500);
 
};

merci.

bonjour, pas regardé la lib, mais à mon avis il doit y avoir une question d'accroche du réseau quelque part.

j'ai essayé avec deux sim différentes mais ça change rien

c'est pas parce que ca change rien que les sim accrochent le réseau. la led réseau clignote comment lorsque le code est lancé?

bon en fait ça remarche la première remarque était la bonne j’ai mis le delay a 30000 au lieu de 20000 ,sur le sketch que j’ai copié ici il est a 10000 car je pensais que vu que le shield semblais connecté javais pas besoins de plus…
belle erreur .

merci Infobarquee.

puis que j’y suis j’ai besoin de savoir lors d’un appel que quelqu’un a décroché.

je sais qu’il faut envoyer une commande du type SIM900(AT + CLCC);
mais je sais pas comment faire pour interpréter la réponse.

si quelqu’un pouvais aiguillier

AT +CLCC: List Current Calls
Description: List Current Calls of MT. If command succeeds but no calls are available no information response is sent.
References: ETSI GSM 07.07
Group: General Commands
Syntax: Extended format

Command Possible response(s)
AT +CLCC=… n/a
AT +CLCC +CLCC: ,,,,]
+CME ERROR:
AT +CLCC? n/a
AT +CLCC=? +CLCC: [list of supported , , , ]
+CME ERROR:

Defined values
: decimal (0-1); Direction of Call
0 Mobile Originated
1 Mobile Terminated
: decimal (0-5); Call Status
0 active
1 held
2 dialing (MO)
3 alerting (MO)
4 incoming (MT)
5 waiting (MT)
: decimal (0-1); Calling Mode
0 voice
1 data
: decimal (0-1); Multi-Party Call
0 no
1 yes
: string

[/list]

Merci mais ça je l’ai déjà lu j’ai même édité la librairie Call.h dans la qu’elle est déjà intégrée la commande il faut mettre ça dans le sketch → if(call.CallStatus()== CALL_ACTIVE_VOICE){

le soucis c’est que je ne comprend pas comment intégré la réponse dans le scketch en commande AT

Si j’écris

sim900.println(AT+ CLCC=?)
Answer = (+CLCC : 1,0,0,0,0;)

je doute qu’il se passe quelque chose