DIY dari pats
Meistarklases, instrukcijas, noderīgi padomi, receptes.
» » »SMS kontrolieris, kura pamatā ir SIM800L
Uz SIM800L balstīts SMS kontrolieris

SIM800L V2.0 GSM / GPRS ir četrjoslu GSM / GPRS modulis, kas savietojams ar Arduino. Modulis tiek izmantots, lai ieviestu GSM (zvani un SMS) un GPRS funkcijas. Šī moduļa priekšrocība ir TTL saskarne ar 5 V spriegumu, kas ļauj to tieši savienot ar Arduino vai jebkuru citu sistēmu ar 5 V barošanas avotu. Lielākajai daļai tirgū esošo GSM / GPRS moduļu ir nepieciešami regulatora savienojumi vai līmeņa pārveidošana, savukārt SIM800L V.2 GSM / GPRS nav nepieciešamas papildu interfeisa līmeņa pārveidošanas shēmas.

Šeit ir piemērs projektam, izmantojot SIM800L V.2 GSM / GPRS. Projekta mērķis ir kontrolēt slēdžus, izmantojot SMS kontrolieri. Jūs varat viegli ieslēgt un izslēgt lielāko daļu mājas sadzīves tehnikas, piemēram, lamu, ventilatoru utt.

GSM / GPRS moduļa SIM800L V.2 raksturojums


Tālāk ir norādītas visas GSM / GPRS moduļa SIM800L V.2 tehniskās specifikācijas:
  • TTL seriālais interfeiss, kas savietojams ar 3,3 V un 5 V mikrokontrolleriem, kas ir saderīgi ar Arduino.
  • Modulim SIM800L ir TTL seriālais interfeiss.
  • Antenas spraudnis
  • Tīkla atbalsts: četras joslas 850/900/1800/1900 MHz, kas spēj veikt zvanus, SMS un datu pārsūtīšanu ar ievērojami samazinātu akumulatora patēriņu.
  • VDD TTL UART interfeiss, lai jūs varētu tieši savienot tādu MCU, kā 51MCU, ARM vai MSP430. VDD spraudnis, ko izmanto, lai atbilstu TTL spriegumam.
  • Modelis: SIMCOM SIM800L
  • Darba spriegums: no 3,7 V līdz 5 V;
  • izmēri: 40mm x 28mm x 3mm
  • GPRS multislot klase 12/10
  • GPRS pakešpakalpojumu klase B
  • Atbilst GSM fāzei 2/2 +
  • 4. klase (2 vati @ 850/900 MHz)
  • 1. klase (1 Wat = 1800/1900 MHz)


Nepieciešamie materiāli


Uz SIM800L balstīts SMS kontrolieris


Jums būs nepieciešams:


1. .
2. .
3. .
4. .
5. .
(Aktīvās saites uz veikalu iegādei)

Montāža un konfigurācija


Uz SIM800L balstīts SMS kontrolieris


Kad visi komponenti ir savienoti, izveidojiet programmu un lejupielādējiet to savā Arduino. Bet vispirms jums jāinstalē GPRS bibliotēka, kuru varat lejupielādēt:

[28,02 Kb] (lejupielādes: 481)


Programmas kods Arduino


Uz SIM800L balstīts SMS kontrolieris


Kad esat savienojis datoru ar SIM800L, četrkanālu releja moduli un Arduino, ievadiet zemāk esošo kodu un esat pabeidzis.


# iekļaut
# iekļaut
#define TIMEOUT 5000
#definēt AKTĪVI LOW
#definēt OFF HIGH

baitu relejs [] = {A0, A1, A2, A3};
baits StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = nepatiess;
Virknes atbildeNumber = "089510863958";
GPRS GPRS;

Nederīga iestatīšana () {
priekš (int i = 0; i <4; i ++) {
pinMode (relejs [i], OUTPUT);
digitalWrite (relejs [i], MATI);
StatRelay [i] = MATI;
}

Sērijas.begin (9600);
kamēr (! seriāls);
Serial.println ("Aktivizēt SIM800L V2 >>> Automātiski lasīt SMS");
gprs.preInit ();
kavēšanās (1000);
savukārt (0! = gprs.init ()) {
kavēšanās (1000);
Serial.print ("init errorrn");
}

// Pārvaldīt ziņojumu režīmā ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
KĻŪDA ("KĻŪDA: CNMI");
atgriezties
}
// Lasīt ienākošo SMS
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
KĻŪDA ("KĻŪDA: CNMI");
atgriezties
}
int pjg = atbildeNumber.length () + 1;
buffNumber [pjg];
answerNumber.toCharArray (buffNumber, pjg);
Serial.print ("Sūtīt atbildi uz numuru =>");
Serial.println (buffNumber);
Serial.println ("Inicializācija pabeigta");
Serial.println ("=============================================== ================= ");
}

tukšs cilpa () {
// Mainīt statusu Relejs ON / OFF
priekš (int i = 0; i <4; i ++) {
digitalWrite (relejs [i], StatRelay [i]);
}

// Ja ir ievades dati no SIM800
if (gprs.serialSIM800.avable ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Saglabājiet visus datus vietnē lastCharRead, ja ir r vai n, kā ienākošā ziņojuma gala signālu
if (lastCharRead == 'r' || lastCharRead == 'n') {
Virkne lastLine = virkne (currentLine);

// Ja pēdējais ziņojums + CMT norāda, ka pienāk jauns ziņojums
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = taisnība;
} cits, ja (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// ================================================= ================== >> Releju kontrollera funkcija

// 1. releja kontrolieris

if (lastLine.indexOf ("1. relejs ieslēgts")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("1. releja statuss aktīvs");
gprs.sendSMS (buffNumber, "1. releja statuss aktīvs");
}

else if (lastLine.indexOf ("1. relejs izslēgts")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("1. releja statuss izslēgts");
gprs.sendSMS (buffNumber, "1. releja statuss izslēgts");
}

// 2. releja kontrolieris

if (lastLine.indexOf ("2. relejs ieslēgts")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("Relay 2 Status Active");
gprs.sendSMS (buffNumber, "2. releja statuss aktīvs");
}
cits, ja (lastLine.indexOf ("2. relejs izslēgts")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("2. releja statuss izslēgts");
gprs.sendSMS (buffNumber, "2. releja statuss izslēgts");
}

// 3. releja kontrolieris
if (lastLine.indexOf ("3. relejs ieslēgts")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("3. releja statuss aktīvs");
gprs.sendSMS (buffNumber, "3. releja statuss aktīvs");
}
cits, ja (lastLine.indexOf ("3. relejs izslēgts")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("3. releja statuss izslēgts");
gprs.sendSMS (buffNumber, "3. releja statuss izslēgts");
}

// 4. releja kontrolieris
if (lastLine.indexOf ("4. relejs ieslēgts")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("Relay 4 Status Active");
gprs.sendSMS (buffNumber, "1. releja statuss aktīvs");
}
cits, ja (lastLine.indexOf ("4. relejs izslēgts")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Atbildēt ==== >>>>");
Serial.println ("4. releja statuss izslēgts");
gprs.sendSMS (buffNumber, "4. releja statuss izslēgts");
}
nextLineIsMessage = nepatiess;
}

// ================================================= ==================== >>

}
// Notīrīt simbolu masīvu nākamajai lasīšanas rindai
priekš (int i = 0; i 


Ierīces pārbaude


Uz SIM800L balstīts SMS kontrolieris


Rīks darbojas, nosūtot SMS uz SIM800L ar noteiktu rakstzīmju secību. Piemēram, lai ieslēgtu 1. releju, izmantojiet komandu “Relay 1 ON” un, lai izslēgtu, izmantojiet komandu “Relay 1 OFF”. Pārējiem relejiem ir gandrīz vienādas komandas, izņemot katra releja, uz kuru vēlaties darboties, sērijas numuru. Pēc automātiskas ziņojuma nosūtīšanas SIM800 katrai SIM kartei nosūtīs atbildi statusa ziņojuma veidā.

Video montāža, konfigurēšana un ierīces verifikācija



Komentāri (4)
  1. qeeeq
    #1 qeeeq Viesi 2017. gada 26. augusts 23:50
    0
    Oho! Kā viņi saka, viss ģeniāls ir vienkāršs. Man pat nevajadzēja neko pirkt, iespējams, pie katras šādas atkritumu mājās bez taras
  2. Aleksejs
    #2 Aleksejs Viesi 2017. gada 16. decembris 16:53
    0
    Tas neizdodas. Sastādot, tajā tiek rakstīts "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:" Arduino / Genuino Uno "
    1. Deniss
      #3 Deniss Viesi 2017. gada 17. decembris 08:11
      0
      Projektam jāizmanto ceļš bez krievu burtiem.
  3. Andrejs
    #4 Andrejs Viesi 2019. gada 10. februāris 11:54
    0
    Skicē ir daudz kļūdu. Nedarbosies.