envoi-sms.ino
Notificación por SMS desde el MKR GSM 1400: el módem envía un mensaje de texto a un teléfono, aquí un latido cada cinco minutos. Útil para alertar sin infraestructura de Internet, con el número en formato internacional.
Hardware
Una Arduino MKR GSM 1400 (microcontrolador SAMD21, módem celular 2G/GPRS, antena externa, alimentada por batería LiPo en el conector J6 o por USB). Una SIM con plan SMS, la antena 2G enroscada y un teléfono para recibir los mensajes.
Cableado
Nada que cablear: SIM y antena colocadas, alimentación por USB o batería LiPo en el conector J6.
Funcionamiento
GSMSMS pone el módem en modo texto: sendNumber define el destinatario y beginMessage/print/endMessage componen y envían el SMS. El código usa millis() para separar los envíos cinco minutos.
Ejecución
En el IDE de Arduino, instala el paquete Arduino SAMD Boards, selecciona la placa MKR GSM 1400 y carga. Los ejemplos de red suponen una SIM de datos activa insertada, la antena enroscada y cobertura 2G todavía disponible en tu zona.
Variantes
Dispara el envío desde una alarma de sensor o limítalo a unos pocos SMS al día para cuidar la tarifa; el modo PDU permite SMS más largos pero es mucho más verboso.
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);
}