SIM800L V2.0 GSM / GPRS je četveropojasni GSM / GPRS modul kompatibilan s Arduinom. Modul se koristi za implementaciju funkcija GSM (pozivi i SMS) i GPRS. Prednost ovog modula je TTL sučelje s naponom od 5 V, što vam omogućuje izravno povezivanje s Arduinom ili bilo kojim drugim sustavom s 5V napajanjem. Većina GSM / GPRS modula na tržištu zahtijevaju priključke regulatora ili konverziju nivoa, dok u SIM800L V.2 GSM / GPRS ne zahtijevaju dodatne konverzijske krugove na sučelju.
Ovdje je primjer projekta koji koristi SIM800L V.2 GSM / GPRS. Značenje projekta je upravljanje prekidačima pomoću SMS kontrolera. Lako možete uključiti i isključiti većinu kućanskih aparata u kući, poput lame, ventilatora i tako dalje.
Karakteristike SIM800L V.2 GSM / GPRS modula
Ispod su sve tehničke specifikacije SIM800L V.2 GSM / GPRS modula:
- TTL serijsko sučelje kompatibilno s 3,3 V i 5 V mikrokontrolerom kompatibilno s Arduinom.
- SIM800L modul ima TTL serijsko sučelje.
- Antenski utikač
- Mrežna podrška: četiri pojasa 850/900/1800/1900 MHz, sposobna za pozive, SMS i prijenos podataka uz značajno smanjenu potrošnju baterije.
- VDD TTL UART sučelje, tako da možete izravno povezati MCU poput 51MCU, ARM ili MSP430. VDD utikač koji se koristi za podudaranje s TTL naponom.
- Model: SIMCOM SIM800L
- Radni napon: od 3,7 V do 5V;
- dimenzije: 40mm x 28mm x 3mm
- GPRS multislot klasa 12/10
- GPRS Servisna klasa B
- Odgovara GSM fazi 2/2 +
- Klasa 4 (2 W @ 850/900 MHz)
- Klasa 1 (1 Wat @ 1800/1900 MHz)
Potrebni materijali
Trebat će vam:
1. .
2. .
3. .
4. .
5. .
(Aktivne veze do trgovine za kupnju)
Montaža i konfiguracija
Nakon što spojite sve komponente, napravite program, a zatim ga preuzmite na svoj Arduino. Najprije morate instalirati GPRS knjižnicu koju možete preuzeti:
[28.02 Kb] (preuzimanja: 481)
Programski kod za Arduino
Nakon što na računalo povežete SIM800L, četverokanalni relejni modul i Arduino, unesite kôd dolje i gotovi ste.
#include
#include
#define TIMEOUT 5000
#define AKTIVNO NISKO
#define OFF HIGH
bajt relej [] = {A0, A1, A2, A3};
bajt StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = netočno;
String replyNumber = "089510863958";
GPRS gprs;
poništavanje postave () {
za (int i = 0; i <4; i ++) {
pinMode (Relej [i], IZLAZ);
digitalWrite (relej [i], MATI);
StatRelay [i] = MATI;
}
Serijski počet (9600);
dok (! serijski);
Serial.println ("Aktiviraj SIM800L V2 >>> Automatski čitaj SMS");
gprs.preInit ();
kašnjenje (1000);
dok je (0! = gprs.init ()) {
kašnjenje (1000);
Serial.print ("init errorrn");
}
// Upravljanje porukom u načinu ASCII
ako je (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
GREŠKA ("GREŠKA: CNMI");
povratak;
}
// Pročitajte dolazne SMS-ove
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
GREŠKA ("GREŠKA: CNMI");
povratak;
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Pošaljite odgovor na broj =>");
Serial.println (buffNumber);
Serial.println ("Dovršeno inicijaliziranje");
Serial.println ("================================================ ================= ");
}
void petlja () {
// Promjena statusnog releja ON / OFF
za (int i = 0; i <4; i ++) {
digitalWrite (relej [i], statRelay [i]);
}
// Ako postoje ulazni podaci sa SIM800
ako je (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();
// Spremite sve podatke na lastCharRead, zatim, ako postoji r ili n, kao završni signal dolazne poruke
ako (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (trenutna linija);
// Ako zadnja poruka + CMT ukazuje na novu poruku stići
ako (lastLine.startsWith ("+ CMT:")) {
Serijski.println (lastLine);
nextLineIsMessage = istina;
} else if (lastLine.length ()> 0) {
ako (nextLineIsMessage) {
Serijski.println (lastLine);
// ==================================================== ================== >> Funkcija relejnog regulatora
// Upravljač releja 1
ako je (lastLine.indexOf ("Relej 1 UKLJUČEN")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 1 je aktivan");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
drugo ako (lastLine.indexOf ("Relej 1 isključen")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 1 isključen");
gprs.sendSMS (buffNumber, "Relay 1 Status Off");
}
// Upravljač releja 2
ako je (lastLine.indexOf ("Relej 2 UKLJUČEN")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 2 je aktivan");
gprs.sendSMS (buffNumber, "Relay 2 Status Active");
}
drugo ako (lastLine.indexOf ("Relej 2 isključen")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 2 isključen");
gprs.sendSMS (buffNumber, "Status releja 2 isključen");
}
// Upravljač 3 releja
ako je (lastLine.indexOf ("Relej 3 UKLJUČEN")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 3 aktivan");
gprs.sendSMS (buffNumber, "Relay 3 Status Active");
}
drugo ako (lastLine.indexOf ("Relej 3 isključen")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 3 isključen");
gprs.sendSMS (buffNumber, "Status releja 3 isključen");
}
// Regulator releja 4
ako je (lastLine.indexOf ("Relej 4 UKLJUČEN")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 4 je aktivan");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
drugo ako je (lastLine.indexOf ("Relej 4 isključen")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Odgovor ==== >>>>");
Serial.println ("Status releja 4 isključen");
gprs.sendSMS (buffNumber, "Status releja 4 isključen");
}
nextLineIsMessage = netočno;
}
// ==================================================== ==================== >>
}
// Očistite niz znakova za sljedeći redak čitanja
for (int i = 0; i
Provjera uređaja
Alat radi slanjem SMS-a na SIM800L s određenim nizom znakova. Na primjer, da biste uključili relej 1, koristite naredbu "Relej 1 UKLJUČENO", a za isključenje koristite naredbu "Relej 1 OFF". Ostali releji imaju gotovo iste naredbe, s izuzetkom serijskog broja svakog releja na koji želite djelovati. Nakon što automatski pošalje poruku, SIM800 će poslati odgovor u obliku statusne poruke za svaku SIM karticu.