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
Veți avea nevoie de:
1. .
2. .
3. .
4. .
5. .
(Link-uri active către magazin pentru cumpărare)
Asamblare și configurare
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
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
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.