DIY faites le vous même
Cours magistraux, instructions, astuces utiles, recettes.
» » »Contrôleur SMS basé sur SIM800L
Contrôleur SMS basé sur SIM800L

SIM800L V2.0 GSM / GPRS est un module GSM / GPRS quadribande compatible avec Arduino. Le module est utilisé pour implémenter les fonctions de GSM (appels et SMS) et GPRS. L'avantage de ce module est l'interface TTL avec une tension de 5V, ce qui vous permet de le connecter directement à un système Arduino ou à tout autre système avec une 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 SIM800L V.2, GSM / GPRS ne nécessite pas de circuits de conversion de niveau d'interface supplémentaires.

Voici un exemple de projet utilisant SIM800L V.2 GSM / GPRS. Le projet a pour but de contrôler les commutateurs à l'aide du contrôleur SMS. Vous pouvez facilement allumer et éteindre la plupart des appareils ménagers de la maison, tels qu'un lama, un ventilateur, etc.

Caractéristiques du module SIM800L V.2 GSM / GPRS


Vous trouverez ci-dessous toutes les spécifications techniques du module SIM800L V.2 GSM / GPRS:
  • Interface série TTL compatible avec les microcontrôleurs 3,3V et 5V compatibles avec Arduino.
  • Le module SIM800L possède une interface série TTL.
  • Prise d'antenne
  • Prise en charge réseau: quatre bandes 850/900/1800/1900 MHz, capable de passer des appels, d'envoyer des SMS et de transférer des données avec une consommation de batterie considérablement réduite.
  • Interface VDD TTL UART, vous permettant ainsi de connecter directement un MCU tel que 51MCU, ARM ou MSP430. Prise VDD utilisée pour correspondre à la tension TTL.
  • Modèle: SIMCOM SIM800L
  • Tension de travail: de 3,7V à 5V;
  • dimensions: 40mm x 28mm x 3mm
  • GPRS multislot classe 12/10
  • Service de traitement par lots GPRS, classe B
  • Correspond à la phase GSM 2/2 +
  • Classe 4 (2 Watts @ 850/900 MHz)
  • Classe 1 (1 Wat @ 1800/1900 MHz)


Matériel requis


Contrôleur SMS basé sur SIM800L


Vous aurez besoin de:


1. .
2. .
3. .
4. .
5. .
(Liens actifs vers le magasin pour achat)

Assemblage et configuration


Contrôleur SMS basé sur SIM800L


Une fois que vous avez connecté tous les composants, créez un programme, puis téléchargez-le sur votre Arduino. Mais d’abord, vous devez installer la bibliothèque GPRS, que vous pouvez télécharger:

[28.02 Kb] (téléchargements: 481)


Code de programme pour Arduino


Contrôleur SMS basé sur SIM800L


Après avoir connecté votre SIM800L, module de relais à 4 canaux et Arduino à votre ordinateur, entrez le code ci-dessous et vous avez terminé.


#include
#include
#define TIMEOUT 5000
#define ACTIVE LOW
#define OFF HIGH

octet Relais [] = {A0, A1, A2, A3};
octet StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS GPRS;

void setup () {
pour (int i = 0; i <4; i ++) {
pinMode (Relay [i], OUTPUT);
digitalWrite (Relay [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
while (! série);
Serial.println ("Activer SIM800L V2 >>> Lire automatiquement les SMS");
gprs.preInit ();
délai (1000);
tandis que (0! = gprs.init ()) {
délai (1000);
Serial.print ("init errorrn");
}

// Gérer le message en mode ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
retour
}
// Lire les SMS entrants
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rr", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
retour
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Envoyer une réponse au numéro =>");
Serial.println (buffNumber);
Serial.println ("Initialization Done");
Serial.println ("=========================================== ================= ");
}

boucle vide () {
// Changer le statut du relais ON / OFF
pour (int i = 0; i <4; i ++) {
digitalWrite (Relay [i], StatRelay [i]);
}

// S'il y a des données d'entrée de SIM800
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Sauvegarde 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') {
String lastLine = String (currentLine);

// Si le dernier message + CMT indique qu'un nouveau message arrive
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// ============================================== ================= >> Fonction du contrôleur de relais

// Contrôleur Relais 1

if (lastLine.indexOf ("Relay 1 ON")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 1 actif");
gprs.sendSMS (buffNumber, "Statut du relais 1 actif");
}

else if (lastLine.indexOf ("Relais 1 désactivé")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 1 désactivé");
gprs.sendSMS (buffNumber, "Statut du relais 1 désactivé");
}

// contrôleur 2 relais

if (lastLine.indexOf ("Relay 2 ON")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 2 actif");
gprs.sendSMS (buffNumber, "Statut du relais 2 actif");
}
else if (lastLine.indexOf ("Relais 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Etat du relais 2 désactivé");
gprs.sendSMS (buffNumber, "Statut du relais 2 désactivé");
}

// contrôleur 3 relais
if (lastLine.indexOf ("Relay 3 ON")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 3 actif");
gprs.sendSMS (buffNumber, "Statut du relais 3 actif");
}
else if (lastLine.indexOf ("Relais 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 3 désactivé");
gprs.sendSMS (buffNumber, "Statut du relais 3 désactivé");
}

// contrôleur 4 relais
if (lastLine.indexOf ("Relay 4 ON")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 4 actif");
gprs.sendSMS (buffNumber, "Statut du relais 1 actif");
}
else if (lastLine.indexOf ("Relais 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Statut du relais 4 désactivé");
gprs.sendSMS (buffNumber, "Statut du relais 4 désactivé");
}
nextLineIsMessage = false;
}

// ============================================== ==================== >>

}
// Efface le tableau de caractères pour la prochaine ligne de lecture
pour (int i = 0; i 


Vérification de l'appareil


Contrôleur SMS basé sur SIM800L


L'outil fonctionne en envoyant des SMS à SIM800L avec une séquence de caractères spécifique. Par exemple, pour activer le relais 1, utilisez la commande «Relais 1 ON» et pour le désactiver, utilisez la commande «Relais 1 OFF». Les autres relais ont presque les mêmes commandes, à l'exception du numéro de série de chaque relais sur lequel vous souhaitez agir. Après l'envoi automatique d'un message, le SIM800 envoie une réponse sous la forme d'un message d'état pour chaque carte SIM.

Assemblage vidéo, configuration et vérification du périphérique



Retour
Commentaires (4)
  1. Qeeeq
    #1 Qeeeq Les invités 26 août 2017 23:50
    0
    Waouh! Comme on dit, tout ingénieux est simple. Je n'ai même pas eu à acheter quoi que ce soit, probablement chez chacun de ces déchets à la maison en vrac
  2. Alexey
    #2 Alexey Les invités 16 décembre 2017 16:53
    0
    Ça ne marche pas. Lors de la compilation, il écrit "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Conseil:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis Les invités 17 décembre 2017 08:11
      0
      Vous devez utiliser un chemin sans lettres russes pour le projet.
  3. Andrey
    #4 Andrey Les invités 10 février 2019 11:54
    0
    Il y a beaucoup d'erreurs dans l'esquisse. Ne fonctionnera pas.