В материале «GSM/GPRS модуль SIM800L и Arduino: простой проект GSM-сигнализации» был продемонстрирован пример достаточно несложной сигнализации, которая срабатывает по кнопке и отправляет SMS-сообщение на заранее заданный номер.

Но с помощью SIM800L и Arduino можно также удаленно управлять включением и отключением какой-нибудь нагрузки, что будет продемонстрировано в данном материале.
Очень легко собрать SMS-управляемое реле с помощью дешевого модуля GSM-модема и небольшой платы микроконтроллера. В качестве них здесь используются SIM800L и Arduino Nano V3 для разработки отличного одноканального SMS-реле. Устройство, по сути, представляет собой изолированный электрический выключатель, который можно контролировать через приложение для обмена сообщениями на вашем мобильном телефоне. Схема подключения представлена ниже.

Как видно из приведенной выше схемы, для нормальной работы схемы требуется стабилизированный источник питания постоянного тока 5 В / 1 А. Плата микроконтроллера (Nano_V3) работает от источника 5 В, а модем (SIM800L) – около 4,3 В. Хотя большинство модулей SIM800L рассчитаны на 3,7 В, некоторые SIM800L-модули способны выдерживать напряжение несколько выше 4 В.
Код (скетч Arduino) является базовым без каких-либо специальных библиотек SIM800L. В коде RX и TX-линии назначаются программным последовательным линиям. Это делается намеренно, так что аппаратный последовательный порт Arduino можно использовать с последовательным монитором. После загрузки кода вы можете перейти к следующему шагу. Сначала уделите немного времени, чтобы убедиться, что все подключения в порядке. Не забудьте вставить работающую карту micro-SIM в слот перед включением системы. Как правило, SIM-карта автоматически регистрируется в домашней сети в течение нескольких секунд. Обратите внимание, что встроенный светодиодный индикатор модуля SIM800L будет мигать один раз каждые две-три секунды (не непрерывно), когда он полностью зарегистрирован в сети. После этого вы должны нажать кнопку сброса один раз, чтобы система полностью функционировала.
#include
SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay = 13; // Выход для управления реле
void setup()
{
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW); // Исходное состояние реле
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1"); // Установка SMS в текстовый режим
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0"); // Процедура обработки вновь полученных сообщений
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\""); // Прочитать непрочитанные сообщения
}
void loop()
{
if(mySerial.available()){
delay(100);
// Последовательный буфер
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase();
// включить или выключить реле
if (inputString.indexOf("ON") > -1){
digitalWrite(relay, HIGH);
}
if (inputString.indexOf("OFF") > -1){
digitalWrite(relay, LOW);
}
delay(50);
// Удалить сообщения и сохранить память
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
Организуем отправку SMS. Отправка текста «ON» (не чувствительно к регистру) включает реле, а «OFF» выключает реле. Релейные контакты могут быть подключены по желанию для переключения любой подходящей электрической нагрузки. Вот что может отображаться в последовательном порте:

© digitrode.ru