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

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

SIM800L V2.0 GSM/GPRS е четирибандов GSM/GPRS модул, съвместим с Arduino. Модулът се използва за реализиране на GSM (разговори и SMS) и GPRS функции. Предимството на този модул е ​​TTL интерфейсът, който има напрежение от 5V, което ви позволява директно да го свържете към Arduino или всяка друга система с 5V захранващо напрежение. Повечето 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.3V и 5V Arduino съвместими микроконтролери.
  • Модулът SIM800L има TTL сериен интерфейс.
  • Щепсел за свързване на антената.
  • Мрежова поддръжка: четири ленти 850/900/1800/1900 MHz, способни да извършват разговори, SMS и трансфер на данни със значително намалена консумация на батерия.
  • VDD TTL UART интерфейс, така че можете директно да свържете MCU като 51MCU, ARM или MSP430.Щепселът VDD се използва за съпоставяне на TTL напрежението.
  • Модел: SIMCOM SIM800L
  • Работно напрежение: от 3.7V до 5V;
  • размери: 40mm x 28mm x 3mm
  • GPRS мултислот клас 12/10
  • GPRS пакетна услуга клас B
  • Съответства на GSM фаза 2/2+
  • Клас 4 (2 вата при 850/900 MHz)
  • Клас 1 (1Watt @ 1800/1900MHz)


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


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


Ще имаш нужда:


1. SIM800L V.2 GSM/GPRS модул.
2. Ардуино Уно.
3. 4-канален 5V релеен модул.
4. Проводници - джъмпери.
5. Захранване 5V.
(Активни връзки към магазина за покупка)

Монтаж и конфигурация


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


След като свържете всички компоненти, създайте програма и след това я качете на вашия Arduino. Но първо трябва да инсталирате GPRS библиотеката, която можете да изтеглите:

gprs.zip [28.02 Kb] (изтегляния: 887)


Програмен код за Arduino


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


След като свържете своя SIM800L, 4-канален релеен модул и Arduino към вашия компютър, въведете кода по-долу и сте готови.



#включи 

#включи

#define TIMEOUT 5000

#define АКТИВНО НИСКО

#define OFF HIGH



байт реле[] = {A0,A1,A2,A3};

байт StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = невярно;

String replyNumber = "089510863958";

GPRS gprs;



void setup() {

for(int i=0; i < 4; i++) {

pinMode(Реле[i], ИЗХОД);

digitalWrite(Реле[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

докато (!Сериен);

Serial.println("Активиране на SIM800L V2 >>> Автоматично четене на SMS");

gprs.preInit();

забавяне (1000);

докато (0 != gprs.init()) {

забавяне (1000);

Serial.print("инициална грешкаrn");

}



// Управление на съобщение в режим ASCII

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

ГРЕШКА("ГРЕШКА:CNMI");

връщане;

}

// Прочетете входящите SMS

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ГРЕШКА("ГРЕШКА:CNMI");

връщане;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Изпрати отговор на номер => ");

Serial.println(buffNumber);

Serial.println("Инициализацията е извършена");

Serial.println("=============================================== =============== =================");

}



void loop() {

// Промяна на статуса Реле ВКЛ./ИЗКЛ

for(int i=0; i < 4; i++) {

digitalWrite(Реле[i], StatRelay[i]);

}



// Ако има входни данни от SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Запазване на всички данни на lastCharRead, след това, ако има r или n, като последен сигнал за входящо съобщение

if (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(currentLine);



// Ако последното съобщение +CMT показва пристигане на ново съобщение

if (lastLine.startsWith("+CMT:")) {

Serial.println(последен ред);

nextLineIsMessage = вярно;

} else if (lastLine.length() > 0) {

if (nextLineIsMessage) {

Serial.println(последен ред);



// ================================================== ==== ================>> Функция на релейния контролер



// Контролер на реле 1



if (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 1 е активно");

gprs.sendSMS(buffNumber, "Състояние на реле 1 активно");

}



else if (lastLine.indexOf("Relay 1 OFF") >= 0) {

StatRelay[0] = MATI;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 1 е изключено");

gprs.sendSMS(buffNumber, "Състояние на реле 1 изключено");

}



// Контролер на реле 2



if (lastLine.indexOf("Relay 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 2 е активно");

gprs.sendSMS(buffNumber, "Състояние на реле 2 активно");

}

else if (lastLine.indexOf("Relay 2 OFF") >= 0) {

StatRelay[1] = MATI;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 2 е изключено");

gprs.sendSMS(buffNumber, "Състояние на реле 2 изключено");

}



// Контролер на реле 3

if (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 3 е активно");

gprs.sendSMS(buffNumber, "Състояние на реле 3 активно");

}

else if (lastLine.indexOf("Relay 3 OFF") >= 0) {

StatRelay[2] = MATI;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 3 е изключено");

gprs.sendSMS(buffNumber, "Състояние на реле 3 изключено");

}



// Контролер на реле 4

if (lastLine.indexOf("Relay 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Отговор====>>>> ");

Serial.println("Състояние на реле 4 активно");

gprs.sendSMS(buffNumber, "Състояние на реле 1 активно");

}

else if (lastLine.indexOf("Relay 4 OFF") >= 0) {

StatRelay[3] = MATI;

Serial.print("Отговор====>>>> ");

Serial.println("Състоянието на реле 4 е изключено");

gprs.sendSMS(buffNumber, "Състояние на реле 4 изключено");

}

nextLineIsMessage = невярно;

}



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



}

//Изчистване на масив от символи за следващ ред за четене

for ( int i = 0; i < sizeof(currentLine); ++i ) {

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

иначе {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



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


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


Инструментът работи чрез изпращане на SMS до SIM800L с определена последователност от знаци. Например, за да включите реле 1, използвайте командата „Реле 1 ВКЛ.“, а за да го изключите, използвайте командата „Реле 1 ИЗКЛ.“. За останалите релета командите са почти същите, с изключение на поредния номер на всяко реле, на което искате да повлияете. След автоматично изпращане на съобщението, SIM800 ще изпрати отговор под формата на съобщение за състоянието на всяка SIM карта.

Видео за сглобяване, конфигуриране и тестване на устройството



Оригинална статия на английски език
Коментирайте
  • папионкаУсмихни сесмее сеИзчервяванеусмивкаотпуснат отпуснатусмивка
    сърце_очиkissing_heartцелуване_затворени_очизачервенаоблекченудовлетворенусмивка
    намигвамизплезен_език_намигащо_окоизплезен език затворени очиухиленцелуванеизплезен_езикспящ
    притесненнамръщенизмъченотворена устагримасаобърканпритихнал
    безизразеннезабавенsweat_smileпотразочарован_облекченуморенпасивен
    разочарованобърканстрахливстудена потупорствамплачаридание
    радостудивенвикуморено_лицеядосаняросттриумф
    сънливвкусномаскаслънчеви очилазамаяно_лицеимпусмихнат_имп
    неутрално_лицеno_mouthневинен
3+три=
Коментари (4)
  1. qeeeq
    #1 qeeeq гости 26 август 2017 г. 23:50 ч
    0
    Еха! Както се казва, всичко гениално е просто. Дори не трябваше да купувам нищо, вероятно всеки има купчина такива боклуци у дома
  2. Алексей
    #2 Алексей гости 16 декември 2017 16:53 ч
    0
    Не работи. При компилиране се казва „Arduino: 1.8.5 почасово изграждане 2017/08/28 06:33 (Windows 7), Board: „Arduino/Genuino Uno“
    1. Денис
      #3 Денис гости 17 декември 2017 г. 08:11 ч
      0
      Трябва да използвате път без руски букви към проекта.
  3. Андрей
    #4 Андрей гости 10 февруари 2019 г. 11:54 ч
    2
    Има много грешки в скицата. Няма да работи.