La livraison gratuite de plus de 1000DH pour les particuliers
Module GSM GPRS SIM900L
280.00 د.م.
SIM900L is a popular SIM module that easily used with Arduino. This has 5V pin enabled for power that make this module easier to use than the regular SIM900L.
31 en stock
Tutoriel : Utilisation Module GSM/GPRS SIM900L avec ARDUINO
INTRODUCTION:
Le SIM900 est un module GSM/GPRS, lequel combiné à une carte Arduino ou Raspberry Pi permet d’émettre ou de recevoir des appels téléphoniques, des SMS, et des MMS avec des images stockées dans une carte SD ou micro-SD.
Le SIM900 est utilisé dans des applications de contrôle à distance, de domotique, et aussi de sécurité.
Dans ce tutoriel, nous allons:
- Envoyer et recevoir de SMS
Présentation du module:
Etape 1: Liste des composants
- Arduino Mega 2560
- Module GSM/GPRS SIM900
- Lecteur de carte SD
- Câbles Arduino 10cm ou 20cm
- 1 carte SD ou micro SD (16Go max)
- 1 carte SIM 4g (nous utilisons une SIM La poste mobile pour le tutoriel)
Etape 2: Shémas de câblage
ARDUINO MEGA | SIM900 |
TX2 | RX |
RX2 | TX |
GND | GND |
ARDUINO MEGA | MODULE SD |
GND | GND |
5V | VCC |
50 | MISO |
51 | MOSI |
52 | SCK |
53 | CS |
Il faut impérativement installer la carte SD ou micro SD et la carte SIM avant la mise sous tension. Il est préférable que le code Pin de la carte SIM soit désactivé, mais il est possible de dévérouiller le code Pin avec le programme Arduino. A la mise sous tension, il faut appuyer au minimum 2 secondes le « Switch ON/OFF » du module SIM900. Si le code Pin est désactivé, la » Led état réseau » clignote toutes les 3 secondes au bout d’un moment, dès que le module SIM900 a terminé son initialisation; autrement dès que le code Pin est desactivé via le programme Arduino, la led clignote toutes les 3 secondes, ce qui signifie que le module SIM900 est bien connecté au réseau mobile.
Attention: pour l’envoi de MMS, le firmware du module doit être mis à jour afin d’être compatible avec le Maroc. C’est pourquoi tous nos modules SIM900 sont mis à jour et sont compatibles MMS avec les réseaux Maroc 433 ou 868Mhz.
Etape 3: Programmes Arduino
Les programmes suivants permettent de tester les fonctions du module SIM900, comme l’envoi et la réception des SMS, l’envoi des MMS (ici avec carte SIM Laposte mobile!), et une carte SD ou micro-SD contenant l’image à envoyer, et l’émission ou la réception des appels téléphoniques ( nécessite un micro et des écouteurs branchés sur les connecteurs associés du SIM900).
Une fois le programme téléchargé dans le carte Arduino, il faut ouvrir le Terminal Arduino afin de lui envoyer les commandes servant à activer les différentes fonctions du module SIM900: 1,2,3,4,5,6,7,8,9,d,p,s
Etant donné que l’éditeur Blog ne prend pas encore en compte le symbole antislash( Eh oui il l’assimile à du code HTML), il faudra donc remplacer dans le code (antislash) par son symbole, avant de télécharger votre script dans la carte Arduino.
1- ENVOI DE SMS, APPELS, ET MMS
/* Projet: APPELS SMS MMS avec SIM900 et Carte SD Board: Arduino Mega 2560 Date: 07 Septembre 2021 Micro-Electroniques Générales au Maroc Website: https://www.megma.ma */ #include "SD.h" #define PWR 31 #define CS 53 File dataFile; int i; unsigned char data=0; String message = "Bonjour tout le monde"; void setup() { pinMode(PWR,OUTPUT); pinMode(CS,OUTPUT); Serial.begin(9600); Serial2.begin(115200);// modifiez la vitesse si nécéssaire //car il se peut que votre module Sim900 fonctionne à 9600 bauds par exemple digitalWrite(PWR,LOW); delay(10); digitalWrite(PWR,HIGH); delay(10); if (!SD.begin(CS)) Serial.println("initialisation non reussie!"); else Serial.println("initialisation ok."); } void loop() { //Entrer des valeurs depuis le moniteur série pour activer les fonctions du SIM900: //1,2,3,4,5,6,7,8,9,d,p,s if(Serial2.available()) { while(Serial2.available()) { data=Serial2.read(); Serial.write(data); } data=0; } if(Serial.available()) { data=Serial.read(); } if(data=='p') { Serial2.print("AT+CPIN=1234(antislash)r"); //Faire le code Pin carte SIM si activé // Si code Pin désactivé, ignorer// Mettre le code pin à la place de 1234 si différent } if(data=='1') { Serial2.print("AT+CGMI(antislash)r"); // Identification du fabricant } if(data=='2') { Serial2.print("AT+CGMM(antislash)r"); //Identification du modèle } if(data=='3') { Serial2.print("AT+CGMR(antislash)r"); //Version du Firmware } if(data=='4') { Serial2.print("AT+CGSN(antislash)r"); //Numéro IMEI } if(data=='5') { Serial2.print("ATD+33644757223;(antislash)r"); //Appels (ATD+numero à appeler) } if(data=='6') { Serial2.print("ATH(antislash)r"); //Racrocher un appel } if(data=='7') //Envoyer un SMS { Serial2.println("AT"); delay(500); Serial2.print("AT+CMGF=1(antislash)r"); //Activation mode Texte delay(500); Serial2.println("AT+CMGS=(antislash)"+33644757223(antislash)""); //Numéro du destinataire delay(500); Serial2.print(message);//Message à envoyer //Serial2.print("bonjour ceci est mon message"); //2eme methode pour envoyer un message delay(500); Serial2.write((char)26); //Envoi du message } if(data=='8') { Serial2.print("AT+CMGR=1(antislash)r"); //Lire message } if(data=='9') { Serial2.print("AT+CMGD=1,0(antislash)r"); //Effacer un message } if(data=='d') { Serial2.print("ATDT(antislash)r"); //Décrocher un appel } if(data=='s') sendMMS(); //Envoyer un MMS data=0; } void sendMMS() //Envoi de MMS avec paramètre APN La poste mobile //Regarder sur le site des opérateurs pour les paramètres APN, MMSCURL, CMMSPROTO { Serial2.println("AT+CMMSINIT"); delay(1000);//100 if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSCURL=(antislash)"mmsdebitel(antislash)"(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSCID=1(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSPROTO=(antislash)"10.143.156.003(antislash)",8080(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSSENDCFG=6,3,0,0,2,4,1,0(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+SAPBR=3,1,(antislash)"CONTYPE(antislash)",(antislash)"GPRS(antislash)"(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+SAPBR=3,1,(antislash)"APN(antislash)",(antislash)"mmsdebitel(antislash)"(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+SAPBR=1,1(antislash)r"); delay(4000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+SAPBR=2,1(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSEDIT=0(antislash)r"); // Efface le Buffer delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSEDIT=1(antislash)r"); // Mode Edition activé delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSDOWN=(antislash)"PIC(antislash)",6651,20000,(antislash)"pic777.jpg(antislash)"(antislash)r"); //Chargement de l'image "pic777.jpg" de taille 6651 octets stockée dans la carte SD //20000 représente le temps qu'on laisse au système pour télécharger l'image delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } dataFile=SD.open("pic777.jpg"); //Téléchargement de l'image depuis la carte SD ou micro SD vers mémoire du SIM900 i=0; if(dataFile) { while(dataFile.available()) { data=dataFile.read(); if(data<0x10) Serial.print("0"); Serial.print(data,HEX); i++; if((i%40)==0) Serial.println(); Serial2.write(data); } dataFile.close(); } else { Serial.println("erreur ouverture pic777.jpg"); } delay(1000); Serial2.print("AT+CMMSRECP=(antislash)"+33644757223(antislash)"(antislash)r"); //Numéro du destinataire du MMS delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSVIEW(antislash)r"); delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSSEND(antislash)r"); //Envoi du MMS delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } Serial2.print("AT+CMMSTERM(antislash)r"); // Fin du MMS delay(1000); if(Serial2.available()) { while(Serial2.available()) Serial.write(Serial2.read()); } }
Pour toutes questions, remarques ou suggestions relatives à ce tutoriel, n’hésitez pas à nous contacter à notre page Facebook. (Même à 23h ou minuit si je ne dors pas je vous répondrai!)
Avis
Il n’y a pas encore d’avis.