Le module GSM SIM900A donne à un montage le moyen de communiquer par le réseau mobile : envoyer un SMS d’alerte, recevoir un ordre par SMS, ou transmettre des mesures vers Internet par GPRS. Contrairement à un module Wi-Fi, il ne dépend ni d’une box ni d’un réseau local : il lui suffit d’une carte SIM et de la couverture mobile. C’est ce qui en fait le module des alarmes, des compteurs isolés et des automates installés loin de tout.
La carte porte le module SIMCom SIM900A, un lecteur de carte SIM plein format et un connecteur d’antenne SMA. Deux fils suffisent pour la liaison série avec l’Arduino, deux de plus pour l’alimentation en 5 V. Le module se pilote par commandes AT : les mêmes commandes depuis vingt ans, documentées partout et stables.
À quoi sert un module GSM ?
- Alerte par SMS — une détection, une coupure de courant, une porte ouverte : le montage envoie un message sur votre téléphone.
- Commande par SMS — vous répondez « ON » et le montage enclenche un relais, une pompe, un éclairage.
- Relevé de mesures par GPRS — le module envoie températures, niveaux ou compteurs vers un serveur, sans Wi-Fi à proximité.
- Appel de notification — un appel sortant suffit quand un SMS se fait attendre.
- Emplacement sans Internet — atelier, champ, cave, local technique : là où le Wi-Fi ne va pas.
Caractéristiques techniques
| Module | SIMCom SIM900A, soudé sur une carte d’extension à lecteur de carte SIM |
|---|---|
| Réseau | GSM/GPRS 2G — bandes EGSM 900 MHz et DCS 1800 MHz |
| GPRS | Multi-slot classe 10, station mobile classe B, codages CS-1 à CS-4 — jusqu’à 85,6 kbit/s en réception, 42,8 kbit/s en émission |
| Puissance d’émission | Classe 4 (2 W) en 900 MHz, classe 1 (1 W) en 1800 MHz |
| Commandes | AT (GSM 07.07 et 07.05, extensions SIMCom) — pile TCP/IP intégrée |
| Liaison série | TTL, compatible 3,3 V et 5 V — 9600 bps par défaut |
| Alimentation de la carte | 5 V continu — 1 A disponible au minimum, 2 A en pointe à l’émission |
| Carte SIM | Support plein format, verrou mécanique |
| Antenne | Connecteur SMA — une antenne GSM 900/1800 s’y visse |
| Veille | Environ 1,5 mA pour le module seul, avec la commande AT+CSCLK=1 |
| Dimensions du module | 24 × 24 × 3 mm, 3,4 g |
| Température de service | −40 °C à +85 °C |
Câblage
Module VCC | → alimentation 5 V dédiée, capable de fournir 1 A ou plus |
|---|---|
Module GND | → masse de l’alimentation et GND de l’Arduino : la même masse pour les deux |
Module TXD | → RX de l’Arduino, D10 dans l’exemple plus bas |
Module RXD | → TX de l’Arduino, D11 |
| Antenne | → vissée sur le connecteur SMA avant la mise sous tension |
| Carte SIM | → insérée dans son support, verrou coulissé jusqu’au contact |
Le croisement des deux lignes série est normal : la sortie de l’un va sur l’entrée de l’autre. Une inversion TXD / RXD est la cause la plus fréquente d’un module qui reste muet, et c’est la première chose à contrôler. Les libellés imprimés sur la carte peuvent varier d’une révision à l’autre — repérez la broche qui sort du module et faites-la aller sur RX.
N’alimentez pas ce module depuis la broche 5 V de l’Arduino. Pendant l’émission, le SIM900A appelle jusqu’à 2 A par courtes impulsions. Une carte Arduino — surtout alimentée par USB — ne peut pas les fournir : la tension s’effondre, la carte se réinitialise et le module perd le réseau au moment même de l’envoi. Utilisez une alimentation 5 V d’au moins 1 A, la masse reliée à celle de l’Arduino.
Trois points à écarter avant de chercher une panne
La couverture 2G
Le SIM900A est un module 2G : il se connecte au réseau GSM 900/1800. Vérifiez que votre opérateur couvre bien le lieu d’installation en 2G et que la carte SIM est active. C’est le premier point à écarter, parce que rien dans le montage ne peut y remédier.
Le code PIN de la carte SIM
Retirez la demande de code PIN depuis un téléphone avant de la mettre dans le module : un SIM900A ne saisit pas de code au démarrage, et une carte restée verrouillée n’accrochera jamais le réseau. Un support qui n’est pas parfaitement verrouillé produit le même symptôme.
L’antenne
Ne mettez jamais le module sous tension sans antenne vissée, et éloignez-la du reste du montage : un fil d’antenne collé contre un plan métallique ou un boîtier fermé suffit à empêcher l’enregistrement sur le réseau.
Mini-projet : une alerte SMS à chaque passage
Le montage tient sur une plaque d’essai et se fait en une demi-heure : un capteur de mouvement surveille la pièce, l’Arduino interroge le module, et un SMS part vers votre téléphone dès qu’une présence est détectée.
Ce qu’il faut
| La détection | Capteur de mouvement infrarouge PIR |
|---|---|
| Le cerveau | Uno R3 + câble USB |
| La communication | Le module SIM900A de cette page, avec une carte SIM active |
| L’alimentation | Une alimentation 5 V d’au moins 1 A, avec masse commune avec l’Arduino |
| Le support | Plaque d’essai 830 points |
| Les liaisons | 10 × fil mâle-femelle |
Le câblage
Module VCC | → alimentation 5 V (1 A minimum) |
|---|---|
Module GND | → masse de l’alimentation et GND de l’Arduino |
Module TXD | → Arduino D10 |
Module RXD | → Arduino D11 |
Capteur PIR VCC | → Arduino 5V |
Capteur PIR OUT | → Arduino D2 |
Capteur PIR GND | → Arduino GND |
Le capteur PIR se contente du 5 V de la carte : sa consommation est négligeable à côté de celle du module GSM, qui est le seul à mériter une alimentation à part.
Le programme
À copier dans l’IDE Arduino, puis à téléverser sur la carte. Remplacez d’abord le numéro du destinataire :
/*
* Alerte SMS - module GSM SIM900A et capteur de mouvement PIR
* Carte : Arduino Uno R3
* Montage : PIR sur D2, module GSM en liaison serie logicielle sur D10 et D11
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "SoftwareSerial.h"
const byte PIN_PIR = 2; // sortie OUT du capteur de mouvement
const byte PIN_GSM_RX = 10; // RX de l'Arduino : recoit le TXD du module
const byte PIN_GSM_TX = 11; // TX de l'Arduino : envoie vers le RXD du module
// Numero du destinataire, au format international (212 pour le Maroc).
// A remplacer par le votre avant de televerser.
const char NUMERO[] = "2126XXXXXXXX";
SoftwareSerial gsm(PIN_GSM_RX, PIN_GSM_TX);
void setup() {
pinMode(PIN_PIR, INPUT);
Serial.begin(9600); // moniteur serie, pour suivre ce qui se passe
gsm.begin(9600); // le SIM900A sort d'usine a 9600 bps
// Le module met quelques secondes a s'enregistrer sur le reseau.
delay(10000);
envoyerSms("Montage pret");
}
void loop() {
// digitalRead renvoie HIGH quand le capteur detecte un mouvement
if (digitalRead(PIN_PIR) == HIGH) {
envoyerSms("Mouvement detecte");
delay(60000); // au maximum une alerte par minute
}
delay(50); // inutile d'interroger le capteur plus souvent
}
void envoyerSms(const char *texte) {
char guillemet = 34; // 34 = code ASCII du guillemet
gsm.print("AT+CMGF=1"); // mode texte, plus simple que le mode PDU
gsm.write(13); // 13 = code ASCII du retour chariot
delay(500);
gsm.print("AT+CMGS="); // destinataire, entre guillemets
gsm.print(guillemet);
gsm.print(NUMERO);
gsm.print(guillemet);
gsm.write(13);
delay(1000);
gsm.print(texte); // le corps du message
gsm.write(26); // 26 = code ASCII de Ctrl+Z : envoi
delay(5000);
}Comment ça marche
SoftwareSerialfait parler l’Arduino sur deux broches ordinaires : la liaison matérielle reste libre pour le moniteur série, où vous suivez ce que le programme raconte pendant les essais.- Chaque commande AT se termine par un retour chariot, écrit ici en clair (
gsm.write(13)). Sans lui, le module ne répond rien — c’est la deuxième cause de module muet après l’inversion des lignes. AT+CMGF=1choisit le mode texte pour les SMS, puisAT+CMGS=annonce le destinataire. Le message s’écrit ensuite en clair, et le caractèreCtrl+Z(gsm.write(26)) déclenche l’envoi.- Le guillemet est écrit par son code (
34) plutôt que par un caractère d’échappement : c’est plus lisible, et le programme reste identique d’un éditeur à l’autre. - Le délai de 10 secondes au démarrage laisse le module s’enregistrer sur le réseau. Il envoie ensuite un premier message de confirmation : si vous le recevez, toute la chaîne fonctionne.
- Après une alerte, le programme attend une minute. Sans ce délai, un passage devant le capteur — actif plusieurs secondes — déclencherait une rafale de messages.
Variante : le module quadri-bande SIM900
Le SIM900A travaille sur les deux bandes 900 et 1800 MHz, celles du Maroc et de l’Europe. Pour un montage destiné à voyager hors de cette zone, le Module GSM/GPRS SIM900 est la version quadri-bande — 850, 900, 1800 et 1900 MHz. Le principe, le câblage et le programme de cette page restent valables ; seules quelques commandes AT se comportent différemment.
Questions fréquentes
Mon module ne répond rien. Par quoi commencer ?
Trois causes, dans cet ordre : une alimentation qui ne fournit pas 1 A, un croisement des lignes série non respecté (le TXD du module va sur le RX de l’Arduino), et une masse qui n’est pas commune entre l’alimentation et la carte. Vérifiez aussi la vitesse : le module communique à 9600 bps. Si la LED de la carte clignote rapidement sans jamais ralentir, alors le module n’a pas trouvé le réseau : le problème est côté carte SIM ou couverture, pas côté liaison série.
Faut-il une carte SIM particulière ?
Une carte prépayée ordinaire suffit pour les SMS. Un forfait avec data est nécessaire si vous utilisez le GPRS — l’envoi d’un SMS, lui, ne consomme pas de données. Une nano-SIM dans un adaptateur fonctionne, à condition que l’adaptateur tienne bien en place : un mauvais contact sur le support est une cause classique de démarrage sans réseau.
Peut-on alimenter le montage sur batterie ?
Oui, à condition que la source tienne les pointes de courant. Le module consomme très peu au repos mais appelle jusqu’à 2 A pendant l’émission : prévoyez une alimentation 5 V d’au moins 1 A, ou un régulateur capable de débiter ce courant. Une source trop faible se traduit toujours par le même symptôme : le module redémarre à chaque envoi.
Est-ce compatible avec un ESP32 ou un ESP8266 ?
Oui. La liaison série du module accepte les niveaux TTL de 3,3 V comme de 5 V : rien à adapter de ce côté. L’alimentation, en revanche, ne peut pas venir de ces cartes — les pointes de 2 A les font chuter. Gardez une alimentation 5 V séparée pour le module, avec la masse en commun.
Peut-on téléphoner avec ce module ?
Le circuit SIM900A sait aussi gérer la voix, mais ce n’est pas l’usage de cette carte : elle est faite pour les SMS et la transmission de données, qui ne demandent ni micro ni casque. Pour un interphone, choisissez un module prévu pour la voix.
Combien de temps pour envoyer un SMS ?
Comptez 5 à 20 secondes après la mise sous tension pour l’enregistrement sur le réseau, puis quelques secondes par message. Le programme attend 10 secondes au démarrage : augmentez ce délai si votre module est lent à s’enregistrer, vous verrez la différence sur le message de confirmation.
À combiner avec
Si vous partez de zéro, le KIT Starter apporte la carte Uno R3, la plaque d’essai, les fils, les LED et les résistances : il ne manque plus que ce module et une carte SIM pour refaire le montage de cette page. Et si vous voulez la même fonction sans écrire une ligne de programme, le relais intelligent par GSM est un boîtier prêt à l’emploi que l’on commande par SMS.










