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
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
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
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
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ă