Contrôleur SMS basé sur SIM800L

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


Contrôleur SMS basé sur SIM800L


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


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 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


Contrôleur SMS basé sur SIM800L


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


Contrôleur SMS basé sur SIM800L


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
revenir
Commentaire
  • noeud papillonsourireen riantrougirsouriantdétendu détendupetit sourire satisfait
    yeux_cœurkissing_heartembrasser les yeux fermésrougisoulagésatisfaitsourire
    clin d'œilcoincé_out_tongue_winking_eyeOuvre la bouche et ferme les yeuxsouriantembrassercoincé_out_tonguedormir
    inquietrenfrognéangoissébouche ouvertegrimaçantconfusétouffé
    sans expressionpas amusésweat_smiletranspirerdéçu_soulagéfatiguépassif
    déçuconfuscraintifsueur froidepersévérerpleurersanglot
    joieétonnécriervisage_fatiguéen colèreragetriomphe
    somnolentMiammasquedes lunettes de soleilvisage_dizzylutinsouriant_imp
    visage_neutrepas de boucheinnocent
3+trois=
Commentaires (4)
  1. qeeeq
    #1 qeeeq Invités 26 août 2017 23h50
    0
    Ouah! Comme on dit, tout ce qui est ingénieux est simple. Je n'ai même pas eu besoin d'acheter quoi que ce soit, probablement tout le monde a un tas de détritus à la maison
  2. Alexeï
    #2 Alexeï Invités 16 décembre 2017 16:53
    0
    Ne marche pas. Lors de la compilation, il est indiqué "Arduino : 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board :"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Invités 17 décembre 2017 08:11
      0
      Vous devez utiliser un chemin sans lettres russes vers le projet.
  3. Andreï
    #4 Andreï Invités 10 février 2019 11:54
    2
    Il y a beaucoup d'erreurs dans le croquis. Cela ne fonctionnera pas.