Сделай сам своими руками
Лайфхаки, мастер-классы, полезные советы, рецепты.
Добавить мастер-класс
Главная » Электроника » Электроника из Китая » SMS-контроллер на базе SIM800L
SMS-контроллер на базе SIM800L

SIM800L V2.0 GSM/GPRS - это четырехдиапазонный GSM/GPRS модуль, совместимый с Arduino. Модуль используется для реализации функций GSM (звонки и SMS) и GPRS. Преимуществом этого модуля являются интерфейс TTL, имеющие вольтаж равный 5В, что позволяет напрямую подключить его к Arduino или любой другой системе с напряжением питания 5В. Большинство GSM/GPRS модулей на рынке требуют подключений регулятора или преобразования уровня, в то время как в SIM800L V.2 GSM/GPRS не требует дополнительных цепей преобразования уровней интерфейсов.

Приведем пример проекта, использующего SIM800L V.2 GSM/GPRS. Смысл проекта в управлении переключателей с помощью SMS-контроллера. Вы с легкостью сможете включать и выключать большинство предметов бытовой техники в доме, как например ламу, вентилятор и так далее.

Характеристики модуля SIM800L V.2 GSM/GPRS


Ниже приведены все технические характеристики модуля SIM800L V.2 GSM/GPRS:
  • Серийный интерфейс TTL совместимый с 3,3В и 5В микроконтроллерами, совместимыми с Arduino.
  • Модуль SIM800L имеет серийный интерфейс TTL.
  • Штекер подключения антенны.
  • Поддержка сети: четыре диапазона 850/900/1800/1900 МГц, способные осуществлять звонки, SMS и передачу данных со значительно уменьшенным расходом заряда.
  • Интерфейс VDD TTL UART, так что вы сможете напрямую подключить MCU такой, как 51MCU, ARM или MSP430. Штекер VDD используется для соответствия вольтажу TTL.
  • Модель: SIMCOM SIM800L
  • Рабочий вольтаж: от 3,7В до 5В;
  • размеры: 40мм х 28мм х 3мм
  • GPRS мультислот-класс 12/10
  • GPRS пакетных сервис класс B
  • Соответствует GSM фазе 2/2+
  • Класс 4 (2 Ват @ 850/900 МГц)
  • Класс 1 (1Ват @ 1800/1900Мгц)


Необходимые материалы


SMS-контроллер на базе SIM800L


Вам понадобиться:


1. Модуль SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. 4-канальный 5-вольтовый модуль реле.
4. Провода - перемычки.
5. Источник питания 5 В.
(Ссылки активные на магазин для покупки)

Сборка и настройка


SMS-контроллер на базе SIM800L


Как только вы подключили все компоненты, создайте программу, после чего загрузите ее в свой Arduino. Но сначала, вы должны установить библиотеку GPRS, которую вы можете скачать:

gprs.zip [28.02 Kb] (cкачиваний: 905)


Программный код для Arduino


SMS-контроллер на базе SIM800L


После того, как вы подключили ваш SIM800L, 4-канальное модуль реле и Arduino к вашему компьютеру, впишите код, располагающийся ниже и все готово.


#include 
#include
#define TIMEOUT 5000
#define ACTIVE LOW
#define OFF HIGH

byte Relay[] = {A0,A1,A2,A3};
byte StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS gprs;

void setup() {
for(int i=0; i < 4; i++) {
pinMode (Relay[i] , OUTPUT);
digitalWrite (Relay[i], MATI);
StatRelay[i] = MATI;
}

Serial.begin(9600);
while (!Serial);
Serial.println("Activate SIM800L V2 >>> Automatically Read SMS");
gprs.preInit();
delay(1000);
while (0 != gprs.init()) {
delay(1000);
Serial.print("init errorrn");
}

// Manage message to mode ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERROR("ERROR:CNMI");
return;
}
// Read Incoming SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR("ERROR:CNMI");
return;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Send reply to number = > ");
Serial.println(buffNumber);
Serial.println("Initialization Done");
Serial.println("=============================================================");
}

void loop() {
// Change status Relay ON / OFF
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}

// If there is input data from SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();

// Save all data on lastCharRead, then if there is r or n, as a final signal of incoming message
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(currentLine);

// If the last message +CMT indicates new message arrive
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastLine);
nextLineIsMessage = true;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(lastLine);

// ================================================================>> Function of Relay Controller

//Relay 1 Controller

if (lastLine.indexOf("Relay 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("Relay 1 Status Active");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}

else if (lastLine.indexOf("Relay 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("Relay 1 Status Off");
gprs.sendSMS (buffNumber, "Relay 1 Status Off");
}

//Relay 2 Controller

if (lastLine.indexOf("Relay 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("Relay 2 Status Active");
gprs.sendSMS (buffNumber, "Relay 2 Status Active");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("Relay 2 Status Off");
gprs.sendSMS (buffNumber, "Relay 2 Status Off");
}

//Relay 3 Controller
if (lastLine.indexOf("Relay 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("Relay 3 Status Active");
gprs.sendSMS (buffNumber, "Relay 3 Status Active");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("Relay 3 Status Off");
gprs.sendSMS (buffNumber, "Relay 3 Status Off");
}

//Relay 4 Controller
if (lastLine.indexOf("Relay 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Reply====>>>> ");
Serial.println("Relay 4 Status Active");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Reply====>>>> ");
Serial.println("Relay 4 Status Off");
gprs.sendSMS (buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}

// ==================================================================>>

}
//Clear char array for next line of read
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
else {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}


Проверка устройства


SMS-контроллер на базе SIM800L


Инструмент работает с помощью отправки SMS на SIM800L с определенной последовательностью символов. Например, чтобы включить реле 1 используйте команду «Relay 1 ON», а для того чтобы выключить используйте команду «Relay 1 OFF». Для остальных реле почти такие же команды, за исключением порядкового номера каждого реле, на которое вы хотите воздействовать. После автоматической отправки сообщения, SIM800 отправит ответ в виде сообщения о статусе каждой SIM-карты.

Видео сборки, настройки и и проверки устройства



Original article in English


Прокомментировать
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
3+три=
Комментарии (4)
  1. qeeeq
    #1 qeeeq Гости 26 августа 2017 23:50
    0
    Вот это да! Как говорится все гениальное просто. Даже и покупать ничего не пришлось, наверное у каждого такого хлама дома навалом
  2. Алексей
    #2 Алексей Гости 16 декабря 2017 16:53
    0
    Не получается. При компиляции пишет "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Плата:"Arduino/Genuino Uno"
    1. Денис
      #3 Денис Гости 17 декабря 2017 08:11
      0
      Вам нужно использовать путь без русских букв до проекта.
  3. Андрей
    #4 Андрей Гости 10 февраля 2019 11:54
    2
    В скетче куча ошибок. Работать не будет.
«Сделай сам, сделать своими руками» - inwit.ru сайт интересных самоделок, часто сделанных из предметов в домашних условиях и подручных материалов. Можно узнать много нового и интересного в опублекованных решениях умельцев и изобретателей! Пошаговые мастер-классы с описанием и фото, лайфхаки, технологии - все, что нужно для рукоделия настоящему мастеру или просто умельцу с пытливым умом. Поделки самой разнообразной сложности, не малый выбор идейна и правлений для вашего творчества. И просто интересно узнать необычные и простые решения для повседневной жизни.
© inwit.ru, 2009 - 2023
Ваш E-Mail: Ваш пароль:
Войти через:
Вконтакте Одноклассники