SMS kontroler baziran na SIM800L

SMS kontroler baziran na SIM800L

SIM800L V2.0 GSM/GPRS je četveropojasni GSM/GPRS modul kompatibilan s Arduinom. Modul se koristi za implementaciju GSM (pozivi i SMS) i GPRS funkcija. Prednost ovog modula je TTL sučelje koje ima napon od 5V što vam omogućuje direktno spajanje na Arduino ili bilo koji drugi sustav sa 5V naponom napajanja. Većina GSM/GPRS modula na tržištu zahtijeva priključke regulatora ili konverziju razine, dok kod SIM800L V.2 GSM/GPRS ne zahtijeva dodatne sklopove za konverziju razine sučelja.

Dajmo primjer projekta koji koristi SIM800L V.2 GSM/GPRS. Smisao projekta je upravljanje sklopkama pomoću SMS kontrolera. Možete jednostavno uključiti i isključiti većinu kućanskih aparata u kući, poput lame, ventilatora i tako dalje.

Karakteristike SIM800L V.2 GSM/GPRS modula


Ispod su sve tehničke karakteristike SIM800L V.2 GSM/GPRS modula:
  • TTL serijsko sučelje kompatibilno s 3,3 V i 5 V Arduino kompatibilnim mikrokontrolerima.
  • SIM800L modul ima TTL serijsko sučelje.
  • Konektor za antenu.
  • Mrežna podrška: četiri pojasa 850/900/1800/1900 MHz, mogućnost poziva, SMS-a i prijenosa podataka uz značajno smanjenu potrošnju baterije.
  • VDD TTL UART sučelje, tako da možete izravno spojiti MCU kao što je 51MCU, ARM ili MSP430.VDD utikač se koristi za usklađivanje TTL napona.
  • Model: SIMCOM SIM800L
  • Radni napon: od 3,7V do 5V;
  • dimenzije: 40mm x 28mm x 3mm
  • GPRS multislot klasa 12/10
  • GPRS paket usluga klase B
  • Odgovara GSM fazi 2/2+
  • Klasa 4 (2 W @ 850/900 MHz)
  • Klasa 1 (1W na 1800/1900MHz)


Potrebni materijali


SMS kontroler baziran na SIM800L


Trebat će vam:


1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4-kanalni 5V relejni modul.
4. Žice - skakači.
5. Napajanje 5V.
(Aktivne veze do trgovine za kupnju)

Montaža i konfiguracija


SMS kontroler baziran na SIM800L


Nakon što povežete sve komponente, izradite program i zatim ga prenesite na svoj Arduino. Ali prvo morate instalirati GPRS biblioteku koju možete preuzeti:

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


Programski kod za Arduino


SMS kontroler baziran na SIM800L


Nakon što povežete svoj SIM800L, 4-kanalni relejni modul i Arduino na svoje računalo, unesite donji kod i gotovi ste.



#uključi 

#uključi

#define TIMEOUT 5000

#definiraj AKTIVNO NISKO

#define ISKLJUČENO VISOKO



bajt relej[] = {A0,A1,A2,A3};

bajt StatRelay[4];

char buffBroj[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(Relej[i], IZLAZ);

digitalWrite(relej[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

dok(!Serijski);

Serial.println("Aktiviraj SIM800L V2 >>> Automatski čitaj SMS");

gprs.preInit();

kašnjenje (1000);

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

kašnjenje (1000);

Serial.print("pogreška pokretanja");

}



// Upravljanje porukom u ASCII modu

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

POGREŠKA("GREŠKA:CNMI");

povratak;

}

// Čitaj dolazni SMS

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

POGREŠKA("GREŠKA:CNMI");

povratak;

}

int pjg = broj odgovora.duljina() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Pošalji odgovor na broj => ");

Serial.println(buffNumber);

Serial.println("Inicijalizacija završena");

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

}



void loop() {

// Promjena statusa Relej ON / OFF

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

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

}



// Ako postoje ulazni podaci sa SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Spremi sve podatke na lastCharRead, zatim ako postoji r ili n, kao konačni signal dolazne poruke

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

String lastLine = String(currentLine);



// Ako zadnja poruka +CMT označava da je stigla nova poruka

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

Serial.println(lastLine);

nextLineIsMessage = istina;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================== ==== ================>> Funkcija kontrolera releja



//Kontroler releja 1



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

StatRelay[0] = AKTIF;

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

Serial.println("Status releja 1 aktivan");

gprs.sendSMS(buffNumber, "Status releja 1 aktivan");

}



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

StatRelay[0] = MATI;

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

Serial.println("Status releja 1 isključen");

gprs.sendSMS(buffNumber, "Status releja 1 isključen");

}



//Kontroler releja 2



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

StatRelay[1] = AKTIF;

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

Serial.println("Status releja 2 aktivan");

gprs.sendSMS(buffNumber, "Status releja 2 aktivan");

}

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

StatRelay[1] = MATI;

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

Serial.println("Status releja 2 isključen");

gprs.sendSMS(buffNumber, "Status releja 2 isključen");

}



//Kontroler releja 3

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

StatRelay[2] = AKTIF;

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

Serial.println("Status releja 3 aktivan");

gprs.sendSMS(buffNumber, "Status releja 3 aktivan");

}

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

StatRelay[2] = MATI;

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

Serial.println("Status releja 3 isključen");

gprs.sendSMS(buffNumber, "Status releja 3 isključen");

}



//Kontroler releja 4

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

StatRelay[3] = AKTIF;

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

Serial.println("Status releja 4 aktivan");

gprs.sendSMS(buffNumber, "Status releja 1 aktivan");

}

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

StatRelay[3] = MATI;

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

Serial.println("Status releja 4 isključen");

gprs.sendSMS(buffNumber, "Status releja 4 isključen");

}

nextLineIsMessage = false;

}



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



}

//Očisti niz znakova za sljedeći redak čitanja

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

trenutni redak[i] = (char)0;

}

CurrentLineIndex = 0;

}

inače {

CurrentLine[currentLineIndex++] = lastCharRead;

}

}

}



Provjera uređaja


SMS kontroler baziran na SIM800L


Alat radi slanjem SMS-a na SIM800L s određenim nizom znakova. Na primjer, za uključivanje releja 1 koristite naredbu “Relay 1 ON”, a za isključivanje koristite naredbu “Relay 1 OFF”. Za ostale releje, naredbe su gotovo iste, osim rednog broja svakog releja na koji želite utjecati. Nakon automatskog slanja poruke, SIM800 će poslati odgovor u obliku poruke o statusu svake SIM kartice.

Video montaže, konfiguracije i testiranja uređaja



Izvorni članak na engleskom jeziku
vrati se
Komentar
  • leptir mašnaosmijehsmijući serumenilosmješkoopušteno opuštenozlobno se smješkati
    srce_očiljubljenje_srcaljubljenje_zatvorenih_očijuzajapurenalaknulozadovoljanosmijeh
    migispružio jezik namigivanje okomisplažen_jezik_zatvorene_očinacerivši seljubljenjeisplažen_jezikspavanje
    zabrinutimršteći setjeskobanotvorena ustapraveći grimasezbunjenautišan
    bezizražajnanezabavljensweat_smileznojrazočarano_lakšeumoranpasivno
    razočaranzbunjenobojažljivhladan znojustrajatiplakatijecanje
    radostzapanjenvrisakumorno_liceljutbijestrijumf
    pospanonjammaskasunčane naočalevrtoglavo_liceimpnasmijan_imp
    neutralno_licebez_ustanevin
3+tri=
Komentari (4)
  1. qeeeq
    #1 qeeeq Gosti 26. kolovoza 2017. 23:50
    0
    Wow! Kako kažu, sve genijalno je jednostavno. Nisam ni morao ništa kupiti, vjerojatno svatko ima hrpu takvog smeća kod kuće
  2. Aleksej
    #2 Aleksej Gosti 16. prosinca 2017. 16:53
    0
    Ne radi. Prilikom kompajliranja piše "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Gosti 17. prosinca 2017. 08:11
      0
      Morate koristiti put bez ruskih slova do projekta.
  3. Andrej
    #4 Andrej Gosti 10. veljače 2019. 11:54
    2
    Ima puno grešaka u skici. Neće uspjeti.