GeekOnFire GSM/GPRS Shield Mémo AT

De MCHobby - Wiki
Révision datée du 24 octobre 2012 à 18:37 par Admin (discussion | contributions) (→‎Effectuer un appel)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

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)

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.