SMS ovládač založený na SIM800L

SIM800L V2.0 GSM/GPRS je štvorpásmový GSM/GPRS modul kompatibilný s Arduino. Modul slúži na implementáciu funkcií GSM (hovory a SMS) a GPRS. Výhodou tohto modulu je rozhranie TTL, ktoré má napätie 5V, čo umožňuje priame pripojenie k Arduinu alebo akémukoľvek inému systému s napájacím napätím 5V. Väčšina modulov GSM/GPRS na trhu vyžaduje pripojenie regulátora alebo konverziu úrovne, zatiaľ čo v SIM800L V.2 GSM/GPRS nevyžaduje ďalšie obvody na konverziu úrovne rozhrania.
Uveďme príklad projektu pomocou SIM800L V.2 GSM/GPRS. Zmyslom projektu je ovládanie výhybiek pomocou SMS ovládača. Môžete jednoducho zapnúť a vypnúť väčšinu domácich spotrebičov v dome, ako je lama, ventilátor atď.
Charakteristika modulu SIM800L V.2 GSM/GPRS
Nižšie sú uvedené všetky technické charakteristiky modulu SIM800L V.2 GSM/GPRS:
- Sériové rozhranie TTL kompatibilné s 3,3V a 5V kompatibilnými mikrokontrolérmi Arduino.
- Modul SIM800L má sériové rozhranie TTL.
- Konektor na pripojenie antény.
- Podpora siete: štyri pásma 850/900/1800/1900 MHz, schopné uskutočňovať hovory, SMS a dátové prenosy s výrazne zníženou spotrebou batérie.
- Rozhranie VDD TTL UART, takže môžete priamo pripojiť MCU, ako je 51MCU, ARM alebo MSP430.Zástrčka VDD sa používa na prispôsobenie napätia TTL.
- Model: SIMCOM SIM800L
- Prevádzkové napätie: od 3,7V do 5V;
- rozmery: 40 mm x 28 mm x 3 mm
- GPRS multislot triedy 12/10
- Paketová služba GPRS triedy B
- Vyhovuje GSM fáze 2/2+
- Trieda 4 (2 watty pri 850/900 MHz)
- Trieda 1 (1 Watt @ 1800/1900 MHz)
Potrebné materiály

Budete potrebovať:
1. SIM800L V.2 GSM/GPRS modul.
2. Arduino Uno.
3. 4-kanálový 5V reléový modul.
4. Drôty - prepojky.
5. Napájanie 5V.
(Aktívne odkazy na obchod na nákup)
Montáž a konfigurácia

Po pripojení všetkých komponentov vytvorte program a potom ho nahrajte do svojho Arduina. Najprv si však musíte nainštalovať knižnicu GPRS, ktorú si môžete stiahnuť:
gprs.zip
[28,02 Kb] (stiahnutia: 887)
Programový kód pre Arduino

Po pripojení SIM800L, 4 kanálového reléového modulu a Arduina k počítaču zadajte nižšie uvedený kód a máte hotovo.
#include
#include
#define TIMEOUT 5000
#define AKTÍVNE NÍZKE
#define OFF HIGH
byte Relay[] = {A0,A1,A2,A3};
byte 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(relé[i] , VÝSTUP);
digitalWrite(relé[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
while(!Seriál);
Serial.println("Aktivovať SIM800L V2 >>> Automaticky čítať SMS");
gprs.preInit();
oneskorenie(1000);
while (0 != gprs.init()) {
oneskorenie(1000);
Serial.print("init errorrn");
}
// Správa správy do režimu ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERROR("CHYBA:CNMI");
návrat;
}
// Čítanie prichádzajúcej SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR("CHYBA:CNMI");
návrat;
}
int pjg = odpovedCislo.dlzka() + 1;
buffNumber[pjg];
answerNumber.toCharArray(buffNumber,pjg);
Serial.print("Odoslať odpoveď na číslo => ");
Serial.println(buffNumber);
Serial.println("Inicializácia dokončená");
Serial.println("============================================== ================================");
}
void loop() {
// Zmena stavu relé ZAP/VYP
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Ak existujú vstupné dáta zo SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Uložte všetky údaje na lastCharRead, potom ak je tam r alebo n, ako konečný signál prichádzajúcej správy
if (lastCharRead == 'r' || lastCharRead == 'n') {
String posledny riadok = String(aktualny riadok);
// Ak posledná správa +CMT označuje príchod novej správy
if (lastLine.startsWith("+CMT:")) {
Serial.println(posledny riadok);
nextLineIsMessage = true;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(posledny riadok);
// ================================================= ==== ================>> Funkcia reléového ovládača
//Ovládač relé 1
if (lastLine.indexOf("Relé 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Odpovedať====>>>>");
Serial.println("Aktívny stav relé 1");
gprs.sendSMS(číslo buff, "Stav relé 1 aktívny");
}
else if (lastLine.indexOf("Relé 1 VYPNUTÉ") >= 0) {
StatRelay[0] = MATI;
Serial.print("Odpovedať====>>>>");
Serial.println("Stav relé 1 vypnutý");
gprs.sendSMS(číslo buff, "Stav relé 1 vypnutý");
}
//Ovládač relé 2
if (lastLine.indexOf("Relé 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Odpovedať====>>>>");
Serial.println("Aktívny stav relé 2");
gprs.sendSMS(buffNumber, "Stav relé 2 aktívny");
}
else if (lastLine.indexOf("Relé 2 VYPNUTÉ") >= 0) {
StatRelay[1] = MATI;
Serial.print("Odpovedať====>>>>");
Serial.println("Stav relé 2 vypnutý");
gprs.sendSMS(číslo buff, "Stav relé 2 vypnutý");
}
//Ovládač relé 3
if (lastLine.indexOf("relé 3 ZAP") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Odpovedať====>>>>");
Serial.println("Aktívny stav relé 3");
gprs.sendSMS(buffNumber, "Stav relé 3 aktívny");
}
else if (lastLine.indexOf("relé 3 VYPNUTÉ") >= 0) {
StatRelay[2] = MATI;
Serial.print("Odpovedať====>>>>");
Serial.println("Stav relé 3 vypnutý");
gprs.sendSMS(číslo buff, "Stav relé 3 vypnutý");
}
//Ovládač relé 4
if (lastLine.indexOf("relé 4 ZAP") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Odpovedať====>>>>");
Serial.println("Aktívny stav relé 4");
gprs.sendSMS(číslo buff, "Stav relé 1 aktívny");
}
else if (lastLine.indexOf("relé 4 VYPNUTÉ") >= 0) {
StatRelay[3] = MATI;
Serial.print("Odpovedať====>>>>");
Serial.println("Stav relé 4 vypnutý");
gprs.sendSMS(číslo buff, "Stav relé 4 vypnutý");
}
nextLineIsMessage = false;
}
// ================================================= ==== ====================>>
}
//Vymazať pole znakov pre ďalší riadok čítania
for ( int i = 0; i < sizeof(currentLine); ++i ) {
aktualny riadok[i] = (char)0;
}
currentLineIndex = 0;
}
inak {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Kontrola zariadenia

Nástroj funguje tak, že na SIM800L odošle SMS so špecifickou sekvenciou znakov. Napríklad na zapnutie relé 1 použite príkaz „Relé 1 ZAP“ a na jeho vypnutie použite príkaz „Relé 1 VYP“. Pre ostatné relé sú príkazy takmer rovnaké, s výnimkou poradového čísla každého relé, ktoré chcete ovplyvniť. Po automatickom odoslaní správy SIM800 odošle odpoveď vo forme správy o stave každej SIM karty.
Video z montáže, konfigurácie a testovania zariadenia
Pôvodný článok v angličtine
Podobné majstrovské kurzy
Obzvlášť zaujímavé
Komentáre (4)