bonjour,
J'ai besoin pour mon projet de savoir l'ors d'un appel téléphonique avec module gsm, si le téléphone a l'autre bout à décroché
J'ai vu qu'il existait deux commande AT une +CLCC et l'autre +CPAS.
La CPAS me semblais plus simple puisque on attend en retour la valeur 4 qui est censée indiquer que l'autre partie à décroché.
Seulement voilà je ne trouve pas et aussi je ne comprend pas comment faire pour interpréter cette réponse affin quelle active une action définie,
J'ai essayé tout ce que j'ai pus trouver dans divers tutos mais rien ne fonctionne, soit ça active la fonction des que le téléphone sonne, soit il se passe rien.
Sachant que je ne peut utiliser que la librairie Softwareserial, une commande comme SIM900.read() me fait une erreurs de compilation
Ça fait une semaine que je rame et j'y arrive pas !
Merci à ceux qui pourrons m'aider j'en ai vraiment besoins
Ton code c'est à nous de le deviner ?
le code est tout simple, pour le moment c'est juste une ébauche qui me sert de test et d'aprentissage
ou j’intègre au fur et a mesure les commandes suivant mes besoins
#include <SoftwareSerial.h>
SoftwareSerial SIM900(2, 3); // softwareserial port
void setup()
{
SIM900.begin(19200);
SIM900power();
delay(20000); // temps pour se logger au reseau
}
void SIM900power()
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
}
void MakeCall()
{
SIM900.println("ATD + +33XXXXXXXX;"); // lance l'appel
delay(100);
SIM900.println();
delay(30000); // delais de 30 seconde
SIM900.println("ATH"); // puis racroche
}
void loop()
{
MakeCall(); // appel
//SIM900power();
do {} while (1);
}
je cherche donc a intégrer dans ce code une demande type SIM900.println(AT +CPAS) dont la réponse exécutera une action, qui sera plus tard la lecture d'un MP3 via le shield sparfun
D'après la documentation ci-dessus, lorsque tu passes ta commande d'appel (ATD + +33xxxxx), cette dernière peut répondre OK :
- soit immédiatement après la numérotation
- soit une fois que la communication est établie
Le choix entre ces 2 modes se faisant par la commande AT+COLP=
- 0 : retour juste après la numérotation
- 1 : retour après que la communication soit établie
La solution la plus simple ne serait-elle pas de configurer AT+COLP=1 ?
je veux bien configurer AT+COLP=1 si je savais comment faire,
il est surtout la mon problème.
et je ne trouve pas d'exemple de tuto ou même un cour explicatif la dessus
matth122:
je veux bien configurer AT+COLP=1 si je savais comment faire,
il est surtout la mon problème.
et je ne trouve pas d'exemple de tuto ou même un cour explicatif la dessus
bonsoir
c'est de la commande AT basique , identique a ce que tu utilise pour numeroter (ATD+)
ça doit prendre la forme d'une ligne dans ton code apres mise en route du module sim900
du genre :
SIM900.println("AT+COLP=1"); // configure COLP à 1
avec cette ligne "SIM900.println("AT+COLP=1"); // configure COLP à 1" , on interoge le module GSM ou on le force a 1 ?
de ce que je pense avoir un peut compris de la commande AT
on envoie une requête: SIM900.printnl("AT+COLP?");
on attend la reponse la je sèche
on traite la reponse : if(SiM900.printnl(AT+COLP?", " 1", 1000)) == 1 ) {
digitalwrite( led13, high) } // exemple
je suis sur le bon chemin ou j'ai tout faux ?
matth122:
avec cette ligne "SIM900.println("AT+COLP=1"); // configure COLP à 1" , on interoge le module GSM ou on le force a 1 ?
...
je suis sur le bon chemin ou j'ai tout faux ?
Sous toutes reserves (je me base sur la doc,) je n'ai pas de SIM900
tu force la config COLP à 1 , sans te préoccuper de son etat precedent
il est inutile de connaitre l'etat anterieur dans la mesure où tu veux imposer COLP à 1
si je force a 1 le COLP j'obtiendrais quand même l'information de savoir si une personne a décroche le téléphone ?
Je me suis basé sur la reponse de bigben99 de 16H51 --->relire
Je n'ai pas de module SIM900, donc je me base uniquement sur la doc également, mais toi qui a un module, tu pourrais peut-être tester ? et ensuite nous donner le résultat ?
Si vous me fournissez des sketch je veux bien tester tout ce que vous voulez !
Mais la ligne AT+colp=1 je la met pas juste comme ça dans le sketch et il lui faut un retour pour exécuter une action par exemple mettre a 1 la sortie 13 ça permet de visualiser si le téléphone a été décroché
pour le sketch je ne pourrais pas te l'écrire, je n'ai aucun moyen de vérifier un minimum ce que je ferais.
Mais si tu fais :
SIM900.println("AT+COLP=1");
SIM900.println("ATD + +33xxx");
Si je comprends bien la documentation, tu devrais avoir un OK en retour de ton ATD uniquement lorsque ton correspondant aura décroché.
Mais encore une fois, ce n'est que du théorique, il faut que tu testes.
Comme je m'y attendais mettre seulement SIM900.println("AT+COLP=1"); na absolument aucun effet.
j'essaie différent code trouvé ici et la mais sans vraiment comprendre ce que je fais,
bref j'arrive a rien
Tu reçois toujours le retour "OK" immédiatement ?
Non en fait je reçois rien du tout si je rajoute la ligne seule
Il faut rajouter des bout de code pour écouter la réponse et l'afficher
J'ai trouve quelques informations mais quand je met le code ça m'affiche ok sans même avoir composer le numéro !
Si tu reçois des informations mais tu ne les lis pas, ça n'est pas tout à fait la même chose.
Peux-tu donner ton code complet avec la partie lecture de la réponse à la commande ?
bonjour,
je crois qu'il faudrait que tu prenne la doc du sim900 et surtout des commandes AT.
tu auras tout dedans.
pour certaines commandes, la réponse est simplement OK, donc que veux tu de plus?
et surtout le code que tu rentre
Avec les éléments fournis et mon intuition, je pense qu'il ne traite pas les réponses.
Le code est celui qui est sur la page 1 j'y ajoute la ligne COLP
La doc des commandes AT je lai lue mais je ne sais pas comment écrire le code pour interpréter la réponse du shield !