GeekOnFire GSM/GPRS Shield Mémo AT
Introduction
Voici quelques petits mémos concernant les commandes AT les plus courantes. Ces dernières seront forcements plus détaillées dans le manuel Ad Hoc des Commandes AT v1.03.
Chaque commande AT se termine par un retour chariot "Carriage Return" correspondant à la touche "Entrée"/"Retour"). Attention donc à la configuration du Moniteur Serie d'Arduino si c'est ce dernier que vous utilisez (Carriage Return + 19200 bauds).
Les commandes AT décritent ci-dessous partent du principe que vous êtes capable de dialoguer avec le module SIM900 à l'aide d'un terminal ou équivalent.
Référez-vous à la documentation relative au sketch Serial Relay (ou son successeur lorsqu'il sera disponible).
Code PIN
A ne surtout pas négliger. La plupart des cartes SIM nécessite la saisie d'un code PIN avant de se connecter sur un réseau mobile.
Si votre carte SIM nécessite l'usage d'un code PIN, le module SIM900 produira spontanément le message "+CPIN: SIM PIN".
Vous pouvez demander le statut relatif au code pin en introduisant la commande "AT+CPIN?". Si le code PIN est correctement introduit, vous recevrez la réponse "+CPIN: READY"
Pour encoder votre code PIN, utilisez la commande AT suivante (en admettant que votre code PIN est 1234):
AT+CPIN=1234
Numéro IMEI
Ce numéro permet d'identifier de façon univoque votre module GSM/GPRS. Vous pouvez l'obtenir sur votre GSM/mobile standard à l'aide du numéro spécial "*#06#".
sur votre GSM shield, cette information est obtenue à l'aide de la commande AT "AT+CGSN"
Statut
Call Ready
"Call Ready" est un message envoyé spontanément par le module SIM900 lorsqu'il est enregistré sur le réseau mobile. Si vous voulez savoir quand votre GPRS est prêt à l'emploi, c'est le message à guetter ;-) .
Appel téléphonique
Pour passer un appel téléphonique, il faut utiliser la commande
Effectuer un appel
Pour effectuer un appel, il faut utiliser la commande "ATD+32499667788;" où vous pouvez clairement identifier le numéro de téléphone.
Durant l'établissement de la communication, le module SIM900 affiche spontanément différentes informations concernant le statut de la communication vocale.
Suivant que la communication soit établie ou refusée, vous pouvez obtenir les messages spontané suivants:
- CONNECT lorsque la communication est établie
- NO CARRIER lorsque l'appel est refusé (appel non décroché et interrompu par l'opérateur)
Si vous n'arrivez pas à établir votre première communication vocale, placez votre carte SIM dans un téléphone normal et effectuez un appel téléphonique. Bon nombre d'opérateurs pirate ce premier appel pour vous forcer à configurer votre numéro de téléphone. Et rein à faire, il vous faudra utiliser un vrai téléphone pour effectuer cette phase de configuration. |
Accepter un Appel
Lorsqu'un appel vocal est en cours d'établissement, le message spontané "RING" est envoyé par le SIM900.
Pour y réponde (décrocher le téléphone), il faut utiliser la commande "ATA"
Interrompre un appel
Pour interrompre un appel téléphonique, il faut utiliser la commande "ATH"
Activité téléphonique
La commande "AT+CPAS" permet de s'informer de l'activité du téléphone.
La réponse consiste généralement en "+CPAS: valeur_statut" ou "+CME ERROR: Code_Erreur".
Les différentes valeurs possible pour valeur_statut sont:
- 0 Prêt
- 2 Inconnu (Réponse aux instructions n'est pas garanti)
- 3 Sonne (Ringing) (capable de répondre aux commandes AT mais le téléphone sonne)
- 4 Appel en cours (capacble de répondre aux commandes AT mais le un appel est en cours)
SMS
Utiliser le Mode Texte
Pour aborder la gestion des messages SMS, le plus simple est encore de les manipuler en mode Texte.
Pour passer en mode de gestion Texte, utilisez la commande "AT+CMGF=1"
Réception d'un SMS
Lorsque le GPRS Shield reçoit un SMS, le module SIM900 envoi spontanément un message similaire à "+CMTI: "SM",21".
+CMTI: servira de détecteur pour identifier la réception du message.
Le 21 indiqué dans l'exemple ci-dessus identifie la position "mémoire" du SIM900 où le message est stocké. Il s'agit d'une information importante.
Limitation mémoire
La carte SIM dispose de 25 emplacements pour stocker les SMS en cours de réception.
Une fois le message traité, l'emplacement mémoire devrait être libéré à l'aide de la commande AT adéquate.
Si vous ne recevez plus les notification +CMTI c'est probablement parce que votre mémoire est saturée (voir notre FAQ pour plus de détails).
Lecture du contenu SMS
Pour lire le contenu d'un SMS, il faut utiliser la commande "AT+CMGR=21".
21 indiquant la position "mémoire" où est stocké le message en question. Cette position à été fournie par le message spontanée "+CMTI:" envoyé par le SIM900
Le module SIM900 réagira à la commande "AT+CMGR=..." produira le résultat suivant:
+CMGR: "REC UNREAD","+32499668899","","12/04/08,14:00:39+08" Love Arduino
Attention, le message arrive en deux (ou plusieurs) lignes distinctes!
Vous pouvez identifier le statut du message (REC UNREAD), le no de l'émetteur (+32499668899) ainsi que la date et l'heure.
Le message quand à lui est des plus explicite, il s'agit de "Love Arduino" :-)
Effacer un message SMS
La commande "AT+CMGD=index" permet d'effacer une message SMS de la mémoire du SIM900. Effacer le contenu d'un message ne modifie en rien la valeur du compteur de message. Les informations du message sont effacées et la mémoire est libérée. Un nouvelle lecture de la position effacée retournera simplement "OK" (sans autre information).
Liste des messages à effacer
Vous pouvez prendre connaissance de la liste des messages effaçable à l'aide de la commande "AT+CMGD=?".
Ce message produit, à titre d'exemple, le résultat suivant:
+CMGD: (1-25),(0-4)
Indiquant que les messages de 1 à 25 peuvent être effacés.
Lister tous les messages
La commande suivante affiche tous les messages stockés dans les emplacements mémoires de la carte SIM.
AT+CMGL="ALL"
Envoi d'un SMS
L'envoi d'un message se fait en envoyant la commande AT suivante:
AT+CMGS="+32499778866"
Sur Arduino, cela se traduirait par le code suivant:
mySerial.print("AT+CMGS=\"+32499778866\"\r");
Note:
- La séquence de caractère \" indique au compilateur qu'il faut inclure une guillemet dans la chaine de caractère.
- La séquence de caractère \r indique au compilateur qu'il faut inclure un retour chariot (CR) dans la chaine de caractère.
Par la suite, le SIM900 attend l'encodage du texte/corps du message (même sur plusieurs lignes). Un message texte peut se terminer par une instruction spécial (seule instruction) sur la dernière ligne du message. Il y a deux instructions différentes utilisable:
- Envoi message = CTRL+Z - séquence d'échappement correspond au caractère 26.
- Abandon message = ESC - séquence d'échappement correspondant au caractère 27.
L'envoi d'un CTRL+Z en se traduirait par le code suivant:
mySerial.print("Bienvenu chez MCHobby!\r"); // Le texte du message delay(1000); mySerial.print(26,BYTE); // Equivalent du Ctrl+Z (fin de texte du SMS) // Sur Arduino 1.0 utiliser plutôt l'instruction //mySerial.write(26);
L'exemple ci-dessus illustre bien qu'il faut un retour chariot sur la dernière ligne du message (le \r derrière MCHobby!) avant d'envoyer le Ctrl+Z.
Envoi d'un SMS avec Serial Relay
Vous pouvez tester plus facilement l'envoi et la réception de SMS en utilisant le moniteur série d'Arduino IDE et Serial Relay.
Serial Relay est programme que vous téléchargez sur votre Arduino et qui sert de relais entre Arduino IDE et votre carte GPRS.
C'est un outil pratique pour tester vos commandes AT en "life".
Chez MC Hobby, nous avons quelque peut amélioré le programme originel de GOF pour le rendre encore plus pratique.
Pour envoyer le CTRL+Z à l'aide du moniteur série, vous pouvez utiliser la séquence ~z que nous avons spécialement mis en place dans notre Serial Relay V2. Cette dernière séquence sera interceptée et transformée en CTRL+Z pour être ensuite envoyée à l'UART du GPRS shield.
Voici un exemple d'envoi de SMS à l'aide du moniteur Serie d'Arduino et de Serial Relay v2
AT+CMGS="+32499778866" MC Hobby love Arduino ~z
Vous pouvez trouver Serial Relay V2.0 (ou une version plus récente) dans le menu en haut à droite des pages Wiki consacrées à notre GPRS shield.
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.