Contrôler la lampe 12V via SMS avec Arduino

Contrôler la lampe 12V via SMS avec Arduino

Dans ce tutoriel, nous allons vous montrer comment vous pouvez contrôler une lampe 12V via SMS à l’aide d’un Arduino UNO, d’un module de relais et du shield SIM900 GSM.

Controler la lampe 12V via SMS avec Arduino

Avant de poursuivre ce didacticiel, nous vous recommandons les ressources suivantes :

Tout d’abord, regardez la vidéo de démonstration

YouTube video

Aperçu du projet

Ce projet utilise le shield SIM900 GSM pour recevoir et envoyer des SMS avec l’Arduino. Ce projet vise à :

  • allumez une lampe 12V lorsque vous envoyez un SMS à l’Arduino avec le texte « ON »
  • éteignez une lampe 12V lorsque vous envoyez un SMS à l’Arduino avec le texte « OFF »
  • vous pouvez demander l’état de la lampe en envoyant un SMS à l’Arduino avec le texte « STATE », l’Arduino devrait répondre avec le texte « la lampe est allumée » ou « la lampe est éteinte »

1642271765 146 Controler la lampe 12V via SMS avec Arduino

Pièces nécessaires

Dans ce projet, vous devez connecter l’Arduino au blindage GSM et à un module relais connecté à une lampe 12V. Voici une liste complète des pièces requises pour ce projet (cliquez sur les liens ci-dessous pour trouver le meilleur prix à Conseiller Maker):

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Controler la lampe 12V via SMS avec Arduino

Préparation du GSM Shield

1642271765 12 Controler la lampe 12V via SMS avec Arduino

Pour utiliser le bouclier GSM SIM900 :

1) Vous avez besoin d’une carte SIM active. Nous vous recommandons d’utiliser une carte SIM avec un forfait prépayé à des fins de test.

2) Vous devez désactiver le verrouillage du code PIN de la carte SIM. Insérez la carte SIM dans votre smartphone et désactivez le verrouillage par code PIN dans les paramètres de sécurité du téléphone.

3) Le blindage GSM doit être alimenté à l’aide d’une alimentation externe 5V pouvant fournir 2A, ou 9V 1A, ou 12V 1A.

1642271765 690 Controler la lampe 12V via SMS avec Arduino

4) Nous allons utiliser un logiciel série pour communiquer avec le bouclier. Ainsi, sur le port série sélectionné, assurez-vous que le capuchon du cavalier est connecté comme indiqué dans la figure ci-dessous pour utiliser le logiciel série.

1642271765 831 Controler la lampe 12V via SMS avec Arduino

5) Vous pouvez allumer/éteindre le bouclier en appuyant sur la touche d’alimentation, ou vous pouvez l’allumer automatiquement avec l’Arduino via la broche D9. Pour allumer et éteindre automatiquement le bouclier, vous devez souder les connexions R13 comme indiqué dans la figure ci-dessous.

1642271765 346 Controler la lampe 12V via SMS avec Arduino

6) Si c’est la première fois que vous utilisez le bouclier GSM, nous vous recommandons de lire les étapes préliminaires dans notre guide du bouclier GSM ici.

sept) Insérez la carte SIM dans le support de carte SIM.

1642271765 755 Controler la lampe 12V via SMS avec Arduino

8) Enfin, câblez le blindage GSM SIM900 à l’Arduino en suivant le schéma ci-dessous.

1642271765 435 Controler la lampe 12V via SMS avec Arduino

9) Vous devez alimenter le blindage GSM SIM900 à l’aide de l’alimentation externe 5V. Assurez-vous de sélectionner la source d’alimentation externe avec l’interrupteur à bascule à côté de la prise CC.

1642271765 776 Controler la lampe 12V via SMS avec Arduino

Noter: Vous pouvez tester que le bouclier fonctionne correctement en envoyant des commentaires AT depuis l’IDE Arduino avec un programmeur FTDI – consultez le Guide du bouclier SIM900 GSM GPRS avec Arduino

Câblage du module de relais

Dans ce projet, nous contrôlons une lampe 12V. Cependant, ce projet peut être facilement adapté pour contrôler la tension du secteur ou d’autres appareils électroniques. Consultez notre Guide du module de relais avec Arduino pour savoir comment contrôler la tension secteur avec un relais.

Nous utilisons la lampe 12V suivante et son support de lampe correspondant.

1642271765 248 Controler la lampe 12V via SMS avec Arduino

Ajouter le module relais et le porte-lampe au circuit précédent.

1642271765 973 Controler la lampe 12V via SMS avec Arduino

Pour des raisons de sécurité, nous plaçons notre relais dans un boîtier en plastique.

1642271765 295 Controler la lampe 12V via SMS avec Arduino

Code

Vous trouverez ci-dessous le code de ce projet. Assurez-vous de modifier le code avec le numéro de téléphone auquel l’Arduino doit répondre. Nous vous recommandons de lire l’explication du code avant de télécharger le code.

/*
 * Complete Project Details https://www.raspberryme.com
 */

// Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>

// Configure software serial port
SoftwareSerial SIM900(7, 8);

// Variable to store text message
String textMessage;

// Create a variable to store Lamp state
String lampState = "HIGH";

// Relay connected to pin 12
const int relay = 12;

void setup() {
  // Automatically turn on the shield
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
  
  // Set relay as OUTPUT
  pinMode(relay, OUTPUT);

  // By default the relay is off
  digitalWrite(relay, HIGH);
  
  // Initializing serial commmunication
  Serial.begin(19200); 
  SIM900.begin(19200);

  // Give time to your GSM shield log on to network
  delay(20000);
  Serial.print("SIM900 ready...");

  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1r"); 
  delay(100);
  // Set module to send SMS data to serial out upon receipt 
  SIM900.print("AT+CNMI=2,2,0,0,0r");
  delay(100);
}

void loop(){
  if(SIM900.available()>0){
    textMessage = SIM900.readString();
    Serial.print(textMessage);    
    delay(10);
  } 
  if(textMessage.indexOf("ON")>=0){
    // Turn on relay and save current state
    digitalWrite(relay, LOW);
    lampState = "on";
    Serial.println("Relay set to ON");  
    textMessage = "";   
  }
  if(textMessage.indexOf("OFF")>=0){
    // Turn off relay and save current state
    digitalWrite(relay, HIGH);
    lampState = "off"; 
    Serial.println("Relay set to OFF");
    textMessage = ""; 
  }
  if(textMessage.indexOf("STATE")>=0){
    String message = "Lamp is " + lampState;
    sendSMS(message);
    Serial.println("Lamp state resquest");
    textMessage = "";
  }
}  

// Function that sends SMS
void sendSMS(String message){
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1r"); 
  delay(100);

  // REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
  // USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
  SIM900.println("AT + CMGS = "XXXXXXXXXX""); 
  delay(100);
  // Send the SMS
  SIM900.println(message); 
  delay(100);

  // End AT command with a ^Z, ASCII code 26
  SIM900.println((char)26); 
  delay(100);
  SIM900.println();
  // Give module time to send SMS
  delay(5000);  
}

Afficher le code brut

Le code est assez simple à comprendre. Continuez à lire pour comprendre ce que chaque section de code vise à faire.

Bibliothèque d’importation

L’Arduino communique avec le bouclier à l’aide d’une communication série logicielle. Donc, vous commencez par inclure le SoftwareSerial.h bibliothèque.

// Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>

Port série logiciel

Ensuite, vous créez un port série logiciel sur les broches 7 et 8 (la broche 7 est définie comme RX et 8 comme TX).

// Configure software serial port
SoftwareSerial SIM900(7, 8);

Création de variables

Vous créez un message texte variable qui contiendra le message texte reçu par l’Arduino ; et une autre variable pour stocker l’état actuel de la lampe (état du relais), appelée état de la lampe. La variable lampState est définie sur HIGH par défaut, car nous voulons que le relais soit désactivé par défaut. Le relais fonctionne avec une logique inversée, vous devez donc le régler sur HIGH pour l’éteindre.

// Variable to store text message
String textMessage;

// Create a variable to store Lamp state
String lampState = "HIGH";

Vous attribuez également le numéro de broche auquel le relais est connecté, la broche 12.

// Relay connected to pin 12
const int relay = 12;

mettre en place()

Dans la fonction setup(), vous commencez par allumer le shield GSM. Les lignes suivantes sont l’équivalent d’appuyer sur le bouton « power » du bouclier.

digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);

Le relais est défini comme une sortie et son état est désactivé par défaut.

// Set relay as OUTPUT
pinMode(relay, OUTPUT);

// By default the relay is off
digitalWrite(relay, HIGH);

Ensuite, vous initialisez la communication série avec le bouclier et lui donnez un peu de temps pour se connecter au réseau.

// Initializing serial commmunication
Serial.begin(19200); 
SIM900.begin(19200);

// Give time to your GSM shield log on to network
delay(20000);
Serial.print("SIM900 ready...");

Le bouclier est réglé sur le mode SMS avec les éléments suivants :

// AT command to set SIM900 to SMS mode
SIM900.print("AT+CMGF=1r"); 
delay(100);
// Set module to send SMS data to serial out upon receipt 
SIM900.print("AT+CNMI=2,2,0,0,0r");
delay(100);

boucler()

Dans la boucle (), vous lisez les messages entrants et comparez si ces messages contiennent le texte ON, OFF ou STATE. En fonction du contenu du message, l’Arduino effectuera différentes tâches.

Ainsi, vous commencez par vérifier s’il y a des messages à lire. S’il y en a, le message sera enregistré sur le message texte variable. À des fins de débogage, le message s’affiche sur le moniteur série.

if(SIM900.available() >0) {
 textMessage = SIM900.readString();
 Serial.print(textMessage); 
 delay(10);
}

Allume la lampe

Si le message reçu contient le texte « ON », alors le relais sera activé, allumant la lampe. Ensuite, vous enregistrez l’état actuel de la lampe sur le état de la lampe variable. Enfin, vous nettoyez message texte variable, afin qu’elle soit vide pour recevoir de nouveaux SMS.

if (textMessage.indexOf("ON") >= 0){
// Turn on relay and save current state
digitalWrite(relay, LOW);
lampState = "on";
Serial.println("Relay set to ON"); 
textMessage = "";

Éteignez la lampe

D’autre part, si le SMS reçu contient le texte « OFF », le relais sera éteint, le nouvel état sera enregistré et le textMessage sera nettoyé.

if (textMessage.indexOf("OFF") >= 0){
// Turn off relay and save current state
digitalWrite(relay, HIGH);
lampState = "off"; 
Serial.println("Relay set to OFF");
textMessage = "";

Retour de l’état de la lampe

Enfin, si le SMS entrant contient le texte « STATE », l’Arduino doit envoyer un message à un numéro de téléphone prédéfini indiquant si la lampe est actuellement allumée ou éteinte.

if (textMessage.indexOf("STATE") >= 0){
  String message = "Lamp is " + lampState;
  sendSMS(message);
  Serial.println("Lamp state resquest");
  textMessage = "";

Le message est envoyé à l’aide de la fonction sendSMS() définie en bas du code.

Envoi d’un SMS

le envoyer un SMS() fonction créée à la fin du code, accepte une chaîne comme argument. Cette chaîne doit être le message à envoyer.

Le numéro auquel l’Arduino répond est défini à la ligne suivante :

SIM900.println("AT + CMGS = "XXXXXXXXXXXX"");

Remplace le XXXXXXXXXXXX avec le numéro de téléphone du destinataire.

Noter: vous devez ajouter le numéro selon le format du numéro de téléphone international. Par exemple, au Portugal, le numéro est précédé de +351XXXXXXXXX.

Après avoir ajouté le numéro de téléphone auquel l’Arduino doit répondre, vous pouvez copier le code complet sur votre IDE Arduino et le télécharger sur votre carte Arduino.

Conclusion

Dans ce projet, nous vous avons montré comment vous pouvez utiliser le shield GSM SIM900 pour contrôler une lampe 12V et demander des données (l’état de la lampe) à l’Arduino.

Les concepts appris dans ce projet peuvent être appliqués pour contrôler tous les appareils électroniques que vous aimez. Vous pouvez également utiliser ce que vous avez appris ici pour demander à l’Arduino des données de capteur – par exemple, demander les dernières lectures de votre station météo.

Vous pouvez également créer un système de surveillance à l’aide d’un capteur de mouvement PIR et d’un bouclier GSM qui vous envoie un SMS lorsqu’un mouvement inattendu est détecté.

Nous espérons que vous avez trouvé ce projet utile. Si vous aimez ce projet, assurez-vous de consulter notre cours Arduino : Projets étape par étape Arduino avec 25 projets.

Merci d’avoir lu.

  • Youmile 5 pièces Module LED 10 mm Voyants lumineux à diode Capteur Module lumineux DC 3,3 V-5 V Gradation PWM Rouge, jaune, bleu, vert et blanc avec câble de connexion mâle à femelle 15 broches