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
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ă
Cursuri de master similare
Deosebit de interesant
Modernizarea unui centru muzical vechi într-unul nou cu propriile mâini
Cum se restabilește bateria unei șurubelnițe
Cum să instalați singur Bluetooth în orice radio auto
Cea mai simplă bicicletă electrică DIY
Nu vă aruncați vechiul cartuș - transformați-l într-un power bank
Înlocuirea bateriilor șurubelnițelor
Comentarii (4)