SMS controller batay sa SIM800L

SMS controller batay sa SIM800L

Ang SIM800L V2.0 GSM/GPRS ay isang quad-band GSM/GPRS module na tugma sa Arduino. Ang module ay ginagamit upang ipatupad ang GSM (mga tawag at SMS) at GPRS function. Ang bentahe ng modyul na ito ay ang interface ng TTL, na may boltahe na 5V, na nagbibigay-daan sa iyo upang direktang ikonekta ito sa Arduino o anumang iba pang sistema na may 5V supply boltahe. Karamihan sa mga module ng GSM/GPRS sa merkado ay nangangailangan ng mga koneksyon sa regulator o level conversion, habang sa SIM800L V.2 GSM/GPRS ay hindi nangangailangan ng karagdagang mga interface level conversion circuits.

Magbigay tayo ng halimbawa ng isang proyekto gamit ang SIM800L V.2 GSM/GPRS. Ang punto ng proyekto ay upang makontrol ang mga switch gamit ang isang SMS controller. Madali mong i-on at i-off ang karamihan sa mga gamit sa bahay sa bahay, gaya ng llama, fan, at iba pa.

Mga katangian ng SIM800L V.2 GSM/GPRS module


Nasa ibaba ang lahat ng teknikal na katangian ng SIM800L V.2 GSM/GPRS module:
  • TTL serial interface compatible sa 3.3V at 5V Arduino compatible microcontrollers.
  • Ang SIM800L module ay may TTL serial interface.
  • Plug ng koneksyon ng antena.
  • Suporta sa network: apat na banda 850/900/1800/1900 MHz, na may kakayahang gumawa ng mga tawag, SMS at paglilipat ng data na may makabuluhang pagbawas sa pagkonsumo ng baterya.
  • VDD TTL UART interface, kaya maaari mong direktang ikonekta ang MCU gaya ng 51MCU, ARM o MSP430.Ang VDD plug ay ginagamit upang tumugma sa TTL boltahe.
  • Modelo: SIMCOM SIM800L
  • Operating boltahe: mula 3.7V hanggang 5V;
  • mga sukat: 40mm x 28mm x 3mm
  • GPRS multislot class 12/10
  • GPRS packet service class B
  • Sumusunod sa GSM phase 2/2+
  • Class 4 (2 Watt @ 850/900 MHz)
  • Class 1 (1Watt @ 1800/1900MHz)


Mga kinakailangang materyales


SMS controller batay sa SIM800L


Kakailanganin mo:


1. SIM800L V.2 GSM/GPRS module.
2. Arduino Uno.
3. 4 Channel 5V Relay Module.
4. Mga wire - mga jumper.
5. Power supply 5V.
(Mga link na aktibo sa tindahan para sa pagbili)

Pagpupulong at pagsasaayos


SMS controller batay sa SIM800L


Kapag naikonekta mo na ang lahat ng mga bahagi, lumikha ng isang programa at pagkatapos ay i-upload ito sa iyong Arduino. Ngunit una, dapat mong i-install ang GPRS library, na maaari mong i-download:

gprs.zip [28.02 Kb] (mga pag-download: 887)


Program code para sa Arduino


SMS controller batay sa SIM800L


Kapag nakonekta mo na ang iyong SIM800L, 4 channel relay module at Arduino sa iyong computer, ilagay ang code sa ibaba at tapos ka na.



#isama 

#isama

#define TIMEOUT 5000

#define ACTIVE LOW

#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() {

para sa(int i=0; i < 4; i++) {

pinMode(Relay[i] , OUTPUT);

digitalWrite(Relay[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

habang(!Serial);

Serial.println("I-activate ang SIM800L V2 >>> Awtomatikong Magbasa ng SMS");

gprs.preInit();

pagkaantala(1000);

habang (0 != gprs.init()) {

pagkaantala(1000);

Serial.print("init errorrn");

}



// Pamahalaan ang mensahe sa mode na ASCII

kung (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

bumalik;

}

// Basahin ang Papasok na SMS

kung (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

bumalik;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Ipadala ang tugon sa numero => ");

Serial.println(buffNumber);

Serial.println("Initialization Tapos na");

Serial.println("============================================= ============================= =================");

}



void loop() {

// Baguhin ang status Relay ON / OFF

para sa(int i=0; i < 4; i++) {

digitalWrite(Relay[i], StatRelay[i]);

}



// Kung mayroong input data mula sa SIM800

kung (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// I-save ang lahat ng data sa lastCharRead, pagkatapos kung mayroong r o n, bilang isang huling senyales ng papasok na mensahe

kung (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(currentLine);



// Kung ang huling mensahe +CMT ay nagpapahiwatig ng bagong mensahe na dumating

kung (lastLine.startsWith("+CMT:")) {

Serial.println(lastLine);

nextLineIsMessage = totoo;

} else if (lastLine.length() > 0) {

kung (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================== =================== ================>> Function ng Relay Controller



//Relay 1 Controller



if (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 1 Status Aktibo");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}



else if (lastLine.indexOf("Relay 1 OFF") >= 0) {

StatRelay[0] = MATI;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 1 Status Off");

gprs.sendSMS(buffNumber, "Relay 1 Status Off");

}



//Relay 2 Controller



if (lastLine.indexOf("Relay 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 2 Status Aktibo");

gprs.sendSMS(buffNumber, "Relay 2 Status Active");

}

else if (lastLine.indexOf("Relay 2 OFF") >= 0) {

StatRelay[1] = MATI;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 2 Status Off");

gprs.sendSMS(buffNumber, "Relay 2 Status Off");

}



//Relay 3 Controller

if (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 3 Status Aktibo");

gprs.sendSMS(buffNumber, "Relay 3 Status Active");

}

else if (lastLine.indexOf("Relay 3 OFF") >= 0) {

StatRelay[2] = MATI;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 3 Status Off");

gprs.sendSMS(buffNumber, "Relay 3 Status Off");

}



//Relay 4 Controller

if (lastLine.indexOf("Relay 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 4 Status Aktibo");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}

else if (lastLine.indexOf("Relay 4 OFF") >= 0) {

StatRelay[3] = MATI;

Serial.print("Tumugon====>>>> ");

Serial.println("Relay 4 Status Off");

gprs.sendSMS(buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}



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



}

//I-clear ang char array para sa susunod na linya ng read

para sa ( int i = 0; i < sizeof(currentLine); ++i ) {

kasalukuyangLine[i] = (char)0;

}

kasalukuyangLineIndex = 0;

}

iba {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Pagsusuri ng device


SMS controller batay sa SIM800L


Gumagana ang tool sa pamamagitan ng pagpapadala ng SMS sa SIM800L na may partikular na pagkakasunod-sunod ng mga character. Halimbawa, para i-on ang relay 1, gamitin ang command na "Relay 1 ON", at para i-off ito, gamitin ang command na "Relay 1 OFF". Para sa natitirang mga relay, halos pareho ang mga command, maliban sa sequence number ng bawat relay na gusto mong maimpluwensyahan. Pagkatapos awtomatikong ipadala ang mensahe, magpapadala ang SIM800 ng tugon sa anyo ng mensahe tungkol sa katayuan ng bawat SIM card.

Video ng pagpupulong, pagsasaayos at pagsubok ng device



Orihinal na artikulo sa Ingles
bumalik
Magkomento
  • bowtiengumititumatawanamumulasmileyrelaxed relaxedngumisi
    puso_matapaghalik_pusonaghahalikan nang nakapikitnamulagumaan ang loobnasiyahanngumisi
    kumindatstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesnakangisipaghalikstuck_out_tonguenatutulog
    nag-aalalanakasimangotnagdadalamhatibukas_bibignakangiwinalilitotumahimik
    walang ekspresyonhindi mapakalipawis_ngitipawisdisappointed_relievedpagodpassive
    nabigonalilitonakakatakotmalamig na pawismagtiyagaumiyakhikbi
    kagalakannamanghasigawpagod_mukhagalitgalitpagtatagumpay
    inaantokyummaskarasalaming pang-arawnahihilo_mukhaimpnakangiting_imp
    neutral_facewalang_bibiginosente
3+tatlo=
Mga komento (4)
  1. qeeeq
    #1 qeeeq mga panauhin Agosto 26, 2017 23:50
    0
    Wow! Tulad ng sinasabi nila, ang lahat ng mapanlikha ay simple. Hindi ko na kailangang bumili ng kahit ano, malamang na lahat ay may tambak ng ganoong basura sa bahay
  2. Alexei
    #2 Alexei mga panauhin Disyembre 16, 2017 16:53
    0
    Hindi gumagana. Kapag nag-compile, sinasabi nitong "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis mga panauhin Disyembre 17, 2017 08:11
      0
      Kailangan mong gumamit ng landas na walang mga letrang Ruso sa proyekto.
  3. Andrey
    #4 Andrey mga panauhin Pebrero 10, 2019 11:54
    2
    Mayroong maraming mga error sa sketch. Hindi ito gagana.