- Mga Materyal na Kinakailangan:
- Module ng GSM:
- Nakikipag-usap sa module ng GSM gamit ang mga utos ng AT:
- Diagram ng Circuit:
- Programming ka ng PIC Microcontroller:
- Simulation:
- Pagtawag at pagtanggap ng mga tawag gamit ang GSM at PIC:
Ang mga module ng GSM ay kamangha-manghang gamitin lalo na kung ang aming proyekto ay nangangailangan ng malayuang pag-access. Ang mga modyul na ito ay maaaring gumawa ng lahat ng mga pagkilos na magagawa ng aming normal na mobile phone, tulad ng pagtawag / pagtanggap ng isang tawag, pagpapadala / pagtanggap ng isang SMS, pagkonekta sa internet gamit ang GPRS atbp Maaari mo ring ikonekta ang isang normal na mikropono at speaker sa modyul na ito at makipag-usap sa iyong mga tawag sa mobile. Bubuksan nito ang mga pintuan sa maraming mga malikhaing proyekto kung maaari itong ma-interfaced sa isang Microcontroller. Samakatuwid sa tutorial na ito matututunan natin kung paano namin ma- Interface ang module ng GSM (SIM900A) sa aming PIC microcontroller at ipapakita ito sa pamamagitan ng pagtanggap at pagtanggap gamit ang GSM Module. Nauna namin itong nakipag-ugnayan sa Arduino at Raspberry Pi para sa pagtawag at pagmemensahe:
- Tumawag at Mensahe gamit ang Arduino at GSM Module
- Tumawag at Mag-text gamit ang Raspberry Pi at GSM Module
Mga Materyal na Kinakailangan:
- PIC Microcontroller (PIC16F877A)
- Module ng GSM (SIM900 o anumang iba pa)
- Mga kumokonekta na mga wire
- 12V Adapter
- PicKit 3
Module ng GSM:
Ang module na GSM ay maaaring magamit kahit na walang anumang microcontroller sa pamamagitan ng paggamit ng AT mode na pang-utos. Tulad ng ipinakita sa itaas ang module ng GSM ay may isang USART adapter na maaaring direktang ma-interfaced sa computer sa pamamagitan ng paggamit ng isang MAX232 module o ang mga Tx at Rx pin ay maaaring magamit upang ikonekta ito sa isang Microcontroller. Maaari mo ring mapansin ang iba pang mga pin tulad ng MIC +, MIC-, SP +, SP- atbp kung saan maaaring makakonekta ang isang mikropono o isang Speaker. Ang module ay maaaring pinalakas ng isang 12V adapter sa pamamagitan ng isang normal na DC barrel jack.
Ipasok ang iyong SIM card sa puwang ng modyul at paganahin ito, dapat mong mapansin ang isang LED na kuryente na papatuloy. Ngayon maghintay para sa isang minuto o higit pa, at dapat mong makita ang isang pula (o anumang iba pang kulay) LED Flashing isang beses sa bawat 3 segundo. Nangangahulugan ito na ang iyong Modyul ay may kakayahang magtaguyod ng koneksyon sa iyong SIM card. Ngayon ay maaari kang magpatuloy sa pagkonekta sa iyo ng module sa Telepono o anumang Microcontroller.
Nakikipag-usap sa module ng GSM gamit ang mga utos ng AT:
Tulad ng maaaring nahulaan mo ito, ang module ng GSM ay maaaring makipag-usap sa pamamagitan ng Serial na komunikasyon at maiintindihan lamang ang isang wika at iyon ay " AT utos ". Anuman na maaari mong sabihin o hilingin sa module ng GSM dapat lamang ito sa pamamagitan ng mga utos ng AT. Halimbawa kung nais mong malaman kung ang iyong module ay aktibo. Dapat kang magtanong (magpadala) ng isang utos tulad ng "AT" at ang iyong module ay sasagot ng "OK".
Ang mga utos na AT ay mahusay na ipinaliwanag sa kanyang sheet ng data at maaaring matagpuan dito sa kanyang opisyal na datasheet. Sige! Sige! Ito ay isang 271 pahina ng datasheet at maaari kang tumagal ng ilang araw upang basahin ang mga ito. Kaya't nagbigay ako ng ilang pinakamahalagang utos ng AT sa ibaba para sa iyo upang maitaas ito at tumakbo kaagad.
AT |
Tumutugon sa OK para sa Pagkilala |
SA + CPIN? |
Suriin ang Marka ng signal |
SA + COPS? |
Humanap ng pangalan ng service provider |
ATD96XXXXXXXX; |
Tumawag sa tukoy na numero, nagtatapos sa semi-colon |
SA + CNUM |
Hanapin ang bilang ng SIM card (maaaring hindi gumana para sa ilang SIM) |
ATA |
Sagutin ang Papasok na Tawag |
ATH |
I-hang off ang kasalukuyang papasok na tawag |
SA + COLP |
Ipakita ang papasok na numero ng tawag |
AT + VTS = (number) |
Magpadala ng numero ng DTMF. Maaari mong gamitin ang anumang numero sa iyong mobile keypad para sa (numero) |
SA + CMGR |
AT + CMGR = 1 nagbabasa ng mensahe sa unang posisyon |
SA + CMGD = 1 |
Tanggalin ang mensahe sa unang posisyon |
SA + CMGDA = "TANGGALING LAHAT" |
Tanggalin ang Lahat ng mga mensahe mula sa SIM |
SA + CMGL = "LAHAT" |
Basahin ang lahat ng mensahe mula sa SIM |
SA + CMGF = 1 |
Itakda ang pagsasaayos ng SMS. Ang "1" ay para sa mode na teksto lamang |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Nagpapadala ng SMS sa isang partikular na numero dito 968837XXXX. Kapag nakita mo ang ">" simulang ipasok ang teksto. Pindutin ang Ctrl + Z upang maipadala ang teksto. |
SA + CGATT? |
Upang suriin ang koneksyon sa internet sa SIM card |
SA + CIPSHUT |
Upang isara ang koneksyon sa TCP, nangangahulugang idiskonekta ang form na internet |
AT + CSTT = "APN", "username", "Pass" |
Kumonekta sa GPRS gamit ang iyong APN at Pass key. Maaaring makuha mula sa Network Provider. |
SA + CIICR |
Suriin kung ang data card ay ang SIM card |
SA + CIFSR |
Kumuha ng IP ng network ng SIM |
SA + CIPSTART = "TCP", "SERVER IP", "PORT" |
Ginamit upang magtakda ng isang koneksyon sa TCP IP |
SA + CIPSEND |
Ginagamit ang utos na ito upang magpadala ng data sa server |
Diagram ng Circuit:
Ang diagram ng koneksyon para sa Interfacing GSM module na may PIC microcontroller ay ipinapakita sa ibaba.
Pasimpleng interface namin ang mga Tx at Rx na pin ng module ng GSM gamit ang mga Rx at Tx na pin ng PIC MCU PIC16F877A ayon sa pagkakabanggit. Ito ay magtataguyod ng isang Serial na koneksyon sa pagitan ng pareho. Gayundin, sa gayon huwag kalimutan na magkaugnay sa parehong module ng GSM at PIC. Gumamit din kami ng isang LCD display upang malaman ang katayuan ng aming module na GSM. Kapag tapos na ang mga koneksyon ang iyong hardware ay magiging hitsura ng isang bagay sa ibaba.
Ang PIC Perf board ay ginawa para sa aming serye ng pagtuturo ng PIC, kung saan natutunan namin kung paano gamitin ang PIC microcontroller. Maaaring gusto mong bumalik sa mga tutorial ng PIC Microcontroller gamit ang MPLABX at XC8 kung hindi mo alam kung paano sunugin ang isang programa gamit ang Pickit 3, dahil lalaktawan ko ang lahat ng pangunahing impormasyon.
Programming ka ng PIC Microcontroller:
Ang kumpletong programa para sa proyektong ito ay matatagpuan sa ilalim ng tutorial na ito. Dito ko ipapaliwanag ang ilang mahahalagang pagpapaandar at piraso ng code. Ang program na ito ay mayroon ding mga LCD code na nagmula sa Interfacing LCD na may PIC Microcontroller, maaari mong bisitahin ang tutorial na iyon kung gusto mong malaman kung paano magagamit ang LCD sa PIC microcontroller.
Tulad ng sinabi kanina, makikipag-usap kami sa pagitan ng PIC at GSM gamit ang mga utos ng AT sa pamamagitan ng Serial mode ng komunikasyon. Kaya, kailangan muna nating simulan ang module ng komunikasyon ng USART sa aming PIC microcontroller sa pamamagitan ng paggamit ng Initialize _SIM900 (); pagpapaandar Sa loob ng pagpapaandar na ito idineklara namin ang mga Tx at RX na pin at pinasimulan ang Asynchronous na pagtanggap at paghahatid sa 9600 baud rate at 8-bit mode.
// *** Inisyal ang UART para sa SIM900 ** // void Initialize_SIM900 (void) {// **** Ang pagtatakda ng I / O pin para sa UART **** // TRISC6 = 0; // TX Pin itinakda bilang output TRISC7 = 1; // RX Pin set as input // ________ I / O pins set __________ // / ** Pasimulan ang rehistro ng SPBRG para sa kinakailangang rate ng baud at itakda ang BRGH para sa mabilis na baud_rate ** / SPBRG = 129; // SIM900 nagpapatakbo sa 9600 Baud rate kaya 129 BRGH = 1; // for high baud_rate // _________ End of baud_rate setting _________ // // **** Paganahin ang Asynchronous serial port ******* // SYNC = 0; // Asynchronous SPEN = 1; // Paganahin ang mga serial port pin // _____ Hindi pinagana ang serial port na _______ // // ** Hinahanda para sa paghahatid at pagtanggap ** // TXEN = 1; // paganahin ang paghahatid CREN = 1; // paganahin ang pagtanggap // __ UART module up at handa na para sa paghahatid at pagtanggap __ // // ** Piliin ang 8-bit mode ** // TX9 = 0; // 8-bit na pagtanggap na napili RX9 = 0;// 8-bit na mode ng pagtanggap na napili // __ Napili ang mode na 8-bit __ //} // ________ UART module Inisyalisado __________ //
Ngayon kailangan naming basahin at isulat ang impormasyon mula sa / patungo sa aming module ng GSM. Para sa mga ito ginagamit namin ang mga pag-andar _SIM900_putch (), _SIM900_getch (), _SIM900_send_string (), _SIM900_print (). Ang mga pagpapaandar na ito ay gumagamit ng Transmit at tumatanggap ng rehistro ng buffer tulad ng TXREG at RCREG upang basahin o isulat ang data nang seryal.
// ** Function to send one byte of date to UART ** // void _SIM900_putch (char bt) {habang (! TXIF); // hawakan ang programa hanggang sa ang buffer ng TX ay libre TXREG = bt; // Load ang transmitter buffer na may natanggap na halaga} // _____________ Katapusan ng pag-andar ________________ // // ** Function upang makakuha ng isang byte ng petsa mula sa UART ** // char _SIM900_getch () {if (OERR) // check for Error { CREN = 0; // If error -> I-reset ang CREN = 1; // Kung error -> I-reset} habang (! RCIF); // hawakan ang programa hanggang sa ang RX buffer ay libreng pagbalik RCREG; // tanggapin ang halaga at ipadala ito sa pangunahing pagpapaandar} // _____________ Pagtatapos ng pag-andar ________________ // // ** Function upang i-convert ang string sa byte ** // void SIM900_send_string (char * st_pt) {habang (* st_pt) // kung doon ay isang char _SIM900_putch (* st_pt ++);// iproseso ito bilang isang byte data} // ___________ Pagtatapos ng pag-andar ______________ // // ** Pagtatapos ng binagong Mga Code ** // void _SIM900_print (unsigned Const char * ptr) {habang (* ptr! = 0) {_SIM900_putch (* ptr ++); }
Ang mga pag-andar sa itaas ay unibersal at hindi kailangang baguhin para sa anumang mga application. Ipinaliwanag lamang sila upang magbigay ng isang magaspang na intro. Maaari kang sumisid nang malalim sa kanila kung nais mo sa pamamagitan ng pag-unawa.
Ngayon sa loob ng aming pangunahing pag-andar, pinasimulan namin ang koneksyon ng USART at suriin kung makakatanggap kami ng isang "OK" kapag nagpadala kami ng "AT" sa pamamagitan ng paggamit ng linya sa ibaba ng code
gawin ang {Lcd_Set_Cursor (2,1); Lcd_Print_String ("Hindi nahanap ang module"); } habang (! SIM900_isStarted ()); // maghintay hanggang sa maibalik ng GSM ang "OK" Lcd_Set_Cursor (2,1); Lcd_Print_String ("Nakita ang Modyul"); __delay_ms (1500);
Ang pagpapaandar na SIM900_isStarted (); magpapadala ng "AT" sa GSM at naghihintay ng tugon na "OK" mula rito. Kung oo, ibabalik nito ang 1 pa 0;
Kung ang module ay hindi napansin o kung mayroong anumang problema sa koneksyon pagkatapos ay ipapakita ng LCD ang "Module not found", kung hindi ay ipapakita nito ang Module na napansin at magpatuloy sa susunod na hakbang kung saan, suriin namin kung ang SIM card ay maaaring makita sa ibaba linya ng code.
/ * Suriin kung ang SIM card ay napansin * / gawin ang {Lcd_Set_Cursor (2,1); Lcd_Print_String ("Hindi nahanap ang SIM"); } habang (! SIM900_isReady ()); // maghintay hanggang sa maibalik ng GSM ang "+ CPIN: HANDA" Lcd_Set_Cursor (2,1); Lcd_Print_String ("Nakita ang SIM"); __delay_ms (1500);
Ang pagpapaandar na SIM900_isReady () ay magpapadala ng “AT + CPIN?” sa GSM at hinihintay ang tugon na “+ CPIN: HANDA” mula rito. Kung oo, ibabalik nito ang 1 pa 0;
Kung ang isang SIM card kung natagpuan makakakuha kami ng napansin na SIM na ipinakita sa LCD. Pagkatapos, maaari nating subukang tumawag sa pamamagitan ng paggamit ng utos na “ ATD mobilenumber ; ". Dito bilang isang halimbawa ginamit ko ang aking numero bilang ATD93643159XX;. Kailangan mong palitan ang iyong kaukulang numero ng mobile doon.
/ * Maglagay ng isang Tawag sa Telepono * / gawin {_SIM900_print ("ATD93643XXXXX; \ r \ n"); // Narito kami ay tumatawag sa isang numero 93643XXXXX Lcd_Set_Cursor (1,1); Lcd_Print_String ("Paglalagay ng Tawag…."); } habang (_SIM900_waitResponse ()! = SIM900_OK); // maghintay hanggang maibalik ng ESP ang "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("Placed Call…."); __delay_ms (1500);
Sa sandaling mailagay ang tawag ay ipapakita ng LCD ang Call Placed at dapat kang makatanggap ng isang papasok na tawag sa tinukoy na numero.
Maaari ka ring tumawag sa numero ng mobile na konektado sa module ng GSM at maabisuhan tungkol dito sa iyong LCD screen y gamit ang code sa ibaba
habang (1) {kung (_SIM900_waitResponse () == SIM900_RING) // Suriin kung may papasok na tawag na {Lcd_Set_Cursor (2,1); Lcd_Print_String ("Papasok na Tawag !!."); }}
Kapag nakita ng module ng GSM ang isang papasok na tawag ay ipapakita nito ang Papasok na tawag sa pangalawang linya ng LCD module. Ang pagpapaandar _SIM900_waitResponse () ay susuriin para sa papasok na data mula sa module ng GSM. Kapag nakatanggap ito ng SIM900_RING, na katumbas ng "RING" dahil sa waitResponce () , ipapakita namin ang katayuang "Papasok na tawag".
Maaari kang lumikha ng iyong sariling mga pag-andar tulad nito upang maisagawa ang halos lahat ng mga uri ng mga aktibo gamit ang module na GSM. Kung nais mong magkaroon ng mga bagay na hardcoded, maaari mo lamang gamitin ang function na __SIM900_print () upang magpadala ng anumang utos ng AT tulad nito sa ibaba.
_SIM900_print ("AT + CPIN? \ R \ n");
Tandaan na ang lahat ng iyong utos ay dapat sundin ng "\ r \ n" upang ipahiwatig na ang utos ay nagtatapos.
Simulation:
Kapag naintindihan mo kung paano gumagana ang programa maaari mong subukang gayahin at gumawa ng mga pagbabago upang umangkop sa iyong mga pangangailangan. Ang simulasyon ay makatipid sa iyo ng maraming oras. Ang simulation ay tapos na gamit ang Proteus at mukhang sa ibaba.
Tulad ng nakikita mong ginamit namin ang pagpipilian ng virtual terminal sa Proteus upang suriin kung ang Program ay tumutugon tulad ng inaasahan. Maaari naming pakainin ang mga halaga sa pamamagitan ng pop-up dialog box. Halimbawa sa sandaling na-hit run kami, isang itim na kahon ng dayalogo tulad ng nasa itaas ay lilitaw at ipapakita sa AT, nangangahulugan ito na ipinadala nito ang module na GSM na AT, ngayon maaari kaming tumugon sa PIC sa pamamagitan ng pag-type sa kahon bilang "OK" at pindutin ang enter at tutugon dito ang PIC. Katulad nito maaari naming subukan para sa lahat ng utos ng AT.
Pagtawag at pagtanggap ng mga tawag gamit ang GSM at PIC:
Kapag naintindihan mo kung paano gumagana ang code at hardware, i-upload lamang ang program sa ibaba sa PIC at kapangyarihan sa module. Dapat ipakita ng iyong LCD ang "Module Detected", "SIM napansin" at "call Placed" kung ang lahat ay gumagana nang maayos. Kapag nakita mo ang "Nailagay ang tawag" makakakuha ka ng isang papasok na tawag sa numero na tinukoy sa programa.
Maaari mo ring subukang tumawag sa bilang na naroroon sa module ng GSM at ipapakita ng iyong LCD ang "Papasok na tawag" upang ipahiwatig na tinawag ang SIM.
Ang kumpletong pagtatrabaho ng proyekto ay ipinapakita sa video sa ibaba. Inaasahan kong naintindihan mo ang proyekto at nasiyahan sa paggawa nito. Kung mayroon kang anumang problema sa pagkuha ng mga bagay na gumagana, i-post ang iyong katanungan sa seksyon ng komento o sa aming Mga Forum at nalulugod akong tulungan ka.