Controler SMS bazat pe SIM800L

Controler SMS bazat pe SIM800L

SIM800L V2.0 GSM/GPRS este un modul quad-band GSM/GPRS compatibil cu Arduino. Modulul este utilizat pentru implementarea funcțiilor GSM (apeluri și SMS) și GPRS. Avantajul acestui modul este interfața TTL, care are o tensiune de 5V, ceea ce vă permite să îl conectați direct la Arduino sau orice alt sistem cu o tensiune de alimentare de 5V. Majoritatea modulelor GSM/GPRS de pe piață necesită conexiuni de regulator sau conversie de nivel, în timp ce în SIM800L V.2 GSM/GPRS nu necesită circuite suplimentare de conversie la nivel de interfață.

Să dăm un exemplu de proiect folosind SIM800L V.2 GSM/GPRS. Scopul proiectului este de a controla comutatoarele folosind un controler SMS. Puteți porni și opri cu ușurință majoritatea aparatelor electrocasnice din casă, cum ar fi o lamă, un ventilator și așa mai departe.

Caracteristicile modulului SIM800L V.2 GSM/GPRS


Mai jos sunt toate caracteristicile tehnice ale modulului SIM800L V.2 GSM/GPRS:
  • Interfață serială TTL compatibilă cu microcontrolere compatibile cu Arduino de 3,3 V și 5 V.
  • Modulul SIM800L are o interfață serială TTL.
  • Mufă de conectare a antenei.
  • Suport de rețea: patru benzi 850/900/1800/1900 MHz, capabile să efectueze apeluri, SMS-uri și transferuri de date cu un consum de baterie semnificativ redus.
  • Interfață VDD TTL UART, astfel încât să puteți conecta direct MCU, cum ar fi 51MCU, ARM sau MSP430.Mufa VDD este folosită pentru a se potrivi cu tensiunea TTL.
  • Model: SIMCOM SIM800L
  • Tensiune de operare: de la 3,7V la 5V;
  • dimensiuni: 40mm x 28mm x 3mm
  • GPRS multislot clasa 12/10
  • Serviciu de pachete GPRS clasa B
  • Conform cu GSM faza 2/2+
  • Clasa 4 (2 wați la 850/900 MHz)
  • Clasa 1 (1W @ 1800/1900MHz)


Materiale necesare


Controler SMS bazat pe SIM800L


O să ai nevoie:


1. Modul SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Modul releu cu 4 canale 5V.
4. Fire - jumperi.
5. Alimentare 5V.
(Link-uri active către magazin pentru cumpărare)

Asamblare si configurare


Controler SMS bazat pe SIM800L


După ce ați conectat toate componentele, creați un program și apoi încărcați-l pe Arduino. Dar mai întâi, trebuie să instalați biblioteca GPRS, pe care o puteți descărca:

gprs.zip [28.02 Kb] (descărcări: 887)


Cod de program pentru Arduino


Controler SMS bazat pe SIM800L


După ce ați conectat SIM800L, modulul releu cu 4 canale și Arduino la computer, introduceți codul de mai jos și ați terminat.



#include 

#include

#define TIMEOUT 5000

#define ACTIV LOW

#define OFF HIGH



octet Releu[] = {A0,A1,A2,A3};

octet StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = fals;

String replyNumber = "089510863958";

GPRS gprs;



void setup() {

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

pinMode(Releu[i], IEȘIRE);

digitalWrite(Releu[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

în timp ce(!Serial);

Serial.println("Activați SIM800L V2 >>> Citiți automat SMS-urile");

gprs.preInit();

întârziere (1000);

în timp ce (0 != gprs.init()) {

întârziere (1000);

Serial.print("init errorrn");

}



// Gestionează mesajul în modul ASCII

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

EROARE("EROARE:CNMI");

întoarcere;

}

// Citiți SMS-urile primite

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

EROARE("EROARE:CNMI");

întoarcere;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Trimite răspuns la număr => ");

Serial.println(buffNumber);

Serial.println(„Inițializarea gata”);

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

}



void loop() {

// Schimbați starea Releul ON / OFF

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

digitalWrite(Releu[i], StatRele[i]);

}



// Dacă există date de intrare de la SIM800

dacă (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Salvați toate datele pe lastCharRead, atunci dacă există r sau n, ca semnal final al mesajului de intrare

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

String lastLine = String(currentLine);



// Dacă ultimul mesaj +CMT indică sosirea unui mesaj nou

dacă (lastLine.startsWith("+CMT:")) {

Serial.println(lastLine);

nextLineIsMessage = adevărat;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================== ==== ================>> Funcția controlerului releu



//Releu 1 Controler



dacă (lastLine.indexOf("Releul 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 1 activ");

gprs.sendSMS(buffNumber, „Starea releului 1 activ”);

}



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

StatRelay[0] = MATI;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 1 oprit");

gprs.sendSMS(buffNumber, „Stare releu 1 dezactivat”);

}



//Releu 2 Controler



dacă (lastLine.indexOf("Releul 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 2 activ");

gprs.sendSMS(buffNumber, „Starea releului 2 activ”);

}

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

StatRelay[1] = MATI;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 2 dezactivat");

gprs.sendSMS(buffNumber, „Starea releului 2 dezactivată”);

}



//Releu 3 Controler

dacă (lastLine.indexOf("Releul 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 3 activ");

gprs.sendSMS(buffNumber, „Starea releului 3 activ”);

}

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

StatRelay[2] = MATI;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 3 oprit");

gprs.sendSMS(buffNumber, „Stare releu 3 dezactivat”);

}



//Releu 4 Controler

dacă (lastLine.indexOf ("Releul 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 4 activ");

gprs.sendSMS(buffNumber, „Starea releului 1 activ”);

}

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

StatRelay[3] = MATI;

Serial.print("Răspuns====>>>> ");

Serial.println("Stare releu 4 oprit");

gprs.sendSMS(buffNumber, „Starea releului 4 dezactivată”);

}

nextLineIsMessage = fals;

}



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



}

//Șterge matricea de caractere pentru următoarea linie de citire

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

currentLine[i] = (car)0;

}

currentLineIndex = 0;

}

else {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Verificarea dispozitivului


Controler SMS bazat pe SIM800L


Instrumentul funcționează prin trimiterea unui SMS către SIM800L cu o anumită secvență de caractere. De exemplu, pentru a porni releul 1, utilizați comanda „Releu 1 ON”, iar pentru a-l opri, utilizați comanda „Releu 1 OFF”. Pentru releele rămase, comenzile sunt aproape aceleași, cu excepția numărului de secvență al fiecărui releu pe care doriți să îl influențați. După trimiterea automată a mesajului, SIM800 va trimite un răspuns sub forma unui mesaj despre starea fiecărei cartele SIM.

Video de asamblare, configurare și testare a dispozitivului



Articol original în engleză
cometariu
  • papionzâmbetrazandfard de obrazzâmbitoarerelaxat relaxatrânjet
    ochi inimainimă_sărutăsărutând cu ochii inchișiînroșituşuratmultumitgrimasă
    a face cu ochiullimbă_înfiptatălimbă_închisă_ochii_închișirânjindsărutândlimbă_înfundatădormit
    îngrijoratîncruntatangoasadeschide gurastrâmbându-seconfuztăcut
    inexpresivneamuzatăsudoare_zâmbetsudoaredezamăgit_uşuratobositpasiv
    dezamăgitîncurcatfricostranspirație receperseverastrigătsuspin
    bucurieuimitţipătfata_obositfuriosfurietriumf
    somnorosyummascaochelari de soaredizzy_faceimpsmiling_imp
    chip_neutrunu_guranevinovat
3+trei=
Comentarii (4)
  1. qeeeq
    #1 qeeeq Vizitatori 26 august 2017 23:50
    0
    Wow! După cum se spune, totul ingenios este simplu. Nici nu a trebuit să cumpăr nimic, probabil că toată lumea are o grămadă de astfel de gunoi acasă
  2. Alexei
    #2 Alexei Vizitatori 16 decembrie 2017 16:53
    0
    Nu funcționează. La compilare, scrie „Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:”Arduino/Genuino Uno”
    1. Denis
      #3 Denis Vizitatori 17 decembrie 2017 08:11
      0
      Trebuie să utilizați o cale fără litere rusești către proiect.
  3. Andrei
    #4 Andrei Vizitatori 10 februarie 2019 11:54
    2
    Există o mulțime de erori în schiță. Nu va funcționa.