Modul GSM sa používa v mnohých komunikačných zariadeniach založených na technológii GSM (Global System for Mobile Communications). Používa sa na interakciu so sieťou GSM pomocou počítača. Modul GSM chápe iba príkazy AT a podľa toho môže reagovať. Najzákladnejším príkazom je „AT“, ak je GSM v poriadku, potom funguje dobre, inak reaguje „CHYBOU“. Existuje niekoľko príkazov AT, napríklad ATA na prijatie hovoru, ATD na vytočenie hovoru, AT + CMGR na prečítanie správy, AT + CMGS na odoslanie sms atď. Po príkazoch AT by mal nasledovať návrat vozíka, tj.), ako napríklad „AT + CMGS“. Pomocou týchto príkazov môžeme použiť GSM modul.
Rozhranie GSM s 8051
Namiesto použitia PC môžeme na interakciu s GSM modulom a LCD získať mikrokontroléry, aby sme dostali odpoveď z GSM modulu. Chystáme sa teda prepojiť GSM s mikrokontrolérom 8051 (AT89S52). Je veľmi jednoduché prepojiť GSM s 8051, stačí nám poslať AT príkazy z mikrokontroléra a prijať odpoveď z GSM a zobraziť ju na LCD. Na komunikáciu s GSM môžeme použiť sériový port mikrokontroléra, to znamená pomocou PIN 10 (RXD) a 11 (TXD).
Najprv musíme pripojiť LCD k 8051, tu sa to môžete naučiť: Rozhranie LCD s mikrokontrolérom 8051. Potom musíme pripojiť modul GSM k 8051, teraz by sme tu mali venovať určitú pozornosť. Najskôr je potrebné skontrolovať, či je váš modul GSM schopný pracovať s logikou TTL alebo či dokáže pracovať iba s portom RS232. V zásade, ak má váš modul na palube kolíky RX a TX (s GND), potom môže pracovať na logike TTL. A ak nemá žiadne piny RX, TX a iba port RS232 (sériový port s 9), musíte na pripojenie sériového portu k mikrokontroléru použiť modul MAX232 IC. V zásade MAX232slúži na prevod sériových údajov do logiky TTL, pretože mikrokontrolér môže pracovať iba na logike TTL. Ale ak má GSM modul RX, TX piny, potom nemusíte používať MAX232 ani žiadny sériový prevodník, môžete priamo pripojiť RX GSM k TX (PIN 11) 8051 a TX GSM k RX (PIN 10) 8051 V našom prípade som použil modul SIM900A a má piny RX, TX, takže som nepoužil MAX232.
Schéma zapojenia GSM s mikrokontrolérom AT89S52 je znázornená na obrázku vyššie. Teraz po pripojení stačí napísať program na odoslanie AT príkazov do GSM a jeho odpoveď dostať na LCD. Existuje mnoho príkazov AT, ako je popísané vyššie, ale naším predmetom tohto článku je iba prepojenie GSM s rozhraním 8051, takže pošleme iba príkaz „AT“ a za ním znak „\ r“ (0D v hexáne). Toto nám dá odpoveď „OK“. Tento program však môžete rozšíriť tak, aby využíval všetky možnosti GSM.
Vysvetlenie kódu
Okrem všetkých funkcií týkajúcich sa LCD sme tu použili aj sériový port a register časovača (TMOD). O funkciách LCD a ďalšom kóde sa môžete dozvedieť v našej 8051 sekcii projektov, kde vysvetľujem funkcie kódu súvisiace so sériovou komunikáciou:
Funkcia GSM_init ():
Táto funkcia sa používa na nastavenie prenosovej rýchlosti pre mikrokontrolér. Prenosová rýchlosť nie je nič iné ako vysielané alebo prijímané bity za sekundu. A musíme prispôsobiť prenosovú rýchlosť 8051 Baudovej rýchlosti GSM modulu, tj. 9600. Použili sme časovač 1 v režime 2 (8-bitový režim automatického načítania) nastavením TMOD registra na 0X20 a vyšší bajt časovača 1 (TH1) až 0XFD, aby sme dostali prenosovú rýchlosť 9600. Na nastavenie režimu sériovej komunikácie sa používa aj register SCON, použili sme režim 1 (8-bitový UART) s povoleným príjmom.
Funkcia GSM_write:
Na sériovú komunikáciu sa používa SBUF (register špeciálnych funkcií sériovej medzipamäte), kedykoľvek chceme poslať akýkoľvek bajt na sériové zariadenie, vložíme tento bajt do registra SBUF, keď sa pošle celý bajt, potom sa bit TI nastaví hardvérom. Musíme ho resetovať pre odoslanie ďalšieho bajtu. Je to príznak, ktorý označuje, že bajt bol úspešne odoslaný. TI je druhý bit registra SCON. Pomocou tejto funkcie sme odoslali „AT“.
Funkcia GSM_read:
Rovnako ako pri odosielaní, kedykoľvek dostaneme akýkoľvek bajt z externého zariadenia, ktorý je vložený do registra SBUF, stačí si ho prečítať. A kedykoľvek je prijatý celý bajt, RI bit je nastavený hardvérom. Musíme ho resetovať pre príjem ďalšieho bytu. RI je prvý bit registra SCON. Pomocou tejto funkcie sme prečítali odpoveď „OK“.