SMS valdiklis SIM800L pagrindu
SIM800L V2.0 GSM/GPRS yra keturių dažnių juostų GSM/GPRS modulis, suderinamas su Arduino. Modulis naudojamas GSM (skambučiai ir SMS) ir GPRS funkcijoms įgyvendinti. Šio modulio privalumas yra TTL sąsaja, kurios įtampa yra 5V, kuri leidžia tiesiogiai prijungti jį prie Arduino ar bet kurios kitos sistemos su 5V maitinimo įtampa. Daugumai rinkoje esančių GSM/GPRS modulių reikia reguliatoriaus jungčių arba lygio konvertavimo, o SIM800L V.2 GSM/GPRS nereikalauja papildomų sąsajos lygio konvertavimo grandinių.
Pateikiame projekto pavyzdį naudojant SIM800L V.2 GSM/GPRS. Projekto esmė – valdyti jungiklius naudojant SMS valdiklį. Galite nesunkiai įjungti ir išjungti daugumą namuose esančių buitinių prietaisų, tokių kaip lama, ventiliatorius ir pan.
SIM800L V.2 GSM/GPRS modulio charakteristikos
Žemiau pateikiamos visos SIM800L V.2 GSM/GPRS modulio techninės charakteristikos:
- TTL nuoseklioji sąsaja suderinama su 3,3 V ir 5 V Arduino suderinamais mikrovaldikliais.
- SIM800L modulis turi TTL nuosekliąją sąsają.
- Antenos prijungimo kištukas.
- Tinklo palaikymas: keturios 850/900/1800/1900 MHz juostos, galinčios skambinti, SMS ir perduoti duomenis su žymiai sumažintu akumuliatoriaus suvartojimu.
- VDD TTL UART sąsaja, todėl galite tiesiogiai prijungti MCU, pvz., 51MCU, ARM arba MSP430.VDD kištukas naudojamas TTL įtampai suderinti.
- Modelis: SIMCOM SIM800L
- Darbinė įtampa: nuo 3,7V iki 5V;
- išmatavimai: 40mm x 28mm x 3mm
- GPRS kelių lizdų klasė 12/10
- B klasės GPRS paketų paslaugos
- Atitinka GSM fazę 2/2+
- 4 klasė (2 vatai @ 850/900 MHz)
- 1 klasė (1 vatas @ 1800/1900 MHz)
Reikalingos medžiagos
Jums reikės:
1. SIM800L V.2 GSM/GPRS modulis.
2. Arduino Uno.
3. 4 kanalų 5V relės modulis.
4. Laidai – džemperiai.
5. Maitinimas 5V.
(Aktyvios nuorodos į parduotuvę pirkti)
Surinkimas ir konfigūracija
Sujungę visus komponentus, sukurkite programą ir įkelkite ją į savo Arduino. Tačiau pirmiausia turite įdiegti GPRS biblioteką, kurią galite atsisiųsti:
gprs.zip
[28,02 Kb] (atsisiuntimai: 887)
Arduino programos kodas
Prijungę SIM800L, 4 kanalų relės modulį ir Arduino prie kompiuterio, įveskite žemiau esantį kodą ir viskas.
#įtraukti
#įtraukti
#define LAIKAS 5000
#define ACTIVE LOW
#define OFF HIGH
baitų perdavimas[] = {A0,A1,A2,A3};
baitas StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
Eilutė replyNumber = "089510863958";
GPRS gprs;
void setup() {
for(int i=0; i < 4; i++) {
pinMode(Relė[i] , IŠVESTIS);
digitalWrite(Relay[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
while(!Serialas);
Serial.println("Suaktyvinti SIM800L V2 >>> Automatiškai skaityti SMS");
gprs.preInit();
delsimas (1000);
while (0 != gprs.init()) {
delsimas (1000);
Serial.print("init errorrn");
}
// Tvarkyti pranešimą ASCII režimu
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", LAIKOTIS)) {
KLAIDA("KLAIDA:CNMI");
grąžinti;
}
// Skaityti gaunamas SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", LAIKOTIS)) {
KLAIDA("KLAIDA:CNMI");
grąžinti;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Siųsti atsakymą numeriu => ");
Serial.println(buffNumber);
Serial.println("Inicializacija atlikta");
Serial.println("============================================== =============== =================");
}
void loop() {
// Keisti būseną Relė ON / OFF
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Jei yra įvesties duomenų iš SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Išsaugokite visus lastCharRead duomenis, tada, jei yra r arba n, kaip paskutinį gaunamo pranešimo signalą
if (lastCharRead == 'r' || lastCharRead == 'n') {
String paskutinė eilutė = String(dabartinė eilutė);
// Jei paskutinis pranešimas +CMT rodo naują pranešimą
if (lastLine.startsWith("+CMT:")) {
Serial.println(paskutinė eilutė);
nextLineIsMessage = tiesa;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(paskutinė eilutė);
// ================================================= ==== ================>> Relės valdiklio funkcija
//Relės 1 valdiklis
if (lastLine.indexOf("Relay 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Atsakyti====>>>> ");
Serial.println("1 relės būsena aktyvi");
gprs.sendSMS(buffNumber, "Relay 1 Status Active");
}
else if (lastLine.indexOf("Relay 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Atsakyti====>>>> ");
Serial.println("1 relės būsena išjungta");
gprs.sendSMS(buffNumber, "Relay 1 Status Off");
}
//Relės 2 valdiklis
if (lastLine.indexOf("Relay 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relės 2 būsena aktyvi");
gprs.sendSMS(buffNumber, "Relay 2 Status Active");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relay 2 Status Off");
gprs.sendSMS(buffNumber, "Relay 2 Status Off");
}
//Relės 3 valdiklis
if (lastLine.indexOf("Relay 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relės 3 būsena aktyvi");
gprs.sendSMS(buffNumber, "Relay 3 Status Active");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relės 3 būsena išjungta");
gprs.sendSMS(buffNumber, "Relay 3 Status Off");
}
//Relės 4 valdiklis
if (lastLine.indexOf("Relay 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relės 4 būsena aktyvi");
gprs.sendSMS(buffNumber, "Relay 1 Status Active");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Atsakyti====>>>> ");
Serial.println("Relės 4 būsena išjungta");
gprs.sendSMS(buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}
// ================================================= ==== ===================>>
}
//Išvalyti char masyvą kitai skaitymo eilutei
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
Kitas {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Įrenginio patikrinimas
Įrankis veikia siunčiant SMS į SIM800L su tam tikra simbolių seka. Pavyzdžiui, norėdami įjungti 1 relę, naudokite komandą „Relay 1 ON“, o norėdami ją išjungti – komandą „Relay 1 OFF“. Likusių relių komandos yra beveik vienodos, išskyrus kiekvienos relės, kurią norite paveikti, eilės numerį. Automatiškai išsiuntus žinutę, SIM800 išsiųs atsakymą pranešimo forma apie kiekvienos SIM kortelės būseną.
Vaizdo įrašas apie įrenginio surinkimą, konfigūravimą ir testavimą
Originalus straipsnis anglų kalba
Panašios meistriškumo klasės
Ypatingai įdomu
Komentarai (4)