envoi-sms.ino
Notification par SMS depuis le MKR GSM 1400 : le modem envoie un message texte vers un numéro de téléphone, ici un battement de cœur toutes les cinq minutes. Utile pour alerter sans infrastructure Internet, avec le numéro cible au format international.
Matériel requis
Une Arduino MKR GSM 1400 (microcontrôleur SAMD21, modem cellulaire 2G/GPRS, antenne externe, alimentation par batterie LiPo sur le connecteur J6 ou par USB). Une carte SIM avec forfait SMS, l'antenne 2G vissée, et un téléphone pour recevoir les messages.
Câblage
Rien à câbler : SIM et antenne en place, alimentation par USB ou batterie LiPo sur le connecteur J6.
Fonctionnement
GSMSMS met le modem en mode texte : sendNumber définit le destinataire, puis beginMessage/print/endMessage composent et expédient le SMS. Le code s'appuie sur millis() pour espacer les envois de cinq minutes.
Exécution
Dans l'IDE Arduino, installez le package Arduino SAMD Boards, sélectionnez la carte MKR GSM 1400, puis téléversez. Les exemples réseau supposent une carte SIM data active insérée, broche antenne vissée, et un réseau 2G encore couvert dans votre région.
Variantes
Déclenchez l'envoi sur une alarme capteur, ou limitez à quelques SMS par jour pour protéger le forfait ; le mode PDU permet des SMS plus longs mais est bien plus verbeux.
envoi-sms.ino
// Envoi d'un SMS avec le MKR GSM 1400 (MKRGSM + classe GSM SMS).
#include <MKRGSM.h>
const char PIN_SIM[] = "0000";
const char NUMERO[] = "+33612345678"; // numero cible au format international
GSM gsm;
GSMSMS sms;
unsigned long dernierEnvoi = 0;
const unsigned long INTERVALLE = 300000; // 5 minutes
void setup() {
Serial.begin(9600);
while (!Serial);
if (gsm.begin(PIN_SIM) != GSM_READY) {
Serial.println(F("Modem KO"));
while (true);
}
if (sms.begin() != GSM_READY) Serial.println(F("SMS KO"));
envoyer("MKR GSM 1400 : systeme en ligne");
}
void loop() {
if (millis() - dernierEnvoi >= INTERVALLE) {
dernierEnvoi = millis();
envoyer("Heartbeat OK - uptime " + String(millis() / 1000) + "s");
}
}
void envoyer(const String &message) {
sms.sendNumber(NUMERO);
sms.beginMessage();
sms.print(message);
sms.endMessage();
Serial.println(F("SMS envoye : ") + message);
}