SIM800L alapú SMS vezérlő

SIM800L alapú SMS vezérlő

A SIM800L V2.0 GSM/GPRS egy négysávos GSM/GPRS modul, amely kompatibilis az Arduino-val. A modul GSM (hívások és SMS) és GPRS funkciók megvalósítására szolgál. Ennek a modulnak az előnye az 5V-os feszültségű TTL interfész, amely lehetővé teszi, hogy közvetlenül csatlakoztassa Arduino-hoz vagy bármely más, 5 V-os tápfeszültségű rendszerhez. A legtöbb GSM/GPRS modul a piacon szabályozó csatlakozást vagy szintátalakítást igényel, míg a SIM800L V.2 GSM/GPRS esetében nincs szükség további interfész szintű átalakító áramkörökre.

Nézzünk egy példát egy SIM800L V.2 GSM/GPRS-t használó projektre. A projekt lényege a kapcsolók vezérlése SMS vezérlővel. Könnyedén be- és kikapcsolhatja a házban található legtöbb háztartási gépet, mint például a lámát, a ventilátort stb.

A SIM800L V.2 GSM/GPRS modul jellemzői


Az alábbiakban bemutatjuk a SIM800L V.2 GSM/GPRS modul összes műszaki jellemzőjét:
  • TTL soros interfész kompatibilis a 3.3V és 5V Arduino kompatibilis mikrokontrollerekkel.
  • A SIM800L modul TTL soros interfésszel rendelkezik.
  • Antenna csatlakozó dugó.
  • Hálózati támogatás: négy sáv 850/900/1800/1900 MHz, hívások kezdeményezésére, SMS-ek és adatátvitelre alkalmas jelentősen csökkentett akkumulátorfogyasztás mellett.
  • VDD TTL UART interfész, így közvetlenül csatlakoztathat MCU-t, például 51MCU-t, ARM-et vagy MSP430-at.A VDD dugót a TTL feszültség illesztésére használják.
  • Modell: SIMCOM SIM800L
  • Üzemi feszültség: 3,7V-tól 5V-ig;
  • Méretek: 40mm x 28mm x 3mm
  • GPRS multislot osztály 12/10
  • B osztályú GPRS csomagszolgáltatás
  • Megfelel a 2/2+ GSM fázisnak
  • 4. osztály (2 Watt @ 850/900 MHz)
  • 1. osztály (1 Watt @ 1800/1900 MHz)


Szükséges anyagok


SIM800L alapú SMS vezérlő


Szükséged lesz:


1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4 csatornás 5V relé modul.
4. Vezetékek - jumperek.
5. Tápellátás 5V.
(Aktív linkek a bolthoz a vásárláshoz)

Összeszerelés és konfiguráció


SIM800L alapú SMS vezérlő


Miután csatlakoztatta az összes összetevőt, hozzon létre egy programot, majd töltse fel az Arduino-ra. Először azonban telepítenie kell a GPRS könyvtárat, amelyet letölthet:

gprs.zip [28,02 Kb] (letöltések száma: 887)


Az Arduino programkódja


SIM800L alapú SMS vezérlő


Miután csatlakoztatta a SIM800L-t, a 4 csatornás relémodult és az Arduino-t a számítógépéhez, írja be az alábbi kódot, és kész.



#beleértve 

#beleértve

#define IDŐTARTÓ 5000

#define AKTÍV ALACSONY

#define KI MAGAS



byte Relay[] = {A0,A1,A2,A3};

bájt 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("SIM800L V2 aktiválása >>> SMS automatikus olvasása");

gprs.preInit();

késleltetés(1000);

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

késleltetés(1000);

Serial.print("init errorrn");

}



// Üzenet kezelése ASCII módba

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", IDŐTÚL)) {

ERROR("HIBA:CNMI");

Visszatérés;

}

// Bejövő SMS olvasása

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", IDŐTÚL)) {

ERROR("HIBA:CNMI");

Visszatérés;

}

int pjg = válaszSzám.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Válasz küldése a számra => ");

Serial.println(buffNumber);

Serial.println("Inicializálás kész");

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

}



void loop() {

// Állapot módosítása Relé BE / KI

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

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

}



// Ha vannak bemeneti adatok a SIM800-ról

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Mentse el az összes adatot a lastCharReadben, majd ha van r vagy n, a bejövő üzenet végső jeleként

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

String lastLine = String(aktuálisLine);



// Ha az utolsó +CMT üzenet új üzenet érkezését jelzi

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

Serial.println(lastLine);

nextLineIsMessage = igaz;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================= ==== ================>> A relévezérlő funkciója



//Relé 1 vezérlő



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

StatRelay[0] = AKTIF;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 1 állapota aktív");

gprs.sendSMS(buffNumber, "Relé 1 állapota aktív");

}



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

StatRelay[0] = MATI;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 1 állapota kikapcsolva");

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

}



//Relé 2 vezérlő



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

StatRelay[1] = AKTIF;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 2 állapota aktív");

gprs.sendSMS(buffNumber, "Relé 2 állapota aktív");

}

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

StatRelay[1] = MATI;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 2 állapota kikapcsolva");

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

}



//Relé 3 vezérlő

if (lastLine.indexOf("Relé 3 BE") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 3 állapota aktív");

gprs.sendSMS(buffNumber, "Relé 3 állapota aktív");

}

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

StatRelay[2] = MATI;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 3 állapota kikapcsolva");

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

}



//Relé 4 vezérlő

if (lastLine.indexOf("Relé 4 BE") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 4 állapota aktív");

gprs.sendSMS(buffNumber, "Relé 1 állapota aktív");

}

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

StatRelay[3] = MATI;

Serial.print("Válasz====>>>> ");

Serial.println("Relé 4 állapota kikapcsolva");

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

}

nextLineIsMessage = false;

}



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



}

//Char tömb törlése az olvasás következő sorához

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

aktuálisLine[i] = (char)0;

}

aktuálisLineIndex = 0;

}

más {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Eszköz ellenőrzése


SIM800L alapú SMS vezérlő


Az eszköz úgy működik, hogy SMS-t küld a SIM800L-re meghatározott karaktersorozattal. Például az 1. relé bekapcsolásához használja a „Relé 1 BE” parancsot, kikapcsolásához pedig a „Relé 1 KI” parancsot. A többi relék parancsai szinte azonosak, kivéve az egyes befolyásolni kívánt relék sorszámát. Az üzenet automatikus elküldése után a SIM800 üzenet formájában választ küld az egyes SIM-kártyák állapotáról.

Videó a készülék összeszereléséről, konfigurációjáról és teszteléséről



Eredeti cikk angolul
Megjegyzés
  • csokornyakkendőmosolynevetéselpirulmosolygósellazult ellazultönelégült mosoly
    szív_szemkissing_heartcsókoló_csukott_szemmelkipirultmegkönnyebbültenelégedettvigyorog
    Rákacsintáskinyújtotta a nyelvét pislogó szemmelkinyújtotta a nyelvét csukott szemmelvigyorogvacsókolózáselakadt_nyelvalvás
    aggódóa homlokát ráncolvagyötrődvenyitott szájgrimaszolvazavaroselhallgatott
    kifejezéstelennem szórakozottverejték_mosolyizzadcsalódott_megkönnyebbültfáradtpasszív
    csalódottösszezavarodvafélelmeteshideg verejtékkitartanikiáltászokogás
    örömelképedvesikolyfáradt_arcmérgesdühdiadal
    álmosfincsimaszknapszemüvegszédült_arcmanómosolygó_imp
    semleges_arcno_mouthártatlan
3+három=
Megjegyzések (4)
  1. qeeeq
    #1 qeeeq Vendégek 2017. augusztus 26. 23:50
    0
    Azta! Ahogy mondani szokás, minden zseniális egyszerű. Nem is kellett semmit vennem, valószínűleg mindenkinek van otthon egy halom ilyen szemét
  2. Alekszej
    #2 Alekszej Vendégek 2017. december 16. 16:53
    0
    Nem működik. Fordításkor ez áll: "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Vendégek 2017. december 17. 08:11
      0
      Orosz betűk nélküli elérési utat kell használnia a projekthez.
  3. Andrey
    #4 Andrey Vendégek 2019. február 10. 11:54
    2
    Sok hiba van a vázlatban. Nem fog menni.