📱 Arduino • GSM Shield 2 • SMS • Relè

Controllare un relè con Arduino GSM Shield 2 tramite SMS

Usiamo Arduino Uno e GSM Shield 2 per ricevere comandi via SMS e attivare o disattivare un relè da remoto con semplici messaggi di testo.

Comando ONSMS “on”
Comando OFFSMS “off”
RelèD10
In poche parole: Arduino attende la registrazione della GSM Shield sulla rete mobile. Quando arriva un SMS, legge il testo del messaggio e, se trova on oppure off, cambia lo stato del relè.

Come funziona il progetto

La GSM Shield 2 permette ad Arduino di utilizzare una SIM per comunicare sulla rete mobile. In questo progetto sfruttiamo la ricezione degli SMS per comandare un’uscita digitale collegata a un relè.

Quando la shield si registra correttamente sulla rete, il LED verde collegato ad Arduino si accende. Da quel momento il sistema è pronto a ricevere i comandi.

Arduino Uno con GSM Shield 2 e SIM

Arduino Uno con GSM Shield 2 e scheda SIM installata.

SIM: prima dell’uso verifica che la SIM sia attiva e compatibile con la shield. Se la SIM richiede un PIN, il codice deve essere gestito correttamente oppure il PIN deve essere disabilitato prima dell’inserimento.

Materiale necessario

🔌 Arduino Uno
📶 Arduino GSM Shield 2
⚡ Relè 5 V
🟢 LED verde
Ω Resistenza da 220 Ω
🔗 Cavetti jumper
🧩 Breadboard
📱 SIM attiva

🧰 Kit Arduino consigliato

Un kit completo è utile per avere già a disposizione LED, resistenze, breadboard, relè e cavetti per molti progetti Arduino.

👉 Guarda il kit Arduino consigliato

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

📘 Vuoi imparare Arduino passo dopo passo?

Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino.

👉 Scopri i miei libri su Arduino

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Schema del circuito

Schema Arduino GSM Shield 2 relè

Schema del circuito con GSM Shield 2 e relè collegato al pin D10.

Collegamenti principali

ElementoPin Arduino
Ingresso relèD10
LED verdeD12
GSM Shield 2Montata su Arduino Uno
Attenzione ai carichi: il relè deve essere usato correttamente in base al carico da comandare. Per tensioni di rete o carichi importanti servono isolamento, protezioni e componenti adeguati.

Codice Arduino commentato

La versione seguente mantiene la stessa logica del progetto ma gestisce il testo ricevuto in modo più ordinato: termina correttamente la stringa, rimuove spazi e converte il comando in minuscolo prima del confronto.

GSM Shield 2 + relè via SMS
#include <GSM.h>

// Oggetti per accesso GSM e gestione SMS
GSM gsmAccess;
GSM_SMS sms;

// Pin utilizzati
const int rele = 10;
const int ledVerde = 12;

// Comandi SMS
String accendi = "on";
String spegni  = "off";

// Buffer per il messaggio ricevuto
char ricevuto[20];

void setup() {

  pinMode(rele, OUTPUT);
  pinMode(ledVerde, OUTPUT);

  // Stato iniziale
  digitalWrite(rele, LOW);
  digitalWrite(ledVerde, LOW);

  Serial.begin(9600);

  // Avvia la connessione GSM
  bool connesso = false;

  while (!connesso) {

    if (gsmAccess.begin() == GSM_READY) {
      connesso = true;
    }
  }

  // GSM registrato sulla rete
  digitalWrite(ledVerde, HIGH);
}

void loop() {

  if (sms.available()) {

    int i = 0;

    // Legge il contenuto dell'SMS
    while (sms.available() && i < 19) {
      char c = sms.read();
      ricevuto[i] = c;
      i++;
    }

    // Termina correttamente la stringa
    ricevuto[i] = '\0';

    String comando = String(ricevuto);
    comando.trim();
    comando.toLowerCase();

    if (comando == accendi) {
      digitalWrite(rele, HIGH);
    }

    if (comando == spegni) {
      digitalWrite(rele, LOW);
    }

    // Cancella il messaggio dalla memoria del modem
    sms.flush();
  }

  delay(500);
}

Come funziona il codice

1. Avvio della GSM Shield

Nel setup() Arduino prova ad avviare la connessione GSM finché gsmAccess.begin() restituisce lo stato GSM_READY.

2. Indicazione di rete pronta

Quando la shield è registrata sulla rete, il LED verde sul pin D12 viene acceso.

3. Lettura degli SMS

Nel loop() il programma verifica se sono disponibili nuovi messaggi. Il testo viene letto nel buffer ricevuto e trasformato in una stringa.

4. Comando ON

Se il messaggio ricevuto è on, Arduino porta D10 a HIGH e attiva il relè.

5. Comando OFF

Se il messaggio è off, D10 viene portato a LOW e il relè viene disattivato.

Inviare i comandi

Dopo che la shield si è registrata sulla rete, invia un SMS al numero della SIM inserita nella GSM Shield:

SMSAzione
onAttiva il relè
offDisattiva il relè
Comando SMS Arduino GSM Shield 2

Esempio di utilizzo dei comandi SMS per il controllo remoto.

Personalizzare i comandi SMS

Le parole possono essere cambiate direttamente nel codice:

Comandi personalizzati
String accendi = "on";
String spegni  = "off";

Per esempio puoi sostituire on con apri e off con chiudi, oppure utilizzare parole più specifiche per il dispositivo collegato.

Variante: impulso temporizzato sul relè

Per alcune applicazioni, come simulare la pressione di un pulsante o comandare un ingresso impulsivo, il relè non deve rimanere acceso. Può essere attivato per un breve intervallo e poi spento automaticamente.

Codice relè Arduino prima della modifica

Sezione del codice dedicata all’attivazione del relè.

Arduino GSM relè impulso temporizzato

Esempio della modifica per generare un impulso temporizzato.

Impulso di 500 ms
if (comando == "on") {

  digitalWrite(rele, HIGH);

  // Mantiene il relè attivo per mezzo secondo
  delay(500);

  digitalWrite(rele, LOW);
}

Con delay(500) il relè resta attivo per mezzo secondo e poi torna automaticamente allo stato LOW.

Applicazioni possibili

  • apertura di un cancello tramite impulso;
  • accensione o spegnimento di un dispositivo remoto;
  • attivazione di un sistema di allarme;
  • comando di un contatto pulito;
  • gestione remota di piccoli sistemi in assenza di Wi-Fi.

Scarica lo sketch

⬇️ Scarica lo sketch Arduino

Debug rapido

  • verifica che la SIM sia attiva;
  • controlla l’eventuale PIN della SIM;
  • attendi la registrazione della GSM Shield sulla rete;
  • verifica che il LED verde si accenda;
  • controlla il relè sul pin D10;
  • invia esattamente i comandi previsti;
  • se il relè lavora al contrario, verifica se il modulo è active LOW;
  • controlla alimentazione e assorbimento della GSM Shield.

Varianti del progetto

  • accettare comandi soltanto da numeri autorizzati;
  • inviare un SMS di conferma dopo ogni comando;
  • gestire più relè;
  • aggiungere un sensore e richiedere il suo stato via SMS;
  • usare comandi come stato, apri, chiudi;
  • aggiungere un timeout automatico del relè.

Cosa devi ricordare

  • La GSM Shield riceve gli SMS attraverso la SIM.
  • Il relè è collegato al pin D10.
  • Il LED verde su D12 indica che la connessione GSM è pronta.
  • on attiva il relè e off lo disattiva.
  • Il relè può anche essere usato in modalità impulso temporizzato.

Domande frequenti

Perché la GSM Shield non si registra sulla rete?

Controlla SIM, copertura, alimentazione e compatibilità della rete mobile con la shield utilizzata.

Posso cambiare le parole ON e OFF?

Sì. Basta modificare le stringhe accendi e spegni nel codice.

Posso usare il progetto per aprire un cancello?

Sì, se il cancello dispone di un ingresso a contatto adatto. In quel caso è generalmente più utile la variante a impulso breve del relè.

Il relè rimane acceso dopo il comando ON?

Nella modalità standard sì. Se vuoi soltanto un impulso, usa la variante con attivazione, ritardo e successivo spegnimento.