Модуль GSM використовується в багатьох комунікаційних пристроях, що базуються на технології GSM (Глобальна система мобільного зв'язку). Він використовується для взаємодії з мережею GSM за допомогою комп’ютера. Модуль GSM розуміє лише команди AT і може відповідати відповідним чином. Найбільш основною командою є “AT”, якщо GSM відповідає нормально, тоді вона працює добре, інакше вона відповідає “ERROR”. Існують різні AT-команди, такі як ATA для відповіді на дзвінок, ATD для набору дзвінка, AT + CMGR для читання повідомлення, AT + CMGS для надсилання смс тощо.), наприклад “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. Ми прочитали відповідь “OK”, використовуючи цю функцію.