🛠 Envoyer et recevoir des SMS

Arduino MKR GSM 1400 · intermediaire · Schéma : IMG-mkr-gsm-1400-intermediaire-2-mkrgsm-sms.svg — MKR GSM 1400 échangeant des SMS avec un téléphone mobile, ondes radio entre l'antenne et le téléphone, message « ALERTE » affiché sur les deux écrans.

Objectifs

Utiliser la classe GSM_SMS de la bibliothèque MKRGSM pour envoyer un SMS d'alerte vers un numéro international et écouter les SMS entrants pour commander la carte à distance (texte « LED ON » / « LED OFF »). Le SMS reste le canal de secours idéal quand GPRS est coupé : il fonctionne même quand les données sont indisponibles, tant que la 2G existe.

Matériel

Code complet

#include <MKRGSM.h>
#include "arduino_secrets.h"
const char PINNUMBER[] = SECRET_PINNUMBER;
const char NUMERO_DEST[] = "+33612345678";  // format international

GSM     gsmAccess;
GSM_SMS sms;

void setup {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  while (!Serial) {}
  while (gsmAccess.begin(PINNUMBER) != GSM_READY) delay(1000);
  Serial.println("GSM pret, ecoute SMS...");

  // SMS de démarrage
  sms.beginSMS(NUMERO_DEST);
  sms.print("MKR GSM 1400 en ligne.");
  sms.endSMS;
}

void loop {
  if (sms.available) {
    String msg;
    char c;
    while ((c = sms.read) != -1) msg += c;
    msg.trim;
    Serial.println(msg);
    if (msg.equalsIgnoreCase("LED ON"))  digitalWrite(LED_BUILTIN, HIGH);
    if (msg.equalsIgnoreCase("LED OFF")) digitalWrite(LED_BUILTIN, LOW);

    sms.beginSMS(sms.remoteNumber);   // accuse de reception
    sms.print("Recu : " + msg);
    sms.endSMS;
  }
  delay(1000);
}

Vérification attendue

Au démarrage, le téléphone reçoit « MKR GSM 1400 en ligne. ». Envoyer « LED ON » allume la LED D6 et renvoie un accusé « Recu : LED ON » ; « LED OFF » éteint. endSMS bloque jusqu'à l'envoi ou l'échec : le premier envoi après enregistrement peut prendre plusieurs secondes.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels