SIM800L V2.0 GSM / GPRS yra keturių juostų GSM / GPRS modulis, suderinamas su Arduino. Modulis naudojamas GSM (skambučių ir SMS) ir GPRS funkcijoms įgyvendinti. Šio modulio pranašumas yra TTL sąsaja su 5 V įtampa, leidžianti tiesiogiai prijungti jį prie „Arduino“ ar bet kurios kitos sistemos su 5 V maitinimo šaltiniu. Daugumai rinkoje esančių GSM / GPRS modulių reikalingas reguliatoriaus ryšys arba lygio keitimas, tuo tarpu SIM800L V.2 GSM / GPRS nereikia papildomų sąsajos lygio konvertavimo grandinių.
Čia yra projekto pavyzdys, naudojantis SIM800L V.2 GSM / GPRS. Projekto tikslas yra valdyti jungiklius naudojant SMS valdiklį. Galite lengvai įjungti ir išjungti daugelį namų apyvokos prietaisų, tokių kaip lama, ventiliatorius ir pan.
GSM / GPRS modulio SIM800L V.2 charakteristikos
Žemiau yra visos GSM / GPRS modulio SIM800L V.2 specifikacijos:
- TTL nuosekli sąsaja suderinama su 3,3 V ir 5 V mikrovaldikliais, suderinama su Arduino.
- SIM800L modulis turi TTL nuoseklią sąsają.
- Antenos kištukas
- Tinklo palaikymas: keturios 850/900/1800/1900 MHz juostos, galinčios skambinti, siųsti SMS ir perduoti duomenis žymiai sumažinus baterijos sunaudojimą.
- VDD TTL UART sąsaja, todėl galite tiesiogiai prijungti tokį MCU kaip 51MCU, ARM ar MSP430. VDD kištukas, naudojamas atitikti TTL įtampą.
- Modelis: SIMCOM SIM800L
- Darbinė įtampa: nuo 3,7 V iki 5 V;
- matmenys: 40mm x 28mm x 3mm
- GPRS multislot klasė 12/10
- GPRS paketinių paslaugų klasė B
- Atitinka GSM 2/2 + fazę
- 4 klasė (2 vatai @ 850/900 MHz)
- 1 klasė (1 W @ 1800/1900 MHz)
Reikalingos medžiagos
Jums reikės:
1. .
2. .
3. .
4. .
5. .
(Aktyvios nuorodos į parduotuvę perkant)
Surinkimas ir konfigūracija
Prijungę visus komponentus, sukurkite programą ir atsisiųskite ją į savo „Arduino“. Bet pirmiausia turite įdiegti GPRS biblioteką, kurią galite atsisiųsti:
[28,02 Kb] (atsisiuntimai: 481)
Programos kodas Arduino
Prijungę SIM800L, 4 kanalų relės modulį ir „Arduino“ prie savo kompiuterio, įveskite žemiau esantį kodą ir viskas.
# įtraukti
# įtraukti
#define TIMEOUT 5000
#definuojate AKTYVIĄ MAŽAI
#define OFF HIGH
baitų relė [] = {A0, A1, A2, A3};
baitas „StatRelay“ [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = klaidinga;
Styginių atsakymasNumber = "089510863958";
GPRS GPRS;
negaliojanti sąranka () {
už (int i = 0; i <4; i ++) {
pinMode (relė [i], IŠĖJIMAS);
„digitalWrite“ (relė [i], MATI);
„StatRelay“ [i] = MATI;
}
„Serial.begin“ (9600);
tuo tarpu (! serialas);
„Serial.println“ („Įjungti SIM800L V2 >>> automatiškai skaityti SMS“);
gprs.preInit ();
vėlavimas (1000);
tuo tarpu (0! = gprs.init ()) {
vėlavimas (1000);
„Serial.print“ („init errorrn“);
}
// Tvarkykite pranešimą į ASCII režimą
if (0! = gprs.sendCmdAndWaitForResp („AT + CMGF = 1rn“, „OK“, TIMEOUT)) {
KLAIDA („KLAIDA: CNMI“);
grįžti
}
// Perskaitykite gaunamą SMS
if (0! = gprs.sendCmdAndWaitForResp („AT + CNMI = 1,2,0,0,0rn“, „OK“, TIMEOUT)) {
KLAIDA („KLAIDA: CNMI“);
grįžti
}
int pjg = answerNumber.length () + 1;
buffNumber [pjg];
„ReplyNumber.toCharArray“ („buffNumber“, pjg);
Serial.print („Siųsti atsakymą numeriu =>“);
Serijos.println („buffNumber“);
„Serial.println“ („Inicializacija atlikta“);
Serial.println ("=============================================== ================= ");
}
tuščia kilpa () {
// Pakeisti būseną Relė įjungta / išjungta
už (int i = 0; i <4; i ++) {
„digitalWrite“ (relė [i], „StatRelay“ [i]);
}
// Jei yra įvesties duomenų iš SIM800
if (gprs.serialSIM800.avable ()) {
char lastCharRead = gprs.serialSIM800.read ();
// Išsaugokite visus duomenis „lastCharRead“, tada, jei yra r arba n, kaip galutinį gaunamo pranešimo signalą
if (lastCharRead == 'r' || lastCharRead == 'n') {
Styga lastLine = Styga (dabartinė eilutė);
// Jei paskutinis pranešimas + CMT rodo, kad gaunamas naujas pranešimas
if (lastLine.startsWith („+ CMT:“)) {
Serial.println (paskutinė linija);
nextLineIsMessage = tiesa;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (paskutinė linija);
// ================================================= ================== >> Relės valdiklio funkcija
// 1 relės valdiklis
if (lastLine.indexOf („1 relė įjungta“)> = 0) {
„StatRelay“ [0] = AKTIF;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („1 relės būsena aktyvi“);
gprs.sendSMS („buffNumber“, „1 relės būsena aktyvi“);
}
else if (lastLine.indexOf („1 relė išjungta“)> = 0) {
„StatRelay“ [0] = MATI;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („1 relės būsena išjungta“);
gprs.sendSMS („buffNumber“, „1 relės būsena išjungta“);
}
// 2 relės valdiklis
if (lastLine.indexOf („2 relė įjungta“)> = 0) {
„StatRelay“ [1] = AKTIF;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („2 relės būsena aktyvi“);
gprs.sendSMS („buffNumber“, „2 relės būsena aktyvi“);
}
else if (lastLine.indexOf („2 relė išjungta“)> = 0) {
„StatRelay“ [1] = MATI;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („2 relės būsena išjungta“);
gprs.sendSMS („buffNumber“, „2 relės būsena išjungta“);
}
// 3 relės valdiklis
if (lastLine.indexOf („3 relė įjungta“)> = 0) {
„StatRelay“ [2] = AKTIF;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („3 relės būsena aktyvi“);
gprs.sendSMS („buffNumber“, „3 relės būsena aktyvi“);
}
else if (lastLine.indexOf („3 relė išjungta“)> = 0) {
„StatRelay“ [2] = MATI;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („3 relės būsena išjungta“);
gprs.sendSMS („buffNumber“, „3 relės būsena išjungta“);
}
// 4 relės valdiklis
if (lastLine.indexOf („4 relė įjungta“)> = 0) {
„StatRelay“ [3] = AKTIF;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („4 relės būsena aktyvi“);
gprs.sendSMS („buffNumber“, „1 relės būsena aktyvi“);
}
else if (lastLine.indexOf („4 relė išjungta“)> = 0) {
„StatRelay“ [3] = MATI;
„Serial.print“ („Atsakyti ==== >>>>“);
„Serial.println“ („4 relės būsena išjungta“);
gprs.sendSMS („buffNumber“, „4 relės būsena išjungta“);
}
nextLineIsMessage = klaidinga;
}
// ================================================= ==================== >>
}
// Aiškus simbolių rinkinys kitai skaitymo eilutei
už (int i = 0; i
Įrenginio patikrinimas
Įrankis veikia siunčiant SMS į SIM800L su tam tikra simbolių seka. Pvz., Norėdami įjungti 1 relę, naudokite komandą „1 relė įjungta“, o norėdami išjungti, naudokite komandą „1 relė išjungta“. Likusios relės turi beveik tas pačias komandas, išskyrus kiekvienos relės, kuria norite veikti, serijos numerį. Automatiškai išsiuntęs pranešimą, SIM800 išsiųs atsakymą būsenos pranešimo forma kiekvienai SIM kortelei.