GSM модулът се използва в много комуникационни устройства, базирани на технологията GSM (Глобална система за мобилни комуникации). Използва се за взаимодействие с GSM мрежа с помощта на компютър. GSM модулът разбира само AT команди и може да реагира съответно. Най-основната команда е "AT", ако GSM отговори ОК, тогава работи добре, в противен случай отговаря с "ГРЕШКА". Има различни AT команди като ATA за отговор на повикване, ATD за набиране на повикване, AT + CMGR за четене на съобщението, AT + CMGS за изпращане на sms и т.н. AT командите трябва да бъдат последвани от Carriage return, т.е. \ r (0D в шестнадесетичен), като „AT + CMGS \ r“. Можем да използваме GSM модул, използвайки тези команди.
GSM взаимодействие с 8051
Вместо да използваме компютър, можем да използваме микроконтролери за взаимодействие с GSM модул и LCD, за да получим отговора от GSM модула. Така че ще свържем GSM с микроконтролер 8051 (AT89S52). Много е лесно да се свърже GSM с 8051, просто трябва да изпратим AT команди от микроконтролера и да получим отговор от GSM и да го покажем на LCD. Можем да използваме серийния порт на микроконтролера за комуникация с GSM, означава използване на ПИН 10 (RXD) и 11 (TXD).
Първо трябва да свържем LCD към 8051, можете да научите това от тук: LCD взаимодействие с микроконтролер 8051. След това трябва да свържем GSM модула към 8051, сега тук трябва да обърнем малко внимание. Първо трябва да проверите дали вашият GSM модул може да работи по TTL логика или може да работи само с RS232. По принцип, ако вашият модул има RX и TX (с GND) щифтове на борда, тогава той може да работи по TTL логика. И ако няма RX, TX щифтове и има само RS232 порт (сериен порт с 9), тогава трябва да използвате MAX232 IC, за да свържете сериен порт към микроконтролера. По принцип MAX232използва се за преобразуване на серийни данни в TTL логика, тъй като микроконтролерът може да работи само върху TTL логика. Но ако GSM модулът има RX, TX щифтове, тогава не е нужно да използвате MAX232 или някакъв сериен конвертор, можете директно да свържете RX на GSM към TX (ПИН 11) от 8051 и TX на GSM към RX (ПИН 10) от 8051 В нашия случай съм използвал SIM900A модул и той има RX, TX щифтове, така че не съм използвал MAX232.
Схемата на схемата за GSM взаимодействие с микроконтролер AT89S52 е показана на горната фигура. Сега след връзката просто трябва да напишем програма за изпращане на AT команди до GSM и да получим нейния отговор на LCD. Има много AT команди, както е описано по-горе, но обхватът на тази статия е просто да свържем GSM с 8051, така че просто ще изпратим команда „AT“, последвана от „\ r“ (0D в шестнадесетичен). Това ще ни даде отговор „ОК“. Но можете да разширите тази програма, за да използвате всички удобства на GSM.
Обяснение на кода
Освен всички функции, свързани с LCD, тук използваме сериен порт и регистър на режима на таймера (TMOD). Можете да научите за LCD функциите и други кодове, като преминете през нашия раздел 8051 за проекти, тук обяснявам за кодовите функции, свързани със серийната комуникация:
Функция GSM_init ():
Тази функция се използва за задаване на скоростта на предаване за микроконтролер. Скоростта на предаване не е нищо друго освен предадените или получените битове / секунда. И трябва да съобразим скоростта на предаване от 8051 със скоростта на предаване на GSM модула, т.е. 9600. Използвали сме таймера 1 в режим 2 (8-битов режим на автоматично презареждане), като сме задали регистъра TMOD на 0X20 и по-висок байт на таймера 1 (TH1) до 0XFD, за да се получи скоростта на предаване от 9600. Също така SCON регистърът се използва за задаване на режима на серийна комуникация, използвахме Mode1 (8-битов UART) с активирано получаване.
Функция GSM_write:
SBUF (регистър със специални функции на серийния буфер) се използва за серийна комуникация, когато искаме да изпратим някакъв байт към серийно устройство, ние го поставяме в регистъра на SBUF, когато целият байт е изпратен, тогава битът TI се задава от хардуера. Трябва да го нулираме за изпращане на следващ байт. Това е флаг, който показва, че байтът е изпратен успешно. TI е вторият бит на регистър SCON. Изпратихме „AT“, използвайки тази функция.
Функция GSM_read:
Подобно на изпращането, всеки път, когато получим байт от външно устройство, който е поставен в SBUF регистър, ние просто трябва да го прочетем. И винаги, когато е получен целият байт, битът RI се задава от хардуера. Трябва да го нулираме за получаване на следващ байт. RI е първият бит от регистър SCON. Прочетохме отговора „ОК“, използвайки тази функция.