Moduł GSM jest stosowany w wielu urządzeniach komunikacyjnych opartych na technologii GSM (Global System for Mobile Communications). Służy do interakcji z siecią GSM za pomocą komputera. Moduł GSM rozumie tylko polecenia AT i może odpowiednio reagować. Najbardziej podstawowym poleceniem jest „AT”, jeśli GSM odpowiada OK, to działa dobrze, w przeciwnym razie odpowiada „ERROR”. Istnieją różne polecenia AT, takie jak ATA do odbierania połączeń, ATD do wybierania połączenia, AT + CMGR do odczytywania wiadomości, AT + CMGS do wysyłania smsów itp. Po poleceniach AT powinien następować powrót karetki tj. \ R (0D w zapisie szesnastkowym), na przykład „AT + CMGS \ r”. Za pomocą tych poleceń możemy użyć modułu GSM.
Interfejs GSM z 8051
Zamiast korzystać z komputera PC, możemy wykorzystać mikrokontrolery do interakcji z modułem GSM i wyświetlaczem LCD w celu uzyskania odpowiedzi z modułu GSM. Więc zamierzamy połączyć GSM z mikrokontrolerem 8051 (AT89S52). Połączenie GSM z 8051 jest bardzo łatwe, wystarczy wysłać komendy AT z mikrokontrolera i otrzymać odpowiedź z GSM i wyświetlić ją na LCD. Do komunikacji z GSM możemy wykorzystać port szeregowy mikrokontrolera czyli PIN 10 (RXD) i 11 (TXD).
Najpierw musimy podłączyć LCD do 8051, możesz się tego nauczyć tutaj: Połączenie LCD z mikrokontrolerem 8051. Następnie musimy podłączyć moduł GSM do 8051, teraz tutaj powinniśmy zwrócić uwagę. Najpierw musisz sprawdzić, czy Twój moduł GSM jest zdolny do pracy z logiką TTL, czy może pracować tylko z RS232. Zasadniczo, jeśli twój moduł ma na pokładzie piny RX i TX (z GND), może działać na logice TTL. A jeśli nie ma żadnych pinów RX, TX i ma tylko port RS232 (port szeregowy z 9), to musisz użyć MAX232 IC, aby podłączyć port szeregowy do mikrokontrolera. Zasadniczo MAX232używany do konwersji danych szeregowych na logikę TTL, ponieważ mikrokontroler może działać tylko na logice TTL. Ale jeśli moduł GSM ma piny RX, TX, nie musisz używać MAX232 ani żadnego konwertera szeregowego, możesz bezpośrednio podłączyć RX GSM do TX (PIN 11) 8051 i TX GSM do RX (PIN 10) 8051 W naszym przypadku użyłem modułu SIM900A i ma on piny RX, TX więc nie używałem MAX232.
Schemat obwodu interfejsu GSM z mikrokontrolerem AT89S52 pokazano na powyższym rysunku. Teraz po połączeniu wystarczy napisać program do wysyłania komend AT do GSM i odbierania odpowiedzi na LCD. Istnieje wiele poleceń AT, jak opisano powyżej, ale nasz zakres tego artykułu dotyczy tylko połączenia GSM z 8051, więc wyślemy po prostu polecenie „AT”, a następnie „\ r” (0D w zapisie szesnastkowym). To da nam odpowiedź „OK”. Ale możesz rozszerzyć ten program, aby korzystać ze wszystkich funkcji GSM.
Objaśnienie kodu
Oprócz wszystkich funkcji związanych z wyświetlaczem LCD, użyliśmy tutaj portu szeregowego i rejestru trybu timera (TMOD). Możesz dowiedzieć się o funkcjach LCD i innych kodach, przechodząc przez naszą sekcję projektów 8051, tutaj wyjaśniam funkcje kodu związane z komunikacją szeregową:
Funkcja GSM_init ():
Ta funkcja służy do ustawiania szybkości transmisji dla mikrokontrolera. Szybkość transmisji to nic innego jak transmitowane lub odbierane bity / sekundę. I musimy dopasować prędkość transmisji 8051 do szybkości transmisji modułu GSM tj. 9600. Użyliśmy Timera 1 w Trybie 2 (8-bitowy tryb automatycznego przeładowania) ustawiając rejestr TMOD na 0X20 i wyższy bajt Timera 1 (TH1) do 0XFD, aby uzyskać szybkość transmisji 9600. Również rejestr SCON służy do ustawiania trybu komunikacji szeregowej, użyliśmy Mode1 (8-bitowy UART) z włączonym odbiorem.
Funkcja GSM_write:
SBUF (rejestr funkcji specjalnych bufora szeregowego) służy do komunikacji szeregowej, gdy chcemy wysłać dowolny bajt do urządzenia szeregowego, umieszczamy ten bajt w rejestrze SBUF, po przesłaniu całego bajtu bit TI jest ustawiany sprzętowo. Musimy go zresetować, aby wysłać następny bajt. Jest to flaga wskazująca, że bajt został wysłany pomyślnie. TI to drugi bit rejestru SCON. Za pomocą tej funkcji wysłaliśmy „AT”.
Funkcja GSM_read:
Podobnie jak w przypadku wysyłania, za każdym razem, gdy otrzymamy dowolny bajt z urządzenia zewnętrznego, który jest umieszczony w rejestrze SBUF, wystarczy go odczytać. I zawsze, gdy zostanie odebrany cały bajt, bit RI jest ustawiany sprzętowo. Musimy go zresetować, aby otrzymać następny bajt. RI to pierwszy bit rejestru SCON. Za pomocą tej funkcji odczytaliśmy odpowiedź „OK”.