Préparation (suite) d'une librairie pour le GSM/GPRS de GOF
Cela fait quelques-mois que le GSM/GPRS shield de GeekOnFire (GOF pour les intimes) est disponible chez MC Hobby.
Même s'il est bien documenté (voir notre wiki) et les exemples parfaitement fonctionnels, l'utilisation d'un tel module dans des projets peut réclamer un effort de programmation non négligeable.
Partant de ce constat, et ayant nous même des projets (localisation par SMS, contrôle de température et activation d'une chaudière à distance, ouverture de porte à distance, etc), nous avons décidé d'essayer de mettre en place une librairie.
Le projet GoGprs
Actuellement en cours d'écriture, GoGprs est une classe (et futur libraire) qui permettra de contrôler le GPRS de GOF.
Notre premier article faisait état de nos premiers résultats prometteurs ceoncernant les SMS.
Bien que nous n'avançons pas aussi vite qu'attendu, cette soirée aura été productive concernant les appels téléphoniques vocaux.
Dans l'état actuel de nos travaux, la librairie a étendu ses fonctionnalités :
Nos efforts commencent à porter leurs fruits, voici le temps de partager un autre exemple... et d'avoir un premier retour d'impressions.
Cet exemple etablit une communication sortante attend qu'elle soit coupée par le destinataire... ou finalement la coupe au bout de 15 seconds.
Si le téléphone sonne pendant 8 + 15 sec sans réponse, la communication sera également interrompue par logiciel
Le code reste encore facile a suivre... pourtant le processus de communication avec le GPRS est relativement complexe.
Voici ce que le programme retourne comme information
GSM/GPRS shield de GOF pour Arduino Disponible chez MC Hobby |
Même s'il est bien documenté (voir notre wiki) et les exemples parfaitement fonctionnels, l'utilisation d'un tel module dans des projets peut réclamer un effort de programmation non négligeable.
Partant de ce constat, et ayant nous même des projets (localisation par SMS, contrôle de température et activation d'une chaudière à distance, ouverture de porte à distance, etc), nous avons décidé d'essayer de mettre en place une librairie.
Le projet GoGprs
Actuellement en cours d'écriture, GoGprs est une classe (et futur libraire) qui permettra de contrôler le GPRS de GOF.
Notre premier article faisait état de nos premiers résultats prometteurs ceoncernant les SMS.
Bien que nous n'avançons pas aussi vite qu'attendu, cette soirée aura été productive concernant les appels téléphoniques vocaux.
Dans l'état actuel de nos travaux, la librairie a étendu ses fonctionnalités :
- Etablissement d'une communication téléphonique
gsm.call( "+32999887766" ) - Savoir si une communication est en cours (numérotation ou communication vocale)
gsm.isCalling() - Savoir si le GPRS "sonne" (reçoit une communication entrante)
gsm.isRinging() - Savoir si le GPRS est prêt à établir une communication vocale (donc qu'il ne sonne pas en communication entrante OU qu'il n'est pas en cours de numérotation ou communication vocale établie).
gsm.isReadyForCall() - Interrompre la communication en cours de numérotation ou en cours d'échange vocal
gsm.hangUp() - D'accepter une communication entrante.
gsm.acceptCall()
Nos efforts commencent à porter leurs fruits, voici le temps de partager un autre exemple... et d'avoir un premier retour d'impressions.
Cet exemple etablit une communication sortante attend qu'elle soit coupée par le destinataire... ou finalement la coupe au bout de 15 seconds.
Si le téléphone sonne pendant 8 + 15 sec sans réponse, la communication sera également interrompue par logiciel
/* ------------------------------ Main Routines ------------------------------ */ GoGprs gsm = GoGprs(); void setup() { Serial.begin(19200); // Establish conection with IDE's Serial Monitor // Init communication with GSM/GPRS shield (on pin 7 and 8) gsm.begin("1234");// Sim card pinCode } void loop() { gsm.execute(); unsigned long currentMillis; if( gsm.isCallReady() ){ // Start Call Serial.println( "Initiating Call" ); if( gsm.call( "+32999887766" ) ) Serial.println( "Call initiated" ); else { Serial.println( "Call refused!" ); while( true ) ; // program end } // Wait a time because isCalling() is also true while // remote host is ringing Serial.println( "wait 8 sec to establish communication" ); delay( 8000 ); // Is the voice call established? if( not( gsm.isCalling() ) ){ Serial.println( "User did not responded to call" ); while( true ); // program end } Serial.println( "Call established (or still ringing)." ); // 15 seconds OR communcation ends by Host Serial.println( " wait end of call by host OR 15 sec max" ); currentMillis = millis(); while( gsm.isCalling() && ((millis()-currentMillis) < 15000) ) delay(200); // If still communicating then ENDS THE CALL if( gsm.isCalling() ) { Serial.println( "Still under call... HANG UP communication by software" ); if( gsm.hangUp() ) Serial.println( "Hang-Up accepted" ); else Serial.println( "Hang-Up refused!" ); } else Serial.println( "Remote host did HANG-UP the phone call" ); while( true ); // stop program } // if gsm.isCallReady() }
Le code reste encore facile a suivre... pourtant le processus de communication avec le GPRS est relativement complexe.
Voici ce que le programme retourne comme information
Initiating Call Call initiated wait 8 sec to establish communication Call established (or still ringing). wait end of call by host OR 15 sec max Remote host did HANG-UP the phone call
bonjour, je possède un shield gprs sim 900 et je voudrai un programme me permettant de controler un moteur suite a l'envoi d'un sms . si vous pouviez m'aider :) merci
RépondreSupprimer