SIM800L alapú SMS vezérlő
A SIM800L V2.0 GSM/GPRS egy négysávos GSM/GPRS modul, amely kompatibilis az Arduino-val. A modul GSM (hívások és SMS) és GPRS funkciók megvalósítására szolgál. Ennek a modulnak az előnye az 5V-os feszültségű TTL interfész, amely lehetővé teszi, hogy közvetlenül csatlakoztassa Arduino-hoz vagy bármely más, 5 V-os tápfeszültségű rendszerhez. A legtöbb GSM/GPRS modul a piacon szabályozó csatlakozást vagy szintátalakítást igényel, míg a SIM800L V.2 GSM/GPRS esetében nincs szükség további interfész szintű átalakító áramkörökre.
Nézzünk egy példát egy SIM800L V.2 GSM/GPRS-t használó projektre. A projekt lényege a kapcsolók vezérlése SMS vezérlővel. Könnyedén be- és kikapcsolhatja a házban található legtöbb háztartási gépet, mint például a lámát, a ventilátort stb.
A SIM800L V.2 GSM/GPRS modul jellemzői
Az alábbiakban bemutatjuk a SIM800L V.2 GSM/GPRS modul összes műszaki jellemzőjét:
- TTL soros interfész kompatibilis a 3.3V és 5V Arduino kompatibilis mikrokontrollerekkel.
- A SIM800L modul TTL soros interfésszel rendelkezik.
- Antenna csatlakozó dugó.
- Hálózati támogatás: négy sáv 850/900/1800/1900 MHz, hívások kezdeményezésére, SMS-ek és adatátvitelre alkalmas jelentősen csökkentett akkumulátorfogyasztás mellett.
- VDD TTL UART interfész, így közvetlenül csatlakoztathat MCU-t, például 51MCU-t, ARM-et vagy MSP430-at.A VDD dugót a TTL feszültség illesztésére használják.
- Modell: SIMCOM SIM800L
- Üzemi feszültség: 3,7V-tól 5V-ig;
- Méretek: 40mm x 28mm x 3mm
- GPRS multislot osztály 12/10
- B osztályú GPRS csomagszolgáltatás
- Megfelel a 2/2+ GSM fázisnak
- 4. osztály (2 Watt @ 850/900 MHz)
- 1. osztály (1 Watt @ 1800/1900 MHz)
Szükséges anyagok
Szükséged lesz:
1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4 csatornás 5V relé modul.
4. Vezetékek - jumperek.
5. Tápellátás 5V.
(Aktív linkek a bolthoz a vásárláshoz)
Összeszerelés és konfiguráció
Miután csatlakoztatta az összes összetevőt, hozzon létre egy programot, majd töltse fel az Arduino-ra. Először azonban telepítenie kell a GPRS könyvtárat, amelyet letölthet:
gprs.zip
[28,02 Kb] (letöltések száma: 887)
Az Arduino programkódja
Miután csatlakoztatta a SIM800L-t, a 4 csatornás relémodult és az Arduino-t a számítógépéhez, írja be az alábbi kódot, és kész.
#beleértve
#beleértve
#define IDŐTARTÓ 5000
#define AKTÍV ALACSONY
#define KI MAGAS
byte Relay[] = {A0,A1,A2,A3};
bájt StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS gprs;
void setup() {
for(int i=0; i < 4; i++) {
pinMode(Relay[i] , OUTPUT);
digitalWrite(Relay[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
while(!Serial);
Serial.println("SIM800L V2 aktiválása >>> SMS automatikus olvasása");
gprs.preInit();
késleltetés(1000);
while (0 != gprs.init()) {
késleltetés(1000);
Serial.print("init errorrn");
}
// Üzenet kezelése ASCII módba
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", IDŐTÚL)) {
ERROR("HIBA:CNMI");
Visszatérés;
}
// Bejövő SMS olvasása
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", IDŐTÚL)) {
ERROR("HIBA:CNMI");
Visszatérés;
}
int pjg = válaszSzám.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Válasz küldése a számra => ");
Serial.println(buffNumber);
Serial.println("Inicializálás kész");
Serial.println("============================================= =============== =================");
}
void loop() {
// Állapot módosítása Relé BE / KI
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Ha vannak bemeneti adatok a SIM800-ról
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Mentse el az összes adatot a lastCharReadben, majd ha van r vagy n, a bejövő üzenet végső jeleként
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(aktuálisLine);
// Ha az utolsó +CMT üzenet új üzenet érkezését jelzi
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastLine);
nextLineIsMessage = igaz;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(lastLine);
// ================================================= ==== ================>> A relévezérlő funkciója
//Relé 1 vezérlő
if (lastLine.indexOf("Relé 1 BE") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 1 állapota aktív");
gprs.sendSMS(buffNumber, "Relé 1 állapota aktív");
}
else if (lastLine.indexOf("Relé 1 KI") >= 0) {
StatRelay[0] = MATI;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 1 állapota kikapcsolva");
gprs.sendSMS(buffNumber, "Relay 1 Status Off");
}
//Relé 2 vezérlő
if (lastLine.indexOf("Relé 2 BE") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 2 állapota aktív");
gprs.sendSMS(buffNumber, "Relé 2 állapota aktív");
}
else if (lastLine.indexOf("Relé 2 KI") >= 0) {
StatRelay[1] = MATI;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 2 állapota kikapcsolva");
gprs.sendSMS(buffNumber, "Relay 2 Status Off");
}
//Relé 3 vezérlő
if (lastLine.indexOf("Relé 3 BE") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 3 állapota aktív");
gprs.sendSMS(buffNumber, "Relé 3 állapota aktív");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 3 állapota kikapcsolva");
gprs.sendSMS(buffNumber, "Relay 3 Status Off");
}
//Relé 4 vezérlő
if (lastLine.indexOf("Relé 4 BE") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 4 állapota aktív");
gprs.sendSMS(buffNumber, "Relé 1 állapota aktív");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Válasz====>>>> ");
Serial.println("Relé 4 állapota kikapcsolva");
gprs.sendSMS(buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}
// ================================================= ==== ===================>>
}
//Char tömb törlése az olvasás következő sorához
for ( int i = 0; i < sizeof(currentLine); ++i ) {
aktuálisLine[i] = (char)0;
}
aktuálisLineIndex = 0;
}
más {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Eszköz ellenőrzése
Az eszköz úgy működik, hogy SMS-t küld a SIM800L-re meghatározott karaktersorozattal. Például az 1. relé bekapcsolásához használja a „Relé 1 BE” parancsot, kikapcsolásához pedig a „Relé 1 KI” parancsot. A többi relék parancsai szinte azonosak, kivéve az egyes befolyásolni kívánt relék sorszámát. Az üzenet automatikus elküldése után a SIM800 üzenet formájában választ küld az egyes SIM-kártyák állapotáról.
Videó a készülék összeszereléséről, konfigurációjáról és teszteléséről
Eredeti cikk angolul
Hasonló mesterkurzusok
Különösen érdekes
Megjegyzések (4)