Arduino layihələriKoteqoriyasızMobil Rabitə

SIM800L GSM Modulu və Arduino ilə SMS və Çağırış Göndərin (Zəng edin)

Arduino Project Working, Interfacing SIM800L GSM Module, Sending Receiving SMS, Making Call

Sizdən bir neçə kilometr uzaqlıqdakı evinizdə baş verənləri dinləmək və ya yalnız səssiz bir çağırışla bağınızdakı çiləyici sistemini aktivləşdirmək istərdiniz?!
O halda SIM800L GSM / GPRS modulunu, IoT ilə işə başlamağınız üçün möhkəm bir başlanğıc nöqtəsi kimi hesab etmək olar.

SIM800L GSM / GPRS modulu çox sayda IoT layihəsinə inteqrasiya edilə bilən miniatür GSM modemidir. Bu modulu normal bir mobil telefonun edə biləcəyi hər şeyi yerinə yetirmək üçün istifadə edə bilərsiniz;
SMS mətn mesajları, GPRS, TCP / IP vasitəsilə internetə qoşulmaq, telefon danışığı- zəng etmək və ya zəng qəbul etmək və daha artığı! Üstəlik, modul dörd bantlı GSM / GPRS şəbəkəsini dəstəkləyir, yəni dünyanın hər yerində işləyir.

SIM800L GSM / GPRS moduluna ümumi baxış

Modulun mərkəzində SimCom-un bir SIM800L GSM mobil çipi durur. Çipin işləmə gərginliyi 3.4V-dən 4.4V-ə qədərdir və bu da onu birbaşa LiPo batareyası təchizatı üçün ideal bir “namizəd” halına gətirir. Bu, çox yer olmayan layihələrə yerləşdirmək üçün də yaxşı bir seçimdir.

SIM800L Module Hardware Overview - LED Indicator, u.fl Connector, Helical Antenna

SIM800L GSM çipinin bütün lazımi məlumat pinləri 0.1 inch (2.54mm) aralıqlı pinlərə bölünmüşdür. Buraya UART üzərindən mikrokontrollerlə əlaqə üçün lazım olan pinlər də daxildir. Modul, Auto-Baud aşkarlanması ilə 1200bps-dən 115200bps-ə qədər ötürmə sürətini dəstəkləyir.

Modula bir şəbəkəyə qoşulmaq üçün xarici bir anten lazımdır. Modul ümumiyyətlə lehimlə birbaşa PCB-dəki NET pininə birləşdirilən Helical Antenna ilə gəlir. Antenanı lövhədən uzaqlaşdırmaq istəsəniz, lövhədə U.FL konnektoru da var.

SIM800L Module Hardware Overview - Micro SIM Socket, Direction to Insert SIM

Arxasında bir SIM yuvası var! Hər hansı bir aktivləşdirilmiş, 2G mikro SIM kart mükəmməl işləyəcəkdir. SIM kartı daxil etmək üçün düzgün istiqamət normal olaraq SIM yuvasının səthinə həkk olunub.

Bu modul yalnız 1 düym² (inch²) ölçüsündədir, lakin kiçik ölçüsünə baxmayaraq,təəccübləndirəcək bir çox xüsusiyyətə sahibdir. Bəziləri aşağıda verilmişdir:

  • Dörd diapazonu dəstəkləyir: GSM850, EGSM900, DCS1800 və PCS1900
  • İstənilən 2G SIM ilə istənilən qlobal GSM şəbəkəsinə qoşulun
  • Xarici 8Ω dinamik və elektret mikrofonundan istifadə edərək səsli zənglər edin və qəbul edin
  • SMS göndərin və qəbul edin
  • GPRS məlumatlarını göndərin və qəbul edin (TCP / IP, HTTP və s.)
  • FM radio yayımlarını axtarın və qəbul edin

Ötürmə gücü:

  • GSM850 üçün sinif 4 (2W)
  • DCS1800 üçün sinif 1 (1W)
  • Serial əsaslı AT Komanda Dəsti
  • Hüceyrə antenaları üçün FL konnektorları
  • Mikro SIM Kartı qəbul edir

LED Status Göstəriciləri

SIM800L Cellular Modulunun sağ üst tərəfində, mobil şəbəkənizin vəziyyətini göstərən bir LED var. Hansı vəziyyətdə olduğunu göstərmək üçün müxtəlif aralıqlarla (sürətdə) yanıb-sönəcək:

Netlight LED Blinking Finding Network Connection

1 saniyədən bir yanıb-sönür

Modul işləyir, lakin hələ də mobil şəbəkəyə qoşulmayıb.

Netlight LED Blinking Active GPRS Connection

2 saniyədən bir yanıb-sönür

İstədiyiniz GPRS məlumat bağlantısı aktivdir.

Netlight LED Blinking Network Connection Established

3 saniyədən bir yanıb-sönür

Modul mobil şəbəkə ilə əlaqə qurub,səs və SMS göndərə / qəbul edə bilər.

Antenin seçilməsi

Modulu hər hansı bir səs və ya məlumat rabitəsi və bəzi SIM əmrləri üçün istifadə etmək üçün bir antennaya ehtiyac var. Beləliklə, bir antenna seçmək həlledici bir şey ola bilər. SIM800L modulunuza antenna əlavə etməyin iki yolu var.

Birincisi, ümumiyyətlə modul PCB-də NET pinin-ə birbaşa lehimlənən bir Helical GSM antenadır. Bu antenna, yerə qənaət etməsi lazım olan layihələr üçün çox faydalıdır, ancaq xüsusən layihəniz qapalı yerdədirsə əlaqəni təmin etməkdə çətinlik çəkəcəkdir.

SIM800L GSM Module with Helical Antenna

İkincisi, hər hansı bir 3dBi GSM antenası və U.FL-SMA adapteridir ki, bu da 3 dollardan daha az qiymətə onlayn əldə edilə bilər. Bu anteni modulun sol üst küncündə yerləşən kiçik u.fl konnektoruna birləşdirə bilərsiniz. Bu tip anten daha yaxşı bir işə sahibdir və modulunuzu metal bir qutunun içinə qoymağa imkan verir – anten kənarda olduğu müddətdə.

SIM800L GSM Module with 2dBi Duck Antenna

SIM800L modulu üçün enerji təchizatı

SIM800L modulunun işləməsinin ən vacib hissələrindən biri onu kifayət qədər güclə təmin etməkdir.

Hansı vəziyyətdə olduğundan asılı olaraq, SIM800L nisbətən enerjiyə həssas bir cihaz ola bilər. Modulun maksimum cərəyan sərf etməsi ötürmə zamanı (transmission burst) 2A civarındadır. Ümumiyyətlə bu qədər cərəyan çəkməyəcək, lakin telefon danışıqları zamanı 216mA və ya şəbəkə ötürülməsi zamanı 80mA tələb edə bilər. Məlumat cədvəlində bu gözlənilən sərfiyyatlar ümumiləşdirilmişdir:

ModlarıTezlikCari sərfiyyat
Sönülü halda (Power down)60 uA
Yuxu rejimi1 mA
Gözləmə18 mA
Zəng zamanıGSM850199 mA
EGSM900216 mA
DCS1800146 mA
PCS1900131 mA
GPRS453 mA
Transmission burst2 A

SIM800L modulu gərginlik tənzimləyicisi ilə gəlmədiyi üçün 3.4V – 4.4V (İdeal 4.1V) arasındakı gərginliyə tənzimlənmiş xarici enerji mənbəyi tələb olunur. Enerji mənbəyi də 2A (və daha çox) cərəyan şiddətini təmin etməlidir, əks halda modul sönməyə davam edəcəkdir.

GSM modulunuzu düzgün şəkildə enerji ilə təmin etmək üçün düşünə biləcəyiniz bəzi seçimlər.

Li-Po batareyaları ilə əlaqəli ən yaxşı şeylərdən biri, gərginliyinin ümumiyyətlə 3.7V – 4.2V aralığında olması, SIM800L modulu üçün mükəmməldir. Hər hansı 1200mAh və ya daha böyük ölçülü Lityum ion / polimer batareyası yaxşıdır, çünki 2 Amp sıçrayış zamanı da düzgün gərginlik aralığını təmin edə bilər.

1200mAh LiPo Battery

DC-DC Buck çeviricisi

LM2596 kimi hər hansı bir 2A-nominal DC-DC buck çeviricisi işləyə bilər. Bunlar LM317 və ya LM338 kimi bir xətti gərginlik tənzimləyicisindən çox daha effektivdir.

LM2596 DC-DC Buck Converter

Xəbərdarlıq:

VCC-dən əvvəl GND-nin bağlantısını kəsməməyə və həmişə VCC-dən əvvəl GND-ni bağlamağa çox diqqətli olmalısınız. Əks təqdirdə modul aşağı gərginlikli serial pinləri torpaq kimi istifadə edə bilər və dərhal sıradan çıxa bilər.

SIM800L GSM Modul Çıxışları

SIM800L modulu xarici cihazlarla əlaqələndirən cəmi 12 pinə malikdir. Əlaqələr aşağıdakı kimidir:

SIM800L GSM Module Pinout

NET, modulla birlikdə verilmiş Helical Antenanı lehimləyə biləcəyiniz bir pindir.

VCC modul üçün enerji verir. Bu, 3.4V – 4.4 volt arasında ola bilər. Pini 5V-a birləşdirdiyiniz zaman modulunuzun sıradan çıxacağını unutmayın. 3.3 V-da isə işləmir! Li-Po batareyası və ya 3.7V 2A qiymətləndirilən DC-DC buck çeviriciləri kimi xarici bir enerji mənbəyi ilə işləyəcəkdir.

RST (Sıfırla) elektronik bir sıfırlama pinidir. Modulu tamamilə pis bir məkanda saxlamısınızsa, elektronik bir sıfırlama üçün bu pini 100 ms aşağı çəkin(GND-a birləşdirin).

RxD (Alıcı) pin serial rabitə (serial communication) üçün istifadə olunur.

TxD (Transmitter) pimi serial rabitə üçün istifadə olunur.

GND Torpaq Pinidir və Arduino üzərindəki GND pinlə əlaqələndirilməlidir.

RING pini bir Ring Göstərici kimi fəaliyyət göstərir. Əsasən moduldan çıxarılan ‘kəsmə’ (‘interrupt’) pinidir. Default olaraq yüksəkdir (HİGH) və bir zəng qəbul edildikdə 120 ms aşağı çəkiləcəkdir (LOW). Bir SMS alındıqda pulse etmək üçün də konfiqurasiya edilə bilər.

DTR pimi yuxu rejimini aktivləşdirir / deaktiv edir. HİGH çəkmək modulu yuxu rejiminə gətirəcək və serial rabitəni dayandıracaqdır. LOW çəkmək modulu oyadacaqdır.

MIC ± diferensial mikrofon girişidir. İki mikrofon pini birbaşa bu pinə qoşula bilər.

SPK ± diferensial bir dinamik interfeysidir. Bir dinamikin iki pini birbaşa bu iki pinə bağlana bilər.

Naqilləmə- SIM800L GSM modulunun Arduino UNO-ya qoşulması

Artıq modul haqqında hər şeyi bildiyimiz üçün Arduino-ya bağlamağa başlaya bilərik!

Anteni lehimləyərək / birləşdirərək başlayın, tam aktiv Mikro SIM kartı yuvaya daxil edin. İndi moduldakı Tx pinini Arduinodakı rəqəmsal pin # 3-ə qoşun, çünki modulla danışmaq üçün proqram serialından (software serial) istifadə edəcəyik.

Arduino Uno 5V GPIO istifadə edərkən, SIM800L modulu 3.3V səviyyəli məntiqdən istifadə edir və 5V-ə dözümlü olmadığı üçün moduldakı Rx pinini birbaşa Arduinonun rəqəmsal pininə bağlaya bilmərik. Bu, Arduino Uno-dan gələn Tx siqnalının SIM800L moduluna zərər verməmək üçün 3.3V-ə endirilməli olduğunu bildirir. Bunu etmək üçün bir neçə yol var, lakin ən asan yol sadə bir müqavimət bölücüdən istifadə etməkdir. SIM800L Rx və Arduino D2 arasında 10K və SIM800L Rx və GND arasında 20K müqavimət yaxşı iş verəcəkdir.

İndi modul üçün enerji təchizatında istifadə olunan pinlərdə qaldıq. Modulu çalışdırmaq üçün çox seçiminiz olduğundan, iki nümunə sxem təqdim etdik. Biri 1200mAh Li-Po batareyadan, digəri LM2596 DC-DC buck çeviricisindən istifadə edir.

Arduino Wiring Fritzing Connections with SIM800L GSM GPRS Module & 3.7V LiPo Battery
Arduino UNO ilə SIM800L GSM GPRS Modulunun birləşməsi
Arduino Wiring Fritzing Connections with SIM800L GSM GPRS Module & LM2596
Arduino UNO ilə SIM800L GSM GPRS Modulunun birləşməsi

İpucu

Modulu çalışdırmaq üçün LM2596 buck konvertorundan istifadə etdiyiniz halda, dövrədəki bütün GND-ları ümumi istifadə etməyi unutmayın.

Hər şeyi bağladıqdan sonra davam etməyə hazırsınız!

Arduino Kodu – AT Əmrlərində Test

AT əmrlərini göndərmək və SIM800L modulu ilə əlaqə qurmaq üçün serial monitordan istifadə edəcəyik. Aşağıdakı eskiz kod Arduinonun serial monitorda SIM800L modulu ilə əlaqə qurmasına imkan verəcəkdir. Kodun ətraflı izahına başlamazdan əvvəl Arduino-nuzu PC-yə qoşun, aşağıdakı kodu tərtib edin və Arduinoya yükləyin.

Serial monitoru açdıqdan sonra ‘Both NL & CRseçiminin seçildiyinə əmin olun!

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing...");
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Koda bir SoftwareSerial.h kitabxanasını daxil edərək onu SIM800L modulunun Tx və Rx-in bağlı olduğu Arduino pinləri ilə işə salmaqla başlayırıq.

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

Quraşdırma funksiyasında: Arduino, Arduino IDE və SIM800L modulu arasındakı serial rabitə bağlantısını 9600 baud nisbətində başlatırıq.

//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

İndi əsas bir əlaqə qurduğumuzdan, AT əmrlərini göndərərək SIM800L modulu ilə əlaqə qurmağa çalışacağıq.

AT – Ən əsas AT əmridir. Həm də Auto-baud’er-i işə salır. Əgər işləyirsə, AT simvollarının geri verdiyini və sonra Tamam (OK) olduğunu, sizə hərşeyin yaxşı olduğunu və sizi düzgün başa düşdüyünü görəcəkəsiniz. Daha sonra modula soruşmaq və bu barədə məlumat almaq üçün bəzi əmrlər göndərə bilərsiniz

AT + CSQ – ‘Siqnal gücünü’ yoxlayın – ilk # dB gücdür, 5-dən daha yüksək olmalıdır. Yüksək daha yaxşıdır. Əlbətdə ki, anteninizə və yerinizə bağlıdır!

AT + CCID – SİM kart nömrəsini alın – SİM kartın düzgün yerləşdiyini və nömrənin karta yazıldığını təsdiq edə biləcəyinizi test edin.

AT+CREG? Şəbəkədə qeydiyyatdan keçdiyinizi yoxlayın. İkinci # 1 və ya 5 olmalıdır. 1 ev şəbəkəsinə qeydiyyatdan keçdiyinizi və 5 rouminq şəbəkəsini göstərir. Bu iki rəqəmdən başqa heç bir şəbəkədə qeydiyyatdan keçmədiyinizi göstərir.

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();

Kodun loop hissəsində serial monitordan hər hansı bir giriş üçün fasiləsiz olaraq gözləyən və D2 pini (Rx modulu) vasitəsilə SIM800L moduluna göndərən updateSerial () adlı xüsusi funksiyanı çağırırıq. SIM800L modulunun hər hansı bir cavabı varsa, D3 pinini (Tx modulu) daima oxuyur.

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Serial monitorda aşağıdakı çıxışı görməlisiniz.

SIM800L GSM Module Basic AT Commands on Arduino
SIM800L GSM Modulunda Əsas AT Əmrləri

Şəbəkə bağlantısı və batareyanın vəziyyəti haqqında daha çox məlumat verən aşağıdakı əmrləri aşağıdakı kimi serial monitor vasitəsilə göndərməkdə sərbəstsiniz:

ATI – Modul adını və versiyasını əldə edin

AT+COPS? – Şəbəkə ilə əlaqəli olduğunuzu yoxlayın, bu halda BSNL

AT+COPS=? – Şəbəkədə mövcud olan operatorların siyahısına baxın.

AT+CBC – lipo batareyasının vəziyyətini qaytaracaq. İkinci nömrə% -lə doludur (bu halda onun 93% -i), üçüncü rəqəm isə mV-dəki həqiqi gərginlikdir (bu vəziyyətdə 3.877 V)

SIM800L GSM Module Network Connection AT Commands on Arduino
Şəbəkə Bağlantısı AT SIM800L GSM Modulunda Əmrlər

Arduino Kodu – SMS göndərilməsi

Gəlin maraqlı şeylərə keçək. Arduinomuzu istədiyiniz telefon nömrəsinə SMS göndərmək üçün proqramlaşdıraq. Eskizləri sınamadan əvvəl telefon nömrəsini daxil etməlisiniz. ZZxxxxxxxxxx sətrini axtarın və ZZ-i ölkə kodu ilə, xxxxxxxxxxx isə 7 rəqəmli telefon nömrəsini isə ilə əvəz edin.

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();

  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CMGS=\"+ZZxxxxxxxxxx\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("Last Minute Engineers | lastminuteengineers.com"); //text content
  updateSerial();
  mySerial.write(26);
}

void loop()
{
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Eskiz aşağıda kod parçası xaricində əvvəlki ilə demək olar ki eynidır. Bağlantı qurulduqdan sonra AT əmrlərini aşağıya göndəririk:

AT+CMGF=1 – SMS mesaj formatını mətn olaraq seçir. Default format Protokol Vahididir (Protocol Data Unit (PDU)

AT+CMGS=+ZZxxxxxxxxxx – Göstərilən telefon nömrəsinə SMS göndərir. Girilən mətn mesajı və ardından ‘Ctrl + z’ işarəsi SMS olaraq qəbul edilir. ‘Ctrl + z’ əslində ASCII cədvəlində ‘əvəz’ olaraq xarakterizə olunan 26-cı çap xarakteri daşıyır. Beləliklə, bir mesaj göndərdikdən sonra 26DEC (1AHEX) göndərməliyik.

  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CMGS=\"+ZZxxxxxxxxxx\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("Last Minute Engineers | lastminuteengineers.com"); //text content
  updateSerial();
  mySerial.write(26);

Yalnız bir dəfə SMS göndərmək istədiyimiz üçün döngü boş qalır. Bir daha SMS göndərmək istəyirsinizsə, Arduino cihazınızdakı RESET düyməsini vurmanız kifayətdir. Ekran görüntüsünün altında SIM800L GSM modulundan göndərilən SMS göstərilir.

SIM800L GSM Module AT Commands for Sending SMS on Arduino
Sending SMS through SIM800L GSM Module

Arduino Kodu – SMS oxumaq

İndi gələn mesajları oxumaq üçün Arduinomuzu proqramlaşdıraq. Bu eskiz, müəyyən bir SMS alındıqda bir əməliyyatı başlatmanız lazım olduqda çox faydalıdır. Məsələn, Arduinoya bir SMS gəldikdə, bir releni açmağı və ya söndürməsini əmr edə bilərsiniz. İdeya çoxdur!

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  
  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled
  updateSerial();
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Eskiz aşağıda göstərilən kod parçası xaricində əvvəlki kimidir. Bağlantı qurulduqdan sonra AT əmrlərini aşağıya göndəririk:

AT+CMGF=1 – SMS mesaj formatını mətn olaraq seçir. Default format Protocol Data Unit (PDU) -dır.

AT+CNMI=1,2,0,0,0 – yeni gələn SMS mesajlarının necə idarə olunmalı olduğunu müəyyənləşdirir. Bu şəkildə SIM800L moduluna ya yeni gələn SMS mesajlarını birbaşa PC-yə göndərməsini, ya da mesaj anbarında saxlamasını və daha sonra PC-yə mesaj saxlama yerləri barədə məlumat verməsini söyləyə bilərsiniz.

Its response starts with +CMT: All the fields in the response are comma-separated with first field being phone number. The second field is the name of person sending SMS. Third field is a timestamp while forth field is the actual message.

Cavabı + CMT ilə başlayır: Cavabdakı bütün sahələr vergüllə ayrılır və birinci sahə telefon nömrəsidir. İkinci sahə SMS göndərən şəxsin adıdır. Üçüncü sahə zaman bölgüsü , dördüncü sahə isə faktiki mesajdır.

  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled
  updateSerial();

Diqqət yetirin ki, bu dəfə yeni gələn SMS mesajları üçün sorğu keçirdiyimiz üçün loop funksiyasını boş saxlamadıq. SMS-i SIM800L GSM moduluna göndərdikdən sonra serial monitorda aşağıda göstəriciləri görəcəksiniz.

Reading SMS through SIM800L GSM Module
SIM800L GSM Module AT Commands for Reading SMS on Arduino

Arduino SoftwareSerial Buffer Ölçüsünün Genişləndirilməsi

Mesajınız bizimki kimi kifayət qədər uzundursa, ehtimal ki, bəzi itkin simvollarla alacaqsınız. Bu səhv bir kod səbəbindən deyil. SoftwareSerial qəbul bufferiniz doldu və simvol atılır. Bufferdən kifayət qədər sürətli oxumursan.

Bunun ən sadə həlli, SoftwareSerial bufferinin ölçüsünü 64 bayt olan standart ölçüsündən 256 bayta (və ya sizin üçün uyğun olan işə görə daha kiçik) qədər artırmaqdır.

Windows PC-də C:\Program Files (x86) -> Arduino -> hardware -> Arduino -> avr -> libraries -> SoftwareSerial (-> Arduino IDE-nin yeni versiyası üçün src) gedin , SoftwareSerial.h açın və xətti dəyişdirin:

// RX buffer size
#define _SS_MAX_RX_BUFF 64

-dən

// RX buffer size
#define _SS_MAX_RX_BUFF 256

Faylı yadda saxlayın və eskizinizi(sketch) yenidən yoxlayın.

Expanding Arduino SoftwareSerial Buffer Size
Arduino SoftwareSerial Buffer Ölçüsünün Genişləndirilməsi

Arduino Kodu – Zəng Edin

İndi zəng etmək üçün Arduinomuzu proqramlaşdıraq. Bu eskiz Arduino-nun tepmeraturun qeydə alması və ya kimsə evinizə girməsi kimi təcili vəziyyətlərdə bir SOS / çətinlik çağırışı etməsini istədiyiniz zaman çox faydalıdır. İdeya çoxdur!

Eskizləri sınamadan əvvəl telefon nömrəsini daxil etməlisiniz. ZZxxxxxxxxxx sətrini axtarın və ZZ-i ölkə kodu ilə, xxxxxxxxxxx isə 7 rəqəmli telefon nömrəsi ilə əvəz edin.

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, i t will back to OK
  updateSerial();
  
  mySerial.println("ATD+ +ZZxxxxxxxxxx;"); //  change ZZ with country code and xxxxxxxxxxx with phone number to dial
  updateSerial();
  delay(20000); // wait for 20 seconds...
  mySerial.println("ATH"); //hang up
  updateSerial();
}

void loop()
{
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Zəng etmək üçün aşağıdakı AT əmrlərindən istifadə olunur:

ATD+ +ZZxxxxxxxxxx; – Müəyyən edilmiş nömrəni yığır. Sonda nöqtəli vergül (;) dəyişdirici, birdən çox yığım əmrlərinə ayırır.(The semicolon (;) modifier at the end separates the dial string into multiple dial commands.) Son əmrdən başqa hamısı nöqtəli vergül (;) dəyişdiricisi ilə bitməlidir.

ATH – Zəngi bitirir

  mySerial.println("ATD+ +ZZxxxxxxxxxx;"); //  change ZZ with country code and xxxxxxxxxxx with phone number to dial
  updateSerial();
  delay(20000); // wait for 20 seconds...
  mySerial.println("ATH"); //hang up
  updateSerial();

Ekran görüntüsünün altında SIM800L GSM modulundan edilən zəng göstərilir.

SIM800L GSM Module AT Commands for Making Call on Arduino
Calling through SIM800L GSM Module

Arduino Kodu – Çağırış (Zəng) Qəbulu

Zəng qəbul etmək üçün xüsusi bir kod tələb olunmur; sadəcə SIM800L modulunu dinləməyə davam etməlisən. Bununla birlikdə, müəyyən bir telefon nömrəsindən bir zəng alındıqda bir işi başlatmanız lazım olduqda, bu eskiz çox faydalı olar.

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing..."); 
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Gələn zəng adətən serial monitorda ‘RING’ ilə göstərilir, sonra telefon nömrəsi və zəng edən şəxsiyyət məlumatı verilir. Zəngi qəbul etmək / kəsmək üçün aşağıdakı AT əmrləri istifadə olunur:

ATA – Daxil olan zəngi qəbul edir.

ATH – Zəngi kəsir. Zəngi bağladıqda serialın monitoruna zəng qoşula bilmədiyini göstərən NO CARRIER göndərir.

Serial monitorda çıxışın altında SIM800L GSM modulu tərəfindən alınan zəng göstərilir.

Receiving Call on SIM800L GSM Module
SIM800L GSM Module AT Commands for Receiving Call on Arduino

Öyrədici yazının hazırlanmasında lastminuteengineers.com saytındakı bənzər məqalədən istifadə etmişəm.Mövzu ilə bağlı hər hansı sualınız varsa aşaöıda rəy bölməsində qeyd edə bilərsiniz.

Əlaqəli Məqalələr

0 0 səslər
Article Rating
Abunə ol
Xəbər ver
guest

0 Comments
Sətir içi geri bildirimlər
Bütün şərhlərə baxın
Həmçinin Bax
Close
Back to top button
0
Fikirlərinizi bilmək istərdik,lütfən şərh yazın.x