SMS ovladač založený na SIM800L

SMS ovladač založený na SIM800L

SIM800L V2.0 GSM/GPRS je čtyřpásmový modul GSM/GPRS kompatibilní s Arduino. Modul slouží k implementaci funkcí GSM (volání a SMS) a GPRS. Výhodou tohoto modulu je TTL rozhraní, které má napětí 5V, což umožňuje přímé připojení k Arduinu nebo jinému systému s napájecím napětím 5V. Většina modulů GSM/GPRS na trhu vyžaduje připojení regulátoru nebo konverzi úrovně, zatímco v SIM800L V.2 GSM/GPRS nevyžaduje další obvody pro konverzi úrovně rozhraní.

Uveďme příklad projektu využívajícího SIM800L V.2 GSM/GPRS. Smyslem projektu je ovládání spínačů pomocí SMS ovladače. Většinu domácích spotřebičů v domě, jako je lama, ventilátor a podobně, můžete snadno zapnout a vypnout.

Charakteristika modulu SIM800L V.2 GSM/GPRS


Níže jsou uvedeny všechny technické vlastnosti modulu SIM800L V.2 GSM/GPRS:
  • Sériové rozhraní TTL kompatibilní s 3,3V a 5V kompatibilními mikrokontroléry Arduino.
  • Modul SIM800L má sériové rozhraní TTL.
  • Zástrčka pro připojení antény.
  • Podpora sítě: čtyři pásma 850/900/1800/1900 MHz, schopná volat, SMS a datové přenosy s výrazně sníženou spotřebou baterie.
  • Rozhraní VDD TTL UART, takže můžete přímo připojit MCU, jako je 51MCU, ARM nebo MSP430.Zástrčka VDD se používá k přizpůsobení napětí TTL.
  • Model: SIMCOM SIM800L
  • Provozní napětí: od 3,7V do 5V;
  • rozměry: 40 mm x 28 mm x 3 mm
  • GPRS multislot třídy 12/10
  • Paketová služba GPRS třídy B
  • Vyhovuje GSM fázi 2/2+
  • Třída 4 (2 Watt při 850/900 MHz)
  • Třída 1 (1 Watt @ 1800/1900 MHz)


Potřebné materiály


SMS ovladač založený na SIM800L


Budeš potřebovat:


1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4kanálový 5V reléový modul.
4. Dráty - propojky.
5. Napájení 5V.
(aktivní odkazy na obchod pro nákup)

Montáž a konfigurace


SMS ovladač založený na SIM800L


Jakmile připojíte všechny komponenty, vytvořte program a poté jej nahrajte do svého Arduina. Nejprve však musíte nainstalovat knihovnu GPRS, kterou si můžete stáhnout:

gprs.zip [28,02 Kb] (stažení: 887)


Programový kód pro Arduino


SMS ovladač založený na SIM800L


Jakmile připojíte SIM800L, 4kanálový reléový modul a Arduino k počítači, zadejte níže uvedený kód a máte hotovo.



#zahrnout 

#zahrnout

#define TIMEOUT 5000

#define AKTIVNÍ NÍZKÁ

#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(!Seriál);

Serial.println("Aktivovat SIM800L V2 >>> Automaticky číst SMS");

gprs.preInit();

zpoždění(1000);

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

zpoždění(1000);

Serial.print("init errorrn");

}



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

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", ČASOVÝ LIMIT)) {

ERROR("CHYBA:CNMI");

vrátit se;

}

// Čtení příchozích SMS

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", ČASOVÝ LIMIT)) {

ERROR("CHYBA:CNMI");

vrátit se;

}

int pjg = replyCislo.length() + 1;

buffNumber[pjg];

answerNumber.toCharArray(buffNumber,pjg);

Serial.print("Odeslat odpověď na číslo => ");

Serial.println(buffNumber);

Serial.println("Inicializace dokončena");

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

}



void loop() {

// Změna stavu relé ZAP / VYP

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

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

}



// Pokud existují vstupní data ze SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Uložte všechna data na lastCharRead, pak pokud je r nebo n, jako konečný signál příchozí zprávy

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

String lastLine = String(currentLine);



// Pokud poslední zpráva +CMT indikuje příchod nové zprávy

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

Serial.println(lastLine);

nextLineIsMessage = true;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================== ==== ================>> Funkce reléového ovladače



//Řadič relé 1



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

StatRelay[0] = AKTIF;

Serial.print("Odpovědět====>>>>");

Serial.println("Stav relé 1 aktivní");

gprs.sendSMS(buffNumber, "Stav relé 1 aktivní");

}



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

StatRelay[0] = MATI;

Serial.print("Odpovědět====>>>>");

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

gprs.sendSMS(buffNumber, "Stav relé 1 vypnuto");

}



//Řadič relé 2



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

StatRelay[1] = AKTIF;

Serial.print("Odpovědět====>>>>");

Serial.println("Stav relé 2 aktivní");

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

}

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

StatRelay[1] = MATI;

Serial.print("Odpovědět====>>>>");

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

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

}



//Řadič relé 3

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

StatRelay[2] = AKTIF;

Serial.print("Odpovědět====>>>>");

Serial.println("Stav relé 3 aktivní");

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

}

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

StatRelay[2] = MATI;

Serial.print("Odpovědět====>>>>");

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

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

}



//Řadič relé 4

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

StatRelay[3] = AKTIF;

Serial.print("Odpovědět====>>>>");

Serial.println("Stav relé 4 aktivní");

gprs.sendSMS(buffNumber, "Stav relé 1 aktivní");

}

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

StatRelay[3] = MATI;

Serial.print("Odpovědět====>>>>");

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

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

}

nextLineIsMessage = false;

}



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



}

//Vymazat pole znaků pro další řádek čtení

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

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

jinak {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Kontrola zařízení


SMS ovladač založený na SIM800L


Nástroj funguje tak, že na SIM800L odešle SMS se specifickou sekvencí znaků. Například pro zapnutí relé 1 použijte příkaz „Relé 1 ON“ a pro jeho vypnutí použijte příkaz „Relay 1 OFF“. U zbývajících relé jsou příkazy téměř stejné, s výjimkou pořadového čísla každého relé, které chcete ovlivnit. Po automatickém odeslání zprávy SIM800 odešle odpověď ve formě zprávy o stavu každé SIM karty.

Video montáže, konfigurace a testování zařízení



Původní článek v angličtině
vrať se
Komentář
  • motýlekusměj sesmějící seruměnecsmajlíkuvolněný uvolněnýúšklebek
    srdce_očilíbání_srdcelíbat zavřené očispláchnutéuklidněnýspokojenýúsměv
    mrkatvyplazený jazyk mrkající okostick_out_tongue_closed_eyesšklebící selíbánízaseknutý_jazykSpící
    ustaranýmračit setrápeníotevři pusušklebící sezmatenýztichl
    bezvýraznýnepobavenýpot_úsměvpotit sezklamaný_ulehčenýunavenýpasivní
    zklamanýzmatenýstrašnýstudený potvytrvatplakatvzlyk
    radostužaslývýkřikunavený_obličejrozzlobenývztektriumf
    ospalýMňammaskasluneční brýledizzy_faceimpsmile_imp
    neutrální_obličejžádná_ústanevinný
3+tři=
Komentáře (4)
  1. qeeeq
    #1 qeeeq Hosté 26. srpna 2017 23:50
    0
    Páni! Jak se říká, všechno důmyslné je jednoduché. Ani jsem nemusel nic kupovat, takových odpadků má doma asi každý
  2. Alexeji
    #2 Alexeji Hosté 16. prosince 2017 16:53
    0
    Nefunguje. Při kompilaci se zobrazí „Arduino: 1.8.5 hodinové sestavení 2017/08/28 06:33 (Windows 7), deska: „Arduino/Genuino Uno“
    1. Denis
      #3 Denis Hosté 17. prosince 2017 08:11
      0
      K projektu musíte použít cestu bez ruských písmen.
  3. Andrey
    #4 Andrey Hosté 10. února 2019 11:54
    2
    V náčrtu je spousta chyb. To nebude fungovat.