Модуль GSM используется во многих устройствах связи, основанных на технологии GSM (Глобальная система мобильной связи). Он используется для взаимодействия с сетью GSM с помощью компьютера. Модуль GSM понимает только AT-команды и может реагировать соответствующим образом. Самая основная команда - «AT», если GSM отвечает ОК, значит, она работает нормально, в противном случае она отвечает «ERROR». Существуют различные AT-команды, такие как ATA для ответа на звонок, ATD для набора номера, AT + CMGR для чтения сообщения, AT + CMGS для отправки sms и т. Д. После AT-команд должен следовать возврат каретки, т.е. \ r (0D в шестнадцатеричном формате), например «AT + CMGS \ r». Используя эти команды, мы можем использовать GSM-модуль.
GSM интерфейс с 8051
Вместо ПК мы можем использовать микроконтроллеры для взаимодействия с модулем GSM и ЖК-дисплеем для получения ответа от модуля GSM. Итак, мы собираемся связать GSM с микроконтроллером 8051 (AT89S52). Связать GSM с 8051 очень просто, нам просто нужно отправить AT-команды от микроконтроллера, получить ответ от GSM и отобразить его на ЖК-дисплее. Мы можем использовать последовательный порт микроконтроллера для связи с GSM, то есть использовать PIN 10 (RXD) и 11 (TXD).
Сначала нам нужно подключить ЖК-дисплей к 8051, вы можете узнать об этом здесь: Интерфейс ЖК-дисплея с микроконтроллером 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 (PIN 11) 8051 и TX GSM к RX (PIN 10) 8051 В нашем случае я использовал модуль SIM900A и у него есть контакты RX, TX, поэтому я не использовал MAX232.
Принципиальная схема GSM-интерфейса с микроконтроллером AT89S52 показана на рисунке выше. Теперь после подключения нам просто нужно написать программу для отправки AT-команд в GSM и получения ее ответа на ЖК-дисплее. Как описано выше, существует множество AT-команд, но наша цель - просто интерфейс GSM с 8051, поэтому мы просто собираемся отправить команду «AT», за которой следует «\ r» (0D в шестнадцатеричном формате). Это даст нам ответ «ОК». Но вы можете расширить эту программу, чтобы использовать все возможности GSM.
Объяснение кода
Помимо всех функций, связанных с ЖК-дисплеем, здесь мы использовали последовательный порт и регистр режима таймера (TMOD). Вы можете узнать о функциях ЖК-дисплея и другом коде, пройдя через наш раздел проектов 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. Мы прочитали ответ «ОК», используя эту функцию.