SMS valdiklis SIM800L pagrindu

SMS valdiklis SIM800L pagrindu

SIM800L V2.0 GSM/GPRS yra keturių dažnių juostų GSM/GPRS modulis, suderinamas su Arduino. Modulis naudojamas GSM (skambučiai ir SMS) ir GPRS funkcijoms įgyvendinti. Šio modulio privalumas yra TTL sąsaja, kurios įtampa yra 5V, kuri leidžia tiesiogiai prijungti jį prie Arduino ar bet kurios kitos sistemos su 5V maitinimo įtampa. Daugumai rinkoje esančių GSM/GPRS modulių reikia reguliatoriaus jungčių arba lygio konvertavimo, o SIM800L V.2 GSM/GPRS nereikalauja papildomų sąsajos lygio konvertavimo grandinių.

Pateikiame projekto pavyzdį naudojant SIM800L V.2 GSM/GPRS. Projekto esmė – valdyti jungiklius naudojant SMS valdiklį. Galite nesunkiai įjungti ir išjungti daugumą namuose esančių buitinių prietaisų, tokių kaip lama, ventiliatorius ir pan.

SIM800L V.2 GSM/GPRS modulio charakteristikos


Žemiau pateikiamos visos SIM800L V.2 GSM/GPRS modulio techninės charakteristikos:
  • TTL nuoseklioji sąsaja suderinama su 3,3 V ir 5 V Arduino suderinamais mikrovaldikliais.
  • SIM800L modulis turi TTL nuosekliąją sąsają.
  • Antenos prijungimo kištukas.
  • Tinklo palaikymas: keturios 850/900/1800/1900 MHz juostos, galinčios skambinti, SMS ir perduoti duomenis su žymiai sumažintu akumuliatoriaus suvartojimu.
  • VDD TTL UART sąsaja, todėl galite tiesiogiai prijungti MCU, pvz., 51MCU, ARM arba MSP430.VDD kištukas naudojamas TTL įtampai suderinti.
  • Modelis: SIMCOM SIM800L
  • Darbinė įtampa: nuo 3,7V iki 5V;
  • išmatavimai: 40mm x 28mm x 3mm
  • GPRS kelių lizdų klasė 12/10
  • B klasės GPRS paketų paslaugos
  • Atitinka GSM fazę 2/2+
  • 4 klasė (2 vatai @ 850/900 MHz)
  • 1 klasė (1 vatas @ 1800/1900 MHz)


Reikalingos medžiagos


SMS valdiklis SIM800L pagrindu


Jums reikės:


1. SIM800L V.2 GSM/GPRS modulis.
2. Arduino Uno.
3. 4 kanalų 5V relės modulis.
4. Laidai – džemperiai.
5. Maitinimas 5V.
(Aktyvios nuorodos į parduotuvę pirkti)

Surinkimas ir konfigūracija


SMS valdiklis SIM800L pagrindu


Sujungę visus komponentus, sukurkite programą ir įkelkite ją į savo Arduino. Tačiau pirmiausia turite įdiegti GPRS biblioteką, kurią galite atsisiųsti:

gprs.zip [28,02 Kb] (atsisiuntimai: 887)


Arduino programos kodas


SMS valdiklis SIM800L pagrindu


Prijungę SIM800L, 4 kanalų relės modulį ir Arduino prie kompiuterio, įveskite žemiau esantį kodą ir viskas.



#įtraukti 

#įtraukti

#define LAIKAS 5000

#define ACTIVE LOW

#define OFF HIGH



baitų perdavimas[] = {A0,A1,A2,A3};

baitas StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

Eilutė replyNumber = "089510863958";

GPRS gprs;



void setup() {

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

pinMode(Relė[i] , IŠVESTIS);

digitalWrite(Relay[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

while(!Serialas);

Serial.println("Suaktyvinti SIM800L V2 >>> Automatiškai skaityti SMS");

gprs.preInit();

delsimas (1000);

while (0 != gprs.init()) {

delsimas (1000);

Serial.print("init errorrn");

}



// Tvarkyti pranešimą ASCII režimu

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

KLAIDA("KLAIDA:CNMI");

grąžinti;

}

// Skaityti gaunamas SMS

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

KLAIDA("KLAIDA:CNMI");

grąžinti;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Siųsti atsakymą numeriu => ");

Serial.println(buffNumber);

Serial.println("Inicializacija atlikta");

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

}



void loop() {

// Keisti būseną Relė ON / OFF

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

digitalWrite(Relay[i], StatRelay[i]);

}



// Jei yra įvesties duomenų iš SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Išsaugokite visus lastCharRead duomenis, tada, jei yra r arba n, kaip paskutinį gaunamo pranešimo signalą

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

String paskutinė eilutė = String(dabartinė eilutė);



// Jei paskutinis pranešimas +CMT rodo naują pranešimą

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

Serial.println(paskutinė eilutė);

nextLineIsMessage = tiesa;

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

if (nextLineIsMessage) {

Serial.println(paskutinė eilutė);



// ================================================= ==== ================>> Relės valdiklio funkcija



//Relės 1 valdiklis



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

StatRelay[0] = AKTIF;

Serial.print("Atsakyti====>>>> ");

Serial.println("1 relės būsena aktyvi");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}



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

StatRelay[0] = MATI;

Serial.print("Atsakyti====>>>> ");

Serial.println("1 relės būsena išjungta");

gprs.sendSMS(buffNumber, "Relay 1 Status Off");

}



//Relės 2 valdiklis



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

StatRelay[1] = AKTIF;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relės 2 būsena aktyvi");

gprs.sendSMS(buffNumber, "Relay 2 Status Active");

}

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

StatRelay[1] = MATI;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relay 2 Status Off");

gprs.sendSMS(buffNumber, "Relay 2 Status Off");

}



//Relės 3 valdiklis

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

StatRelay[2] = AKTIF;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relės 3 būsena aktyvi");

gprs.sendSMS(buffNumber, "Relay 3 Status Active");

}

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

StatRelay[2] = MATI;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relės 3 būsena išjungta");

gprs.sendSMS(buffNumber, "Relay 3 Status Off");

}



//Relės 4 valdiklis

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

StatRelay[3] = AKTIF;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relės 4 būsena aktyvi");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}

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

StatRelay[3] = MATI;

Serial.print("Atsakyti====>>>> ");

Serial.println("Relės 4 būsena išjungta");

gprs.sendSMS(buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}



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



}

//Išvalyti char masyvą kitai skaitymo eilutei

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

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

Kitas {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Įrenginio patikrinimas


SMS valdiklis SIM800L pagrindu


Įrankis veikia siunčiant SMS į SIM800L su tam tikra simbolių seka. Pavyzdžiui, norėdami įjungti 1 relę, naudokite komandą „Relay 1 ON“, o norėdami ją išjungti – komandą „Relay 1 OFF“. Likusių relių komandos yra beveik vienodos, išskyrus kiekvienos relės, kurią norite paveikti, eilės numerį. Automatiškai išsiuntus žinutę, SIM800 išsiųs atsakymą pranešimo forma apie kiekvienos SIM kortelės būseną.

Vaizdo įrašas apie įrenginio surinkimą, konfigūravimą ir testavimą



Originalus straipsnis anglų kalba
grįžk
komentuoti
  • varlytėšypsokisjuokdamasisskaistalaišypsenėlėatsipalaidavęs atsipalaidavęsišsišiepti
    širdis_akysbučiuojantis_širdisbučiuojantis_užmerktas_akisparaudusipalengvėjopatenkintasšypsnys
    mirktelėtiužstrigęs_liežuvis_mirksi_akisiškištas liežuvis užmerktos akysišsišiepęsbučiuojasiįstrigo_liežuvismiega
    neramussusiraukęsskausmingasišsižiokgrimasassutrikęsnutilo
    be išraiškosnelinksmasprakaito_šypsenaprakaitasnusivylęs_palengvėjęspavargęspasyvus
    nusivylęssutrikęsbaisušaltas prakaitasištvertiverktiraudoti
    džiaugsmasapstulbintasrėktipavargęs_veidelispiktaspyktistriumfas
    mieguistasskanukaukėakiniai nuo saulėsgalvos svaigimasimpbesišypsantis_imp
    neutralus_veidasno_mouthnekaltas
3+trys=
Komentarai (4)
  1. qeeeq
    #1 qeeeq Svečiai 2017 m. rugpjūčio 26 d. 23.50 val
    0
    Oho! Kaip sakoma, viskas išradinga yra paprasta. Man net nereikėjo nieko pirkti, turbūt kiekvienas turi namuose krūvą tokių šiukšlių
  2. Aleksejus
    #2 Aleksejus Svečiai 2017 m. gruodžio 16 d. 16:53
    0
    Neveikia. Kompiliuojant rašoma: „Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:“Arduino/Genuino Uno“
    1. Denisas
      #3 Denisas Svečiai 2017 m. gruodžio 17 d. 08:11
      0
      Į projektą reikia naudoti kelią be rusiškų raidžių.
  3. Andrejus
    #4 Andrejus Svečiai 2019 m. vasario 10 d. 11.54 val
    2
    Eskizuose yra daug klaidų. Tai neveiks.