INSA de Toulouse 4 IR RT
Réseaux de mobiles et réseaux sans fil TP Réseaux de mobiles
3G/GPRS shield for Arduino / Raspberry Pi (3G +
GPS)
Présentation et utilisation.
Par Henrick Deschamps, Stagiaire au LAASCNRS. Sous la tutelle de Mme Daniela Dragomirescu.
1. Fonctionnalités 1.1. Électronique 1.2. Radio 1.3. Divers 2. Matériel 2.1. Diagrammes 2.2. Antennes 2.3. Audio 2.3.1. Les connecteurs audio 2.3.2. Le connecteur de casque audio 3. Utilisation 3.1. Modem 3.1.1. PC 3.1.1.1. GNU/Linux 3.1.1.1.1. Installation 3.1.1.1.2. Utilisation 3.1.1.2. Windows 3.1.1.1.1. Installation 3.1.1.1.2. Utilisation 3.1.2. Arduino/Raspberry Pi 3.2. Commandes AT 3.2.1. Présentation des commandes AT 3.2.2. Utilisation des commandes AT 3.2.3. Commandes de bases 3.3. Exemples 3.3.1. Appel vocal 3.3.1.1. Émission 3.3.1.2. Réception 3.3.1.3. Conférence 3.3.1.4. Résumé des commandes 3.3.2. SMS 3.3.2.1. Émission 3.3.2.2. Réception 3.3.2.4. Résumé des commandes 3.3.3. Internet 3.3.3.1. Connexion à l’Internet 3.3.3.1.1. Se connecter 3.3.3.1.2. Obtenir les informations de sa connexion 3.3.3.1.3. Résumé des commandes 3.3.3.2. Email 3.3.3.2.1. Émission
3.3.3.2.2. Résumé des commandes 3.3.3.3. HTTP 3.3.3.3.1. connexion à un serveur http 3.3.3.3.2. Réseumé des commandes 3.3.3.4. UDP/TCP 3.3.3.4.1. Serveur UDP 3.3.3.4.2. Client UDP 3.3.3.4.3. Serveur TCP 3.3.3.4.4. Client TCP 4. Références
1. Fonctionnalités
1.1. Électronique
La partie importante pour le TP en électronique est la présence du module 3G de SIMCOM, le SIM5218.
Ce module est le cerveau du shield 3G/GPRS. Son contrôle se fait via des commandes AT. La liste des commandes AT fournie par le constructeur et transmise par le fournisseur est disponible à cette adresse :
http://www.cookinghacks.com/skin/frontend/default/cooking/pdf/SIM5218_AT_command_manu al.pdf
1.2. Radio
Le SIM5218 est Quadband GSM/GPRS/EDGE/UMTS. Voici la liste de ses gammes de fréquences de fonctionnement et puissances maximum d’émission, selon le constructeur :
● GSM 850MH, EGSM 900MHz, 2W ; ● DCS 1800MHz, PCS1900MHz, 1W ; ● WCMA 2100MHz/1900MHz/850Mz, 0,5W.
Le SIM5218 possède par ailleurs un mode avion permettant de couper tout les modules de communication. Ce qui n’est pas très utile dans le cadre du TP, mais intéressant à savoir.
1.3. Divers
Le shield 3G/GPRS donne accès à de nombreuses fonctionnalités du module SIM5218, parmi lesquelles les plus intéressante pour notre TP : ● Une interface USIM ; ● Une interface High speed USB pour modem ; ● Trois canaux audio ; ● Socquettes TCP et UDP ; ● Les protocoles POP3 et SMTP pour la réception et l’émission d’email.
2. Matériel
2.1. Diagrammes
Voici le diagramme du shield 3G/GPRS issue du site du fournisseur :
Diagramme du shield 3G/GPRS.
2.2. Antennes
Pour pouvoir émettre et recevoir, le shield 3G/GPRS doit être muni d’au moins une antenne. Le module SIM5218 offre 3 connecteurs ULF d’impédance 50 Ω . Un seul nous intéresse. le main antenna connector, situé tout en bas des 3 connecteurs sur le module.
Les trois connecteurs ULF du module SIM5218.
L’External GPRSGSMUMTS Antenna.
Selon le fournisseur, celle ci fonctionne sur les gammes de fréquences 850MHz, 900MHz, 2.1GHz, 1800MHz et 1900MHz. Elle a une impédance de 50 Ω , une polarisation horizontale, et un gain de 2,41dBi.
2.3. Audio
Il existe deux manières différentes d’aborder la question de l’audio dans le shield 3G/GPRS. Soit par les connecteurs audios, soit par le connecteur de casque audio.
2.3.1. Les connecteurs audio
Utiliser les connecteurs audio nécessite un loudspeaker, un speaker, et un microphone.
loudspeaker, speaker, et microphone.
Ceux ci viennent se placer dans leurs emplacement respectif, décrit dans le diagramme du shield (cf. 2.1.), la tension positive vers du coté de l'extérieur de la carte.
loudspeaker, speaker, et microphone connecté au shield.
2.3.2. Le connecteur de casque audio
Plus simple, il suffit de placer dans le headset connector un casque audio. Ce casque doit par ailleurs posséder un microphone.
3. Utilisation
3.1. Modem
3.1.1. PC
Le shield peut être utilisé comme modem 3G USB à la vitesse de 2Mbps en downlink et 0,7Mbps en uplink.
3.1.1.1. GNU/Linux 3.1.1.1.1. Installation
Il faut tout d’abord lancer la commande suivante :
$ watch 'dmesg | tail -20'
Après avoir brancher le périphérique, celui ci devrait apparaître. S’il n’est pas reconnu, alors il faut installer le driver. Pour commencer il faut afficher la liste des périphérique usb connecté.
$ lsusb
Une ligne devrait indiqué Qualcomm, Inc. avec comme numéro de vendeur 0x05c6et produit 0xf006. Il faut les ajouter aux modules à charger au lancement.
# echo "usbserial vendor=0x05c6 product=0xf006 " >> /etc/modules
3.1.1.1.2. Utilisation
Les deux logiciels les plus connus sous GNU/Linux sont Minicomet Cutecom.Tout deux ont un fonctionnement similaire, Minicométant pour les aficionados de la ligne de commande et Cutecom pour ceux qui préfère les GUI. Il faut les configurer avec les paramètres suivants :
● Device : /dev/ttyUSBx (x étant le numéro de l’USB où est le modem) ; ● Baud rate : 115200 ;
● Stop bits : 1 ; ● Flow control : none ; ● Parity : none. Il faut aussi vérifier que le <CR> est bien rajouté à chaque fin de ligne. 3.1.1.2. Windows 3.1.1.1.1. Installation Il faut télécharger le pilote de périphérique présent à cette adresse :
www.cookinghacks.com/skin/frontend/default/cooking/pdf/WindowsDrivers_SIM5218_2.4.
00.rar
Pour l’installer, il faut aller dans le menu d’administration des périphériques, rechercher dans la catégorie des autres périphériques ceux de SimTech SIM5218, et pour chacun, mettre à jour le pilote.
3.1.1.1.2. Utilisation
Le logiciel HyperTerminalpermet de contrôler le SIM5218. Il est à configurer de la même manière que les logiciels sous linux.
3.1.2. Arduino/Raspberry Pi
Le shield peutêtre connecté a un Raspberry Pi ou un arduino (ou n’importe quel dérivé de ces derniers possédant le serial software) à un débit maximum en downlink de 115200 bauds, et en uplink de 30000 bauds.
Note : Sur les Raspberry Pi peuvent être installé des systèmes d’exploitations GNU/Linux, tel que Raspbian ou ArchlinuxARM. Ceux ci permettent de manipuler le modem comme dans le cas d’un PC.
3.2. Commandes AT
http://www.cookinghacks.com/skin/frontend/default/cooking/pdf/SIM5218_AT_command_manu al.pdf
3.2.1. Présentation des commandes AT
Les commandes AT sont des commandes que l’on peut directement envoyer à un modem pour le contrôler ou le surveiller. Sa terminologie vient de l’abréviation de ATtention, et elles sont quelquefois appelé commandes Hayes, en hommage au premier modem contenant ce type de jeu de commande.
3.2.2. Utilisation des commandes AT
Le préfixe AT est présent au début de chaque commande, à l’exception de A/ et +++. Le caractère ‘<CR>’ est présent à la fin de chaque ligne. Plusieur commandes peuvent être envoyé en une ligne en utilisant ‘;’. Le format générale d’une commande peut être séparé en quatre catégorie. Type Type de commande Teste AT+<X>=?<CR> Lire AT+<X>?<CR> Écrire AT+<X>=<N><CR> Executer AT+<X><CR>
3.2.3. Commandes de bases
Voici une liste de commande de base indispensable à la manipulation des commandes AT, un peu l’équivalent des cd, ls et pwd d’Unix. Dans la suite, <CR> ne sera plus indiqué pour plus de lisibilité, mais il reste nécessaire.
Commande AT Réponse Utilisation
AT OK Teste la communication. ATI Manufacturer:<manufacturer> Model:<model> Revision:<revision> QCN: [<qcn_type>] IMEI:<sn>
+GCAP: list of<name>s OK
Obtenir les information d’identification d’un produit.
ATE OK Active/Désactive le retour. AT+CGMI <manufacturer>
OK Obtenir les information duconstructeur.
AT+CGMM <model>
OK Obtenir les information dumodèle.
AT+CGMR <revision>
OK Obtenir les information dufirmware.
AT+CPIN=<pin> OK ERROR
+CME ERROR:<err>
Entrer le code pin, sous la forme “0000” (ne pas oublier les guillemets).
A/ Dépend de la dernière
commande Répètecommande. la dernière
AT+CSQ +CSQ:<rssi>,<ber> OK
ERROR
Information sur la qualité du signal.
AT+CRUS +CRUS: Active SET,<ActiveSET Cells Num>[,<ActiveSET Cell1 SC>,
<ActiveSET Cell1 Freq>, <ActiveSET Cell1 SSC>, <ActiveSET Cell1 Sttd>, <ActiveSET Cell1 TotEcio>, <ActiveSET Cell1 Ecio>, <ActiveSET Cell1 Rscp>, <UTMS_SETS Cell TPC>, <UTMS_SETS Cell SecCpichOvsf>, <ActiveSET Cell1 WinSize>[...]]
+CRUS: Sync Neighbor SET, <SyncSET Cells Num>[, <SyncSET Cell1 PSC>, <SyncSET Cell1 Freq>, < SyncSET Cell1 SSC>, <SyncSET Cell1 Sttd>, < SyncSET Cell1 TotEcio>, < SyncSET Cell1 Ecio>, < SyncSET Cell1 Rscp>, < SyncSET Cell1
WinSize>[...]]
+CRUS: Async Neighbor SET,
Affiche les information de la cellule en WCDMA.
<AsyncSET Cells Num>[, <AsyncSET Cell1 PSC>, < AsyncSET Cell1 Freq>, < AsyncSET Cell1 SSC>, < AsyncSET Cell1 Sttd>, < AsyncSET Cell1 TotEcio>, < AsyncSET Cell1 Ecio>, < AsyncSET Cell1 Rscp>, <AsyncSET Cell1
WinSize>[...]] OK
3.3. Exemples
Rien de mieux que la pratique pour comprendre la théorie. Voici quelques exemples pratiques permettant de s'entraîner. Pour chaque partie, un petit exemple d’utilisation le plus simple est fourni. Un certain nombre de commande fournies dans le rappel des commandes permettent d’aller plus loin dans les exemples.
3.3.1. Appel vocal
3.3.1.1. Émission
ATD**********; OK
VOICE CALL: BEGIN AT+CVHU=0
OK ATH
VOICE CALL: END: T OK 3.3.1.2. Réception ATA OK AT+CVHU=0 OK ATH
VOICE CALL: END: T OK
Avec autoréponse :
ATS0=001 OK
VOICE CALL: BEGIN AT+CVHU=0
OK ATH
VOICE CALL: END: T OK
3.3.1.3. Conférence
ATD**********; OK
VOICE CALL: BEGIN ATD**********; OK
VOICE CALL: BEGIN AT+CHLD=3
OK
AT+CHLD=1 OK
ATH
VOICE CALL: END: T OK
3.3.1.4. Résumé des commandes
Commande AT Réponse Description
ATD<num>; OK
VOICE CALL: BEGIN NO CARRIER
Passer un appel.
ATA OK
VOICE CALL: BEGIN NO CARRIER
Répondre à un appel.
AT+CVHU=<mode> OK ERROR
Préparer la fin d’un appel. (mode = 0 pour activer, 1 pour désactiver).
ATH if AT+CVHU=0:
VOICE CALL: END: <time> OK
OK
ATS0=<n> OK Programme l’autoréponse. 000
pour désactiver 001255 pour activer et répondre a la sonnerie n.
AT+CLVL=<n> OK
ERROR
Régler le niveau du volume du
loudspeaker
AT+CMIC=<n> OK
ERROR
Régler le niveau du volume du
microphone
AT+CRSL=<n> OK
ERROR
Régler le niveau du volume de la sonnerie.
AT+CNSM=<mode> OK ERROR
Active ou désactive la suppression du son (mode = 0 pour désactiver, 1 pour activer)
AT+CHLD=<n> OK
ERROR
+CME ERROR: <err>
Gère les services relatifs aux appels, comme le mode conférence par exemple. n = 0 Termine tout les appels en attentes.
n = 1 Termine tout les appels actifs et accepte ceux en attentes ou non décrochés. n = 1X Termine l’appel X. n = 2 Place tout les appels actifs en attente et accepte ceux en attentes ou non décrochés.
n = 2X Place l’appel X en attente.
n = 3 Ajoute les appels en attentes aux appels actifs. n = 4 Connect deux appels et coupe la communication en les utilisateurs de manière simultanée.
3.3.2. SMS
Avant d’entreprendre l’envoie ou la réception de SMS, il faut changer de format. AT+CMGF=1 OK3.3.2.1. Émission Pour envoyer le sms contenant Text here au numéro xxxx : AT+CMGS=”xxxx” >Text here <^Z> +CMGS:Text length OK 3.3.2.2. Réception Pour lire le sms AT+CNMI=2,1 OK +CMTI:”SM”,X AT+CMGR=X … Consultation des messages reçus : AT+CMGL=”ALL” …
3.3.2.4. Résumé des commandes
Commande AT Réponse Description
AT+CMGF=<mode> OK Choix du format des SMS.
mode = 1 pour le mode texte.
AT+CMNI=<mode> OK ERROR
+CME ERROR: <err>
Indication de l’arrivé de nouveaux messages. mode = 2 pour activer.
AT+CMGR=<index> dépend de AT+CMGF et du type de message.
Lire un message.
AT+CMGD=<index> OK ERROR
+CME ERROR: <err>
Supprimer un message.
de message.
OK ERROR
+CME ERROR: <err> AT+CMGS=”<num>”<CR> Text <^Z> +CMGS:<mr> OK ERROR
+CME ERROR: <err>
Envoyer un message.
AT+CMGL=<stat> dépend de AT+CMGF et du type de message.
Lister les messages.
3.3.3. Internet
3.3.3.1. Connexion à l’Internet 3.3.3.1.1. Se connecter
AT+CGSOCKCONT=1, “IP”, “apn” OK
AT+CSOCKAUTH=1,1,”login”,”password” OK
3.3.3.1.2. Obtenir les informations de sa connexion
AT+CPSI?
+CPSI:<System Mode>, <Operation Mode>, <MCC>-<MNC>,<LAC>,<Cell ID>,<Frequency Band>, <PSC>, <Freq>,<SSC>,<EC/IO>,< RSCP >,<Qual>,<RX Level>
OK AT+CNSMOD? +CNSMOD:<n>,<stat> OK AT+IPADDR +IPADDR:<ip_address> OK
3.3.3.1.3. Résumé des commandes
AT+CGSOCKCONT=<cid>[,<PDP_typ e>[,<APN>[,<PDP_addr>[,<d_com p>[,<h_comp>]]]]]
OK ERROR
Définie les valeurs des paramètre de contexte de la socquette PDP. AT+CSOCKAUTH=1,1,”login”,”pas sword” OK ERROR +CME ERROR:<err>
Définie le type d’authentification pour la connexion PDPIP AT+CPSI? Cellule 2G +CPSI:<System Mode>,<Operation Mode>,<Location AreaID>,<CellID>,<Absolute RFCh Num>,<RX Level>,<TrackLO Adjust>,<C1-C2> OK Cellule 3G +CPSI:<System Mode>, <Operation Mode>, <MCC>-<MNC>,<LAC>,<Cell ID>,<Frequency Band>, <PSC>, <Freq>,<SSC>,<EC/IO>,< RSCP >,<Qual>,<RX Level> OK ERROR
Requête des informations sur l’UE.
AT+CNSMOD? +CNSMOD:<n>,<stat> OK
ERROR
+CME ERROR:<err>
Retourne le mode actuel du réseau, peut être paramétré pour faire des rapports automatiques. AT+IPADDR +IPADDR:<ip_address> OK ERROR +IP ERROR:<err> Retourne l’addresse IP de la socquette PDP 3.3.3.2. E-mail 3.3.3.2.1. Émission
AT+SMTPSRV=”smtp.xyz.com”, E OK
AT+SMTPAUTH=1,”login”,”mdp” OK
AT+SMTPFROM=”sndr@sndr.com”, “sndr_name” OK
AT+SMTPRCPT=0,0,”rcpt@rcpt.com”, “rcpt_name_to” OK AT+SMTPSUB=”subjetc” OK AT+SMTPBODY=”body” OK AT+SMTPSEND +SMTP:OK OK +SMTP:SUCCESS
3.3.3.2.2. Résumé des commandes
Commande AT Réponse Description
AT+SMTPSRV=<server>[,<port>] OK Initie la connexion a un serveur
SMTP.
AT+SMTPAUTH=<flag>[,<user>,<p wd>]
OK Authentification auprès du
serveur SMTP.
AT+SMTPFROM=<saddr>[,<sname>] OK Déclaration de l’adresse et du
nom de l’émetteur.
AT+SMTPRCPT=<kind>[,<index>[, <addr>[,<name>]]]
OK Déclare les adresses du ou
des récepteurs. kind = 0 to: kind = 1 cc: kind = 2 bcc: AT+SMTPSUB=<subject> OK Sujet du message. AT+SMTPBODY=<body> OK Corps du message. AT+SMTPSEND +SMTP:OK OK +SMTP:<code> +SMTP:<code> ERROR
Initie la session et envoie le message.
3.3.3.3.1. connexion à un serveur http
AT+CHTTPACT=”www.xyz.com”,E +CHTTPACT: REQUEST
GET
http://www.xyz.com/index.html HTTP/1.1 Host:
www.xyz.com
User-Agent: MY WEB AGENT Content-Length: X <Ctrl+Z> OK +CHTTPACT: DATA, Y HTTP/1.1 200 OK Content-Type: text/html Content-Language: lg-LG Content-Length: Z
Date: Day, n Mounth Year hr:mn:sc GMT Connection: Close Proxy-Connection: Close <html> <header>header</header> <body> body </body> +CHTTPACT: 0
3.3.3.3.2. Réseumé des commandes
Commande AT Réponse Description
AT+CHTTPACT=”<@>”,<port> +CHTTPACT:REQUEST +CHTTPACT:DATA,<len> … … … +CHTTPACT:DATA,<len> +CHTTPACT:0 +CME ERROR +CHTTPACT:REQUEST +CME ERROR +CHTTPACT:REQUEST +CHTTPACT:<err> Lance une opération HTTP.
+CHTTPACT:REQUEST +CHTTPACT:DATA,<len> … … … +CHTTPACT:DATA,<len> +CHTTPACT:<err> 3.3.3.4. UDP/TCP 3.3.3.4.1. Serveur UDP AT+NETOPEN=”UDP”,P Network opened OK AT+NETCLOSE Network closed OK 3.3.3.4.2. Client UDP T+NETOPEN=”UDP”,P Network opened OK AT+UDPSEND=X,”A.B.C.D”,E >TexteDeTailleX +UDPSEND:X, X AT+NETCLOSE Network closed OK 3.3.3.4.3. Serveur TCP AT+NETOPEN=”TCP”,P Network opened OK AT+SERVERSTART OKAT+LISTCLIENT
NO.0 client : A.B.C.D E NO.1 client : F.G.H.I J NO.2 client : K.L.M.N O AT+ACTCLIENT=0
OK
>TexteDeTailleX +TCWRITE:X, X OK Send ok AT+CLOSECLIENT=0 OK AT+NETCLOSE Network closed OK 3.3.3.4.4. Client TCP AT+NETOPEN=”TCP”,P Network opened OK AT+TCPCONNECT=”A.B.C.D”,E OK AT+TCPWRITE=X >TexteDeTailleX +TCWRITE:X, X OK Send ok AT+NETCLOSE Network closed OK
3.3.3.4.5. Résumé des commandes
Commande AT Réponse Description
AT+NETOPEN=<type>,<port>[,<mo de>] Network opened OK +IP ERROR:<err> ERROR +CME ERROR:<err> Ouvre un port. type = “TCP” ou “UDP” mode = 0 : monoclient ; mode = 1 : multiclient. AT+NETCLOSE OK +IP ERROR:<err> ERROR ERROR Ferme le port. AT+UPDSEND=<length>,<@server> ,<port><CR> data +UDPSEND:<reqSendLength>,<cnf SendLength> OK Envoie des données UDP.
<^Z> +IP ERROR:<err> ERROR ERROR AT+TCPCONNECT=<@server>,<port > Connect ok OK +IP ERROR:<err> ERROR Connect fail ERROR ERROR Connection à un serveur TCP. AT+TCPWRITE=<length><CR> data <^Z> +TCPWRITE:<reqSendLength>,<cn fSendLength> Send ok +IP ERROR:<err> ERROR ERROR Envoie des données TCP. AT+SERVERSTART OK +IP ERROR:<err> ERROR Lance le serveur. AT+LISTCLIENT [+LISTCLIENT:<index>,<@IP,<po rt>] … [+LISTCLIENT:<index>,<@IP,<po rt>] OK +IP ERROR:<err> ERROR Affiche la liste des clients connecté. AT+ACTCLIENT=X OK +IP ERROR:<err> ERROR ERROR Active le client X. AT+CLOSECLIENT=X OK +IP ERROR:<err> ERROR Déconnecte le client X.