DIY fă-o singur
Cursuri magistrale, instrucțiuni, sfaturi utile, rețete
» » »Controler SMS bazat pe SIM800L
Controler SMS bazat pe SIM800L

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

Iată un exemplu de proiect care utilizează SIM800L V.2 GSM / GPRS. Sensul proiectului este de a controla comutatoarele folosind controlerul SMS. Puteți porni și opri cu ușurință majoritatea electrocasnicelor din casă, cum ar fi o lama, un ventilator și așa mai departe.

Caracteristicile modulului SIM800L V.2 GSM / GPRS


Mai jos sunt prezentate toate specificațiile tehnice ale modulului SIM800L V.2 GSM / GPRS:
  • Interfață serială TTL compatibilă cu microcontrolere 3.3V și 5V compatibilă cu Arduino.
  • Modulul SIM800L are o interfață serială TTL.
  • Mufa antenei
  • Suport de rețea: patru benzi 850/900/1800/1900 MHz, capabile să efectueze apeluri, SMS și transfer de date cu un consum redus de baterie semnificativ.
  • Interfata VDD TTL UART, astfel încât să puteți conecta direct un MCU, cum ar fi 51MCU, ARM sau MSP430. Plug VDD folosit pentru a se potrivi cu tensiunea TTL
  • Model: SIMCOM SIM800L
  • Tensiune de lucru: de la 3.7V la 5V;
  • dimensiuni: 40mm x 28mm x 3mm
  • Clasa multisot GPRS 12/10
  • Serviciul de lot GPRS Clasa B
  • Corespunde fazei GSM 2/2 +
  • Clasa 4 (2 wați @ 850/900 MHz)
  • Clasa 1 (1 Wat @ 1800/1900 MHz)


Materiale necesare


Controler SMS bazat pe SIM800L


Veți avea nevoie de:


1. .
2. .
3. .
4. .
5. .
(Link-uri active către magazin pentru cumpărare)

Asamblare și configurare


Controler SMS bazat pe SIM800L


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

[28.02 Kb] (descărcări: 481)


Cod de program pentru Arduino


Controler SMS bazat pe SIM800L


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


#include
#include
#define TIMEOUT 5000
#define ACTIVE SCĂZUT
#define OFF HIGH

Releu de byte [] = {A0, A1, A2, A3};
byte 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], OUTPUT);
digitalWrite (Releu [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
în timp ce (! serial);
Serial.println ("Activare SIM800L V2 >>> Citește automat SMS-uri");
gprs.preInit ();
întârziere (1000);
while (0! = gprs.init ()) {
întârziere (1000);
Serial.print ("init errorrn");
}

// Gestionează mesajul în modul ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
EROARE („EROARE: CNMI”);
return;
}
// Citiți SMS-urile primite
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
EROARE („EROARE: CNMI”);
return;
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Trimiteți răspuns la numărul =>");
Serial.println (buffNumber);
Serial.println ("Inițializare făcută");
Serial.println ("============================================ ================= ");
}

void loop () {
// Schimbă starea Relay ON / OFF
for (int i = 0; i <4; i ++) {
digitalWrite (Releu [i], StatRelay [i]);
}

// Dacă există date de intrare de la SIM800
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Salvați toate datele pe lastCharRead, apoi 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
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// ================================================ ================== >> Funcția controlerului releului

// Controller releu 1

if (lastLine.indexOf ("Releu 1 ON")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare de releu 1 activ");
gprs.sendSMS (buffNumber, "Releul 1 Status Active");
}

else if (lastLine.indexOf ("Releu 1 OPRIT")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare releu 1 stins");
gprs.sendSMS (buffNumber, "Releul 1 Status Off");
}

// Controller releu 2

if (lastLine.indexOf ("Releu 2 ON")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare de releu 2 activ");
gprs.sendSMS (buffNumber, "Releul 2 Status Active");
}
else if (lastLine.indexOf ("Releu 2 dezactivat")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare rele 2 stins");
gprs.sendSMS (buffNumber, "Releul 2 Status Off");
}

// Controller releu 3
if (lastLine.indexOf ("Releu 3 ON")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare de releu 3 activ");
gprs.sendSMS (buffNumber, "Releul 3 Status Active");
}
else if (lastLine.indexOf ("Releu 3 OPRIT")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Stare releu 3 stins");
gprs.sendSMS (buffNumber, "Releul 3 Status Off");
}

// Controller releu 4
if (lastLine.indexOf ("Releu 4 ON")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Răspunde ==== >>>>");
Serial.println („Releul 4 Status Active”);
gprs.sendSMS (buffNumber, "Releul 1 Status Active");
}
else if (lastLine.indexOf ("Releu 4 OPRIT")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Răspunde ==== >>>>");
Serial.println ("Releul 4 Status Off");
gprs.sendSMS (buffNumber, "Releul 4 Status Off");
}
nextLineIsMessage = fals;
}

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

}
// Ștergeți tabloul de caractere pentru următoarea linie de citire
for (int i = 0; i 


Verificarea dispozitivului


Controler SMS bazat pe SIM800L


Instrumentul funcționează trimițând SMS către SIM800L cu o secvență specifică de caractere. De exemplu, pentru a porni releul 1, utilizați comanda „Releul 1 PORNIT” și pentru a dezactiva folosind comanda „Releul 1 OPRIT”. Restul releelor ​​au aproape aceleași comenzi, cu excepția numărului de serie al fiecărui releu pe care doriți să acționați. După trimiterea automată a unui mesaj, SIM800 va trimite un răspuns sub forma unui mesaj de stare pentru fiecare cartelă SIM.

Asamblare video, configurare și verificare dispozitiv



Comentarii (4)
  1. qeeeq
    #1 qeeeq vizitatori 26 august 2017 23:50
    0
    Wow! După cum se spune, totul ingenios este simplu. Nici măcar nu a trebuit să cumpăr nimic, probabil la fiecare astfel de gunoi acasă
  2. Alexey
    #2 Alexey vizitatori 16 decembrie 2017 16:53
    0
    Nu se rezolvă. 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ă scrisori rusești pentru proiect.
  3. Andrew
    #4 Andrew vizitatori 10 februarie 2019 11:54
    0
    Există o mulțime de greșeli în schiță. Nu va funcționa.