Contrôleur SMS basé sur SIM800L
SIM800L V2.0 GSM/GPRS est un module GSM/GPRS quadri-bande compatible avec Arduino. Le module permet de mettre en œuvre les fonctions GSM (appels et SMS) et GPRS. L'avantage de ce module est l'interface TTL, qui a une tension de 5V, qui permet de le connecter directement à Arduino ou à tout autre système avec une tension d'alimentation de 5V. La plupart des modules GSM/GPRS sur le marché nécessitent des connexions de régulateur ou une conversion de niveau, tandis que dans le SIM800L V.2, GSM/GPRS ne nécessite pas de circuits de conversion de niveau d'interface supplémentaires.
Donnons un exemple de projet utilisant SIM800L V.2 GSM/GPRS. Le but du projet est de contrôler les interrupteurs à l'aide d'un contrôleur SMS. Vous pouvez facilement allumer et éteindre la plupart des appareils électroménagers de la maison, comme un lama, un ventilateur, etc.
Caractéristiques du module GSM/GPRS SIM800L V.2
Ci-dessous toutes les caractéristiques techniques du module SIM800L V.2 GSM/GPRS :
- Interface série TTL compatible avec les microcontrôleurs compatibles Arduino 3,3 V et 5 V.
- Le module SIM800L dispose d'une interface série TTL.
- Fiche de connexion d'antenne.
- Support réseau : quatre bandes 850/900/1800/1900 MHz, capables de passer des appels, des SMS et des transferts de données avec une consommation de batterie considérablement réduite.
- Interface VDD TTL UART, vous permettant ainsi de connecter directement des MCU tels que 51MCU, ARM ou MSP430.La prise VDD est utilisée pour correspondre à la tension TTL.
- Modèle : SIMCOM SIM800L
- Tension de fonctionnement : de 3,7 V à 5 V ;
- dimensions : 40 mm x 28 mm x 3 mm
- GPRS multislot classe 12/10
- Service de paquets GPRS classe B
- Conforme à la phase GSM 2/2+
- Classe 4 (2 watts à 850/900 MHz)
- Classe 1 (1 watt à 1 800/1 900 MHz)
Matériel nécessaire
Tu auras besoin:
1. Module SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Module relais 4 canaux 5 V.
4. Fils - cavaliers.
5. Alimentation 5V.
(Liens actifs vers la boutique pour l'achat)
Assemblage et configuration
Une fois que vous avez connecté tous les composants, créez un programme puis téléchargez-le sur votre Arduino. Mais avant, vous devez installer la bibliothèque GPRS, que vous pouvez télécharger :
gprs.zip
[28,02 Ko] (téléchargements : 887)
Code de programme pour Arduino
Une fois que vous avez connecté votre SIM800L, module relais 4 canaux et Arduino à votre ordinateur, entrez le code ci-dessous et le tour est joué.
#inclure
#inclure
#définir TIMEOUT 5000
#define ACTIF BAS
#define HORS HAUT
octet Relay[] = {A0,A1,A2,A3} ;
octet StatRelay[4] ;
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
Chaîne réponseNumber = "089510863958" ;
GPRS-GPR ;
void setup() {
pour(int i=0; i < 4; i++) {
pinMode(Relais[i] , SORTIE);
digitalWrite(Relais[i], MATI);
StatRelais[i] = MATI ;
}
Série.begin(9600);
tandis que(!Série);
Serial.println("Activer le SIM800L V2 >>> Lire automatiquement les SMS");
gprs.preInit();
retard (1000);
tandis que (0 != gprs.init()) {
retard (1000);
Serial.print("erreur d'initialisation");
}
// Gérer le message en mode ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERREUR("ERREUR:CNMI");
retour;
}
// Lire les SMS entrants
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERREUR("ERREUR:CNMI");
retour;
}
int pjg = réponseNumber.length() + 1;
buffNumber[pjg];
réponseNumber.toCharArray(buffNumber,pjg);
Serial.print("Envoyer la réponse au numéro => ");
Serial.println(buffNumber);
Serial.println("Initialisation effectuée");
Serial.println("============================================== =============== ================");
}
boucle vide() {
// Changer l'état Relais ON / OFF
pour(int i=0; i < 4; i++) {
digitalWrite(Relais[i], StatRelay[i]);
}
// S'il y a des données d'entrée du SIM800
si (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Enregistre toutes les données sur lastCharRead, puis s'il y a r ou n, comme signal final du message entrant
if (lastCharRead == 'r' || lastCharRead == 'n') {
Chaîne lastLine = String(currentLine);
// Si le dernier message +CMT indique l'arrivée d'un nouveau message
if (lastLine.startsWith("+CMT:")) {
Serial.println(dernièreLigne);
nextLineIsMessage = vrai ;
} sinon si (lastLine.length() > 0) {
si (nextLineIsMessage) {
Serial.println(dernièreLigne);
// ================================================= ==== ================>> Fonction du contrôleur de relais
//Contrôleur relais 1
if (lastLine.indexOf("Relais 1 ON") >= 0) {
StatRelais[0] = AKTIF ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 1 actif");
gprs.sendSMS(buffNumber, "Statut du relais 1 actif");
}
sinon if (lastLine.indexOf("Relais 1 OFF") >= 0) {
StatRelais[0] = MATI ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 1 désactivé");
gprs.sendSMS(buffNumber, "Statut du relais 1 désactivé");
}
//Contrôleur relais 2
if (lastLine.indexOf("Relais 2 ON") >= 0) {
StatRelay[1] = AKTIF ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 2 actif");
gprs.sendSMS(buffNumber, "Statut du relais 2 actif");
}
sinon if (lastLine.indexOf("Relais 2 OFF") >= 0) {
StatRelais[1] = MATI ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 2 désactivé");
gprs.sendSMS(buffNumber, "Statut du relais 2 désactivé");
}
//Contrôleur relais 3
if (lastLine.indexOf("Relais 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 3 actif");
gprs.sendSMS(buffNumber, "Statut du relais 3 actif");
}
sinon if (lastLine.indexOf("Relais 3 OFF") >= 0) {
StatRelais[2] = MATI ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 3 désactivé");
gprs.sendSMS(buffNumber, "Statut du relais 3 désactivé");
}
//Contrôleur relais 4
if (lastLine.indexOf("Relais 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 4 actif");
gprs.sendSMS(buffNumber, "Statut du relais 1 actif");
}
sinon if (lastLine.indexOf("Relais 4 OFF") >= 0) {
StatRelais[3] = MATI ;
Serial.print("Réponse====>>>> ");
Serial.println("Statut du relais 4 désactivé");
gprs.sendSMS(buffNumber, "Statut du relais 4 désactivé");
}
nextLineIsMessage = faux ;
}
// ================================================= ==== ===================>>
}
//Effacer le tableau de caractères pour la prochaine ligne de lecture
pour (int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
indexLigneactuelle = 0 ;
}
autre {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Vérification de l'appareil
L'outil fonctionne en envoyant un SMS au SIM800L avec une séquence de caractères spécifique. Par exemple, pour allumer le relais 1, utilisez la commande « Relais 1 ON », et pour l'éteindre, utilisez la commande « Relais 1 OFF ». Pour les autres relais, les commandes sont quasiment les mêmes, à l'exception du numéro de séquence de chaque relais que vous souhaitez influencer. Après l'envoi automatique du message, le SIM800 enverra une réponse sous la forme d'un message sur l'état de chaque carte SIM.
Vidéo de montage, configuration et test de l'appareil
Article original en anglais
Classes de maître similaires
Particulièrement intéressant
Transformer un ancien centre de musique en un nouveau de vos propres mains
Comment restaurer la batterie d'un tournevis
Comment installer vous-même le Bluetooth dans n'importe quel autoradio
Le vélo électrique DIY le plus simple
Ne jetez pas votre ancienne cartouche - transformez-la en batterie externe
Remplacement des piles d'un tournevis
Commentaires (4)