SMS kontrolieris uz SIM800L bāzes
SIM800L V2.0 GSM/GPRS ir četrjoslu GSM/GPRS modulis, kas ir saderīgs ar Arduino. Modulis tiek izmantots GSM (zvani un SMS) un GPRS funkciju ieviešanai. Šī moduļa priekšrocība ir TTL interfeiss, kura spriegums ir 5V, kas ļauj to tieši savienot ar Arduino vai jebkuru citu sistēmu ar 5V barošanas spriegumu. Lielākajai daļai tirgū pieejamo 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.
Sniegsim piemēru projektam, kas izmanto SIM800L V.2 GSM/GPRS. Projekta mērķis ir vadīt slēdžus, izmantojot SMS kontrolieri. Jūs varat viegli ieslēgt un izslēgt lielāko daļu sadzīves tehnikas mājā, piemēram, lamu, ventilatoru utt.
SIM800L V.2 GSM/GPRS moduļa raksturojums
Tālāk ir sniegti visi SIM800L V.2 GSM/GPRS moduļa tehniskie parametri:
- TTL seriālais interfeiss, kas saderīgs ar 3,3 V un 5 V Arduino saderīgiem mikrokontrolleriem.
- SIM800L modulim ir TTL seriālais interfeiss.
- Antenas savienojuma 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 MCU, piemēram, 51MCU, ARM vai MSP430.VDD spraudnis tiek izmantots, lai saskaņotu TTL spriegumu.
- Modelis: SIMCOM SIM800L
- Darba spriegums: no 3,7V līdz 5V;
- izmēri: 40mm x 28mm x 3mm
- GPRS vairāku slotu klase 12/10
- GPRS pakešu pakalpojuma klase B
- Atbilst GSM fāzei 2/2+
- 4. klase (2 vati pie 850/900 MHz)
- 1. klase (1 vats pie 1800/1900 MHz)
Nepieciešamie materiāli
Jums būs nepieciešams:
1. SIM800L V.2 GSM/GPRS modulis.
2. Arduino Uno.
3. 4 kanālu 5V releja modulis.
4. Vadi - džemperi.
5. Barošana 5V.
(Aktīvās saites uz veikalu iegādei)
Montāža un konfigurācija
Kad esat pievienojis visus komponentus, izveidojiet programmu un pēc tam augšupielādējiet to savā Arduino. Bet vispirms jums ir jāinstalē GPRS bibliotēka, kuru varat lejupielādēt:
gprs.zip
[28,02 Kb] (lejupielādes: 887)
Programmas kods Arduino
Kad esat pievienojis datoram SIM800L, 4 kanālu releja moduli un Arduino, ievadiet tālāk norādīto kodu un esat pabeidzis.
#iekļauts
#iekļauts
#define TIMEOUT 5000
#define ACTIVE LOW
#define IZSLĒGTS AUGSTS
baitu relejs[] = {A0,A1,A2,A3};
baits StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
Virkne 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("Aktivizēt SIM800L V2 >>> Automātiski lasīt SMS");
gprs.preInit();
kavēšanās (1000);
while (0 != gprs.init()) {
kavēšanās (1000);
Serial.print("init errorrn");
}
// Pārvaldīt ziņojumu ASCII režīmā
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
KĻŪDA("KĻŪDA:CNMI");
atgriešanās;
}
// Lasīt ienākošās SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
KĻŪDA("KĻŪDA:CNMI");
atgriešanās;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Sūtīt atbildi uz numuru => ");
Serial.println(buffNumber);
Serial.println("Inicializācija pabeigta");
Serial.println("============================================= =============== =================");
}
void loop() {
// Mainīt statusu Relay ON / OFF
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Ja ir ievades dati no SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Saglabājiet visus datus vietnē lastCharRead, tad, ja ir r vai n, kā ienākošā ziņojuma pēdējo signālu
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(pašreizējāLine);
// Ja pēdējais ziņojums +CMT norāda uz jaunu ziņojumu
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastLine);
nextLineIsMessage = patiess;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(lastLine);
// ================================================= ==== ================>> Releja kontrollera funkcija
//Releja 1 kontrolieris
if (lastLine.indexOf("Relejs 1 IESL.") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 1 statuss aktīvs");
gprs.sendSMS(buffNumber, "Releja 1 statuss aktīvs");
}
else if (lastLine.indexOf("Relay 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 1 statuss izslēgts");
gprs.sendSMS(buffNumber, "Relay 1 Status Off");
}
//Releja 2 kontrolieris
if (lastLine.indexOf("Relejs 2 IESL.") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 2 statuss aktīvs");
gprs.sendSMS(buffNumber, "2. releja statuss aktīvs");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 2 statuss izslēgts");
gprs.sendSMS(buffNumber, "Relay 2 Status Off");
}
//Releja 3 kontrolieris
if (lastLine.indexOf("Relejs 3 IESL.") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 3 statuss aktīvs");
gprs.sendSMS(buffNumber, "Releja 3 statuss aktīvs");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 3 statuss izslēgts");
gprs.sendSMS(buffNumber, "Relay 3 Status Off");
}
//Releja 4 kontrolieris
if (lastLine.indexOf("Relejs 4 IESL.") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 4 statuss aktīvs");
gprs.sendSMS(buffNumber, "Releja 1 statuss aktīvs");
}
else if (lastLine.indexOf("Relejs 4 IZSLĒGTS") >= 0) {
StatRelay[3] = MATI;
Serial.print("Atbildēt====>>>> ");
Serial.println("Releja 4 statuss izslēgts");
gprs.sendSMS(buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}
// ================================================= ==== ===================>>
}
//Notīrīt char masīvu nākamajai lasīšanas rindai
for ( int i = 0; i < sizeof(currentLine); ++i ) {
pašreizējāLine[i] = (char)0;
}
currentLineIndex = 0;
}
else {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Ierīces pārbaude
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”, bet, lai to izslēgtu, izmantojiet komandu “Relay 1 OFF”. Pārējiem relejiem komandas ir gandrīz vienādas, izņemot katra releja kārtas numuru, kuru vēlaties ietekmēt. Pēc automātiskas ziņas nosūtīšanas SIM800 nosūtīs atbildi ziņojuma veidā par katras SIM kartes statusu.
Video par ierīces montāžu, konfigurēšanu un testēšanu
Oriģināls raksts angļu valodā
Līdzīgas meistarklases
Īpaši interesanti
Komentāri (4)