Controllo via sms di un relè

Share

Ecco un esempio di codice Arduino per il controllo di un relè tramite SMS utilizzando un modulo SIM800L. Assicurati di aver collegato correttamente il modulo SIM800L all’Arduino.

#include <SoftwareSerial.h>

// Configurazione del modulo SIM800L
#define SIM800_RX_PIN 10
#define SIM800_TX_PIN 11
SoftwareSerial sim800(SIM800_RX_PIN, SIM800_TX_PIN);

// Pin di controllo del relè
#define RELAY_PIN 12

void setup() {
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);

  // Configurazione della comunicazione seriale con il modulo SIM800L
  Serial.begin(9600);
  sim800.begin(9600);

  delay(1000);

  // Impostazione del modulo SIM800L in modalità testo
  sim800.print("AT+CMGF=1\r\n");
  delay(1000);
  sim800.print("AT+CNMI=2,2,0,0,0\r\n");

  delay(1000);
  Serial.println("In attesa di SMS...");
}

void loop() {
  if (sim800.available()) {
    delay(10);
    char c = sim800.read();

    // Ricezione di un nuovo messaggio SMS
    if (c == '+') {
      String smsSender = sim800.readStringUntil('\n');
      sim800.find('"');
      String smsContent = sim800.readStringUntil('\n');

      // Controllo del contenuto del messaggio SMS
      if (smsContent.indexOf("ACCENDI") != -1) {
        digitalWrite(RELAY_PIN, HIGH);
        inviaRispostaSMS(smsSender, "Relè acceso.");
      } else if (smsContent.indexOf("SPEGNI") != -1) {
        digitalWrite(RELAY_PIN, LOW);
        inviaRispostaSMS(smsSender, "Relè spento.");
      }
    }
  }
}

void inviaRispostaSMS(String destinatario, String messaggio) {
  sim800.println("AT+CMGS=\"" + destinatario + "\"");
  delay(1000);
  sim800.println(messaggio);
  delay(100);
  sim800.println((char)26);
  delay(1000);
  Serial.println("Risposta inviata.");
}

Assicurati di aver installato la libreria SoftwareSerial, che è necessaria per la comunicazione seriale con il modulo SIM800L. Puoi farlo tramite il “Gestore librerie” nell’IDE di Arduino.

Nel codice sopra, viene impostato il pin 12 come pin di controllo per il relè. È possibile modificare questo valore in base alla configurazione dei pin sul tuo Arduino.

Il codice attende l’arrivo di un SMS e controlla il suo contenuto. Se il messaggio contiene la parola “ACCENDI”, il relè viene acceso. Se contiene la parola “SPEGNI”, il relè viene spento. Successivamente, viene inviata una risposta SMS al mittente per confermare l’operazione.

Ricorda di impostare correttamente la velocità di comunicazione seriale (baud rate) del modulo SIM800L nel tuo caso. Nel codice sopra, è impostata a 9600 bps, ma potrebbe essere diversa a seconda della configurazione del tuo modulo.