Fă-o singur
Trucuri de viață, cursuri de master, sfaturi utile, rețete.
Acasă » Electronică » Electronice din China » 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.

Cheie bricolaj

Sărare untură aromată acasă

tort de Paste | Fă-o singur

O metodă pentru a învăța să sudezi fără a consuma electrozi cu propriile mâini

«Fă-o singur - cu propriile mâini» - un site cu produse de casă interesante realizate din materiale vechi și articole de acasă. Cursuri de master pas cu pas cu fotografii și descrieri, tehnologii, hack-uri de viață - tot ce are nevoie un adevărat maestru sau doar un meșter pentru lucrul cu ac. Meșteșuguri de orice complexitate, o selecție largă de direcții și idei pentru creativitate.

Vă recomandăm să citiți

Coduri de eroare a mașinii de spălat