2016-11-12 в 12:27 (последнее изменение 2021-04-19 в 23:15)
В примере покажем как работает GSM модуль SIM800L. Можно использовать и другие GSM модули SIMxxx так как они работаю по схожему принципу, а отличаются функционалом. В данном случае будем отправлять SMS с командами "1" и "0" тем самым включая и отключая нашу нагрузку - светодиод. вы же можете использовать какое либо реле. А управлять можно будет чем угодно, тут на что фантазии и навыков хватит.
Подключается к Arduino через серийный порт:
Pin 2 Arduino - pin TX SIM800L
Pin 3 Arduino - pin RX SIM800L

Модуль sim800 питается от 3.7 до 4.2 вольт. Если его подключить к 5 вольт то модуль просто сгорит, а если к 3.3 вольт то этого будет недостаточно. Поэтому используем стабилизатор на 4 вольта. Вся система питается у меня от блока аккумулятора 7.2 вольта.
В Arduino есть встроенный преобразователь который позволяет подавать напряжение до 20 вольт. Для примера работы использовал простой светодиод подключенный к pin 10 Arduino.
Отправляем на номер sim карты которая установлена в модуле сообщение с текстом "1" и в течении 10 секунд светодиод загорится.
Для того чтобы выключить светодиод, отправим другое сообщение, но уже с текстом "0". И через некоторое время светодиод погаснет.
Скетч для Arduino
Код
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(2, 3); // установка контактов 2 и 3 для программного порта
int LedPin = 10; // для реле
void setup()
{
gprsSerial.begin(4800);
pinMode(LedPin, OUTPUT);
// настройка приема сообщений
gprsSerial.print("AT+CMGF=1\r");
delay(500); // задержка на обработку команды
gprsSerial.print("AT+IFC=1, 1\r");
delay(500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
delay(500); // задержка на обработку команды
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
delay(700);
}
String currStr = "";
// если эта строка сообщение, то переменная примет значение True
boolean isStringMessage = false;
void loop()
{
if (!gprsSerial.available())
return;
char currSymb = gprsSerial.read();
if ('\r' == currSymb) {
if (isStringMessage) {
// если текущая строка – сообщение, то…
if (!currStr.compareTo("1")) {
digitalWrite(LedPin, HIGH);
} else if (!currStr.compareTo("0")) {
digitalWrite(LedPin, LOW);
}
isStringMessage = false;
} else {
if (currStr.startsWith("+CMT")) {
// если текущая строка начинается с "+CMT", то следующая сообщение
isStringMessage = true;
}
}
currStr = "";
} else if ('\n' != currSymb) {
currStr += String(currSymb);
}
}
Не пропустите обновления! Подписывайтесь на нашу группу
Вконтакте.
Так же у нас есть
Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!
Просмотров: 23394. Оценка статьи:
4.6 из 5. Уже оценило
8 читателей