Utiliser un shield GSM/GPRS sur un ordinateur

Ce week-end, nous voulions tenter d'utiliser notre shield GPRS directement depuis un ordinateur... histoire de voir si nous pourrions ensuite l'utiliser avec un Raspberry Pi.
Nos premiers résultats avec PC sont probant... et donc, voici un nouveau tutoriel :-)


Utilisation d'un shield GPRS sur un PC - Tutoriel MCHobby
Nous avons utiliser un câble convertisseur USB vers TTL série pour piloter le SIM900 à partir d'un ordinateur en nous connectant directement sur l'UART du SIM900.

Si vous vous posez des questions au sujet du shield GPRS/GSM de GeekOnFire, notre tutoriel Arduino pour ce shield GSM/GPRS regorge d'informations utiles concernant ce module, les commandes AT, etc. Pensez à le consulter, il répondra probablement à l'une de vos questions.

Branchement
Voici un extrait de notre tutoriel présentant le raccordement sur l'UART
connexion directs sur l'UART du GSM/GPRS de GeekOnFire
Ne reste plus qu'à installer les pilotes du convertisseur USB vers Série TLL (installation requise pour Mac et Windonws) et identifier le port série (voir tuto pour linux).
Sous Linux/Debian/Ubuntu/Raspberry, le convertisseur est reconnu nativement, ce qui facilite vraiment la tâche.

Tester la communication
de ce côté la, le plus simple est encore d'utiliser le logiciel Multi-Platforme PuTTY.
Une fois configurer correctement et le GPRS allumé, la communication est établie directement avec l'UART de SIM900.
Configuration du canal de communication dans PuTTY

Il ne vous reste plus qu'a envoyer des commandes AT (voir nos ressources) directement depuis votre clavier... et cela fonctionne
Console Putty - réponse du SIM900
En Python
Maintenant que nous savons communiquer directement avec le SIM900 (voir aussi notre exemple "A la main" pour tester quelques commandes), ce qui serait vraiment bien, c'est de pouvoir le faire à l'aide d'un programme.

Comme nous sommes orienté Open-Source et Raspberry, nous avons opté d’emblée pour Python.
Voici donc un programme rudimentaire (n'oubliez pas de déconnecter PuTTY) qui envoi un AT (soit un "SIM900, es tu la?") à laquelle le GPRS répond "OK"... puisqu'il est là :-)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  FirstRead.py - Programme rudimentaire pour tester la communication 
#                 avec le SIM900 en Python
#
#  Envoi une commande AT sur le SIM900 et attend une réponse (entre 
#  autre le OK).
#
#  Le module SIM900 doit donc être actif, le plus simple est de le 
#  préparer et l'initialiser avec PuTTY puis de déconnecter Putty 
#  pour permettre a ce charmant programme de faire ses essai.
#  
#  Copyright 2013 Meurisse D. pour MCHobby.be
#     MCHobby - vente de kit et composant pour Arduino/Raspberry Pi, etc 
#      CC-BY-SA   
#  
import serial,time

def main():

 ser = serial.Serial( 
   port = '/dev/ttyUSB0', \
   baudrate = 19200, \
   parity=serial.PARITY_NONE, \
   stopbits=serial.STOPBITS_ONE, \
   bytesize = serial.EIGHTBITS, \
   timeout = 0.100 )

 ser.open()
 print( "connected to: " + ser.portstr )
 
 ser.write( "AT"+chr(13) )
 
 line = ser.readline()
 print( line )
 line = ser.readline()
 print( line )
 line = ser.readline()
 print( line )
 line = ser.readline()
 print( line )
 line = ser.readline()
 print( line )

 return 0

if __name__ == '__main__':
 main()

Ce qui produit la réponse suivante une fois le programme Python démarré
connected to: /dev/ttyUSB0
AT

OK




Bon, il n'y a pas de quoi fouetter un chat... mais avec cela, nous savons que nous pouvons nous lancer dans l'aventure en toute sérénité.

Et pour Raspberry-Pi?
Puisque cela fonctionne parfaitement sur notre système Linux (Linux Mint, dérivé d'Ubuntu), nous avons fait quelques tests avec notre Raspberry.

Tous les éléments du tutoriel fonctionnent parfaitement sur notre Pi. Cependant nous avons rencontré un problème de stabilité dans l'environnement graphique.

La raison:
le module SIM900 communique à 19200 bauds sur le port USB... c'est rapide, trop même pour Raspberry qui dispose d'une faiblesse au niveau de sa stack USB (voir notre article consacré à ce point).
Conséquences:
blocage USB, blocage Ethernet (qui utilise aussi la stack USB) et blocage du clavier (lui aussi en USB).

Nous avons donc deux options à tester:
  1. Ralentir le débit du SIM à 9600 bauds... pour moins stresser la stack USB du PI
  2. Passer en communication matérielle série directement sur le GPIO du Raspberry PI (UART SIM900 <--> UART Raspberry PI) en espérant qu'il tienne mieux le coup.
Tutoriel complet
cet article ne présente uniquement quelques éléments clés de notre tuto... vous trouverez tout le teste sur notre wiki.

MCHobby investi du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.


Où acheter
Pour réaliser ce tutoriel et l'utiliser sur votre ordinateur, nous avons utilisé le matériel suivant: