SMS ovládač založený na SIM800L

SMS ovládač založený na SIM800L

SIM800L V2.0 GSM/GPRS je štvorpásmový GSM/GPRS modul kompatibilný s Arduino. Modul slúži na implementáciu funkcií GSM (hovory a SMS) a GPRS. Výhodou tohto modulu je rozhranie TTL, ktoré má napätie 5V, čo umožňuje priame pripojenie k Arduinu alebo akémukoľvek inému systému s napájacím napätím 5V. Väčšina modulov GSM/GPRS na trhu vyžaduje pripojenie regulátora alebo konverziu úrovne, zatiaľ čo v SIM800L V.2 GSM/GPRS nevyžaduje ďalšie obvody na konverziu úrovne rozhrania.

Uveďme príklad projektu pomocou SIM800L V.2 GSM/GPRS. Zmyslom projektu je ovládanie výhybiek pomocou SMS ovládača. Môžete jednoducho zapnúť a vypnúť väčšinu domácich spotrebičov v dome, ako je lama, ventilátor atď.

Charakteristika modulu SIM800L V.2 GSM/GPRS


Nižšie sú uvedené všetky technické charakteristiky modulu SIM800L V.2 GSM/GPRS:
  • Sériové rozhranie TTL kompatibilné s 3,3V a 5V kompatibilnými mikrokontrolérmi Arduino.
  • Modul SIM800L má sériové rozhranie TTL.
  • Konektor na pripojenie antény.
  • Podpora siete: štyri pásma 850/900/1800/1900 MHz, schopné uskutočňovať hovory, SMS a dátové prenosy s výrazne zníženou spotrebou batérie.
  • Rozhranie VDD TTL UART, takže môžete priamo pripojiť MCU, ako je 51MCU, ARM alebo MSP430.Zástrčka VDD sa používa na prispôsobenie napätia TTL.
  • Model: SIMCOM SIM800L
  • Prevádzkové napätie: od 3,7V do 5V;
  • rozmery: 40 mm x 28 mm x 3 mm
  • GPRS multislot triedy 12/10
  • Paketová služba GPRS triedy B
  • Vyhovuje GSM fáze 2/2+
  • Trieda 4 (2 watty pri 850/900 MHz)
  • Trieda 1 (1 Watt @ 1800/1900 MHz)


Potrebné materiály


SMS ovládač založený na SIM800L


Budete potrebovať:


1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4-kanálový 5V reléový modul.
4. Drôty - prepojky.
5. Napájanie 5V.
(Aktívne odkazy na obchod na nákup)

Montáž a konfigurácia


SMS ovládač založený na SIM800L


Po pripojení všetkých komponentov vytvorte program a potom ho nahrajte do svojho Arduina. Najprv si však musíte nainštalovať knižnicu GPRS, ktorú si môžete stiahnuť:

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


Programový kód pre Arduino


SMS ovládač založený na SIM800L


Po pripojení SIM800L, 4 kanálového reléového modulu a Arduina k počítaču zadajte nižšie uvedený kód a máte hotovo.



#include 

#include

#define TIMEOUT 5000

#define AKTÍVNE NÍZKE

#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(relé[i] , VÝSTUP);

digitalWrite(relé[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

while(!Seriál);

Serial.println("Aktivovať SIM800L V2 >>> Automaticky čítať SMS");

gprs.preInit();

oneskorenie(1000);

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

oneskorenie(1000);

Serial.print("init errorrn");

}



// Správa správy do režimu ASCII

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

ERROR("CHYBA:CNMI");

návrat;

}

// Čítanie prichádzajúcej SMS

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

ERROR("CHYBA:CNMI");

návrat;

}

int pjg = odpovedCislo.dlzka() + 1;

buffNumber[pjg];

answerNumber.toCharArray(buffNumber,pjg);

Serial.print("Odoslať odpoveď na číslo => ");

Serial.println(buffNumber);

Serial.println("Inicializácia dokončená");

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

}



void loop() {

// Zmena stavu relé ZAP/VYP

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

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

}



// Ak existujú vstupné dáta zo SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Uložte všetky údaje na lastCharRead, potom ak je tam r alebo n, ako konečný signál prichádzajúcej správy

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

String posledny riadok = String(aktualny riadok);



// Ak posledná správa +CMT označuje príchod novej správy

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

Serial.println(posledny riadok);

nextLineIsMessage = true;

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

if (nextLineIsMessage) {

Serial.println(posledny riadok);



// ================================================= ==== ================>> Funkcia reléového ovládača



//Ovládač relé 1



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

StatRelay[0] = AKTIF;

Serial.print("Odpovedať====>>>>");

Serial.println("Aktívny stav relé 1");

gprs.sendSMS(číslo buff, "Stav relé 1 aktívny");

}



else if (lastLine.indexOf("Relé 1 VYPNUTÉ") >= 0) {

StatRelay[0] = MATI;

Serial.print("Odpovedať====>>>>");

Serial.println("Stav relé 1 vypnutý");

gprs.sendSMS(číslo buff, "Stav relé 1 vypnutý");

}



//Ovládač relé 2



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

StatRelay[1] = AKTIF;

Serial.print("Odpovedať====>>>>");

Serial.println("Aktívny stav relé 2");

gprs.sendSMS(buffNumber, "Stav relé 2 aktívny");

}

else if (lastLine.indexOf("Relé 2 VYPNUTÉ") >= 0) {

StatRelay[1] = MATI;

Serial.print("Odpovedať====>>>>");

Serial.println("Stav relé 2 vypnutý");

gprs.sendSMS(číslo buff, "Stav relé 2 vypnutý");

}



//Ovládač relé 3

if (lastLine.indexOf("relé 3 ZAP") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Odpovedať====>>>>");

Serial.println("Aktívny stav relé 3");

gprs.sendSMS(buffNumber, "Stav relé 3 aktívny");

}

else if (lastLine.indexOf("relé 3 VYPNUTÉ") >= 0) {

StatRelay[2] = MATI;

Serial.print("Odpovedať====>>>>");

Serial.println("Stav relé 3 vypnutý");

gprs.sendSMS(číslo buff, "Stav relé 3 vypnutý");

}



//Ovládač relé 4

if (lastLine.indexOf("relé 4 ZAP") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Odpovedať====>>>>");

Serial.println("Aktívny stav relé 4");

gprs.sendSMS(číslo buff, "Stav relé 1 aktívny");

}

else if (lastLine.indexOf("relé 4 VYPNUTÉ") >= 0) {

StatRelay[3] = MATI;

Serial.print("Odpovedať====>>>>");

Serial.println("Stav relé 4 vypnutý");

gprs.sendSMS(číslo buff, "Stav relé 4 vypnutý");

}

nextLineIsMessage = false;

}



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



}

//Vymazať pole znakov pre ďalší riadok čítania

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

aktualny riadok[i] = (char)0;

}

currentLineIndex = 0;

}

inak {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Kontrola zariadenia


SMS ovládač založený na SIM800L


Nástroj funguje tak, že na SIM800L odošle SMS so špecifickou sekvenciou znakov. Napríklad na zapnutie relé 1 použite príkaz „Relé 1 ZAP“ a na jeho vypnutie použite príkaz „Relé 1 VYP“. Pre ostatné relé sú príkazy takmer rovnaké, s výnimkou poradového čísla každého relé, ktoré chcete ovplyvniť. Po automatickom odoslaní správy SIM800 odošle odpoveď vo forme správy o stave každej SIM karty.

Video z montáže, konfigurácie a testovania zariadenia



Pôvodný článok v angličtine
vráť sa
Komentujte
  • motýlikúsmevsmejúc sačervenať sausmievavýuvoľnený uvoľnenýúškrn
    srdce_očibozkávanie_srdcekissing_closed_eyesspláchnutýuľavilospokojnýúsmev
    žmurknutiestick_out_tongue_winking_eyevyplazený jazyk zatvorené očis úsmevombozkávaniezaseknutý_jazykspať
    ustarostenýzamračenéutrápenýotvor ústagrimasyzmätenýutíšil
    bez výrazunepobavenýpot_úsmevpotiť sasklamaný_uľavenýunavenýpasívny
    sklamanýzmätenýstrašnýstudený potvytrvaťplakaťvzlyk
    radosťužasnutýkričaťunavená_tvárnahnevanýzlosťtriumf
    ospalýmňammaskaslnečné okuliarezávrat_tvárimpsmile_imp
    neutrálna_tvárbez_ústnevinný
3+tri=
Komentáre (4)
  1. qeeeq
    #1 qeeeq Hostia 26. augusta 2017 23:50
    0
    Wow! Ako sa hovorí, všetko dômyselné je jednoduché. Nemusel som ani nič kupovať, asi každý má doma kopu takého odpadu
  2. Alexej
    #2 Alexej Hostia 16. decembra 2017 16:53
    0
    Nefunguje. Pri kompilácii sa zobrazí „Arduino: 1.8.5 hodinová zostava 2017/08/28 06:33 (Windows 7), doska: „Arduino/Genuino Uno“
    1. Denis
      #3 Denis Hostia 17. december 2017 08:11
      0
      K projektu musíte použiť cestu bez ruských písmen.
  3. Andrey
    #4 Andrey Hostia 10. februára 2019 11:54
    2
    V náčrte je veľa chýb. To nebude fungovať.