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
Jums būs nepieciešams:
1. .
2. .
3. .
4. .
5. .
(Aktīvās saites uz veikalu iegādei)
Montāža un konfigurācija
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
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
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ā.