- •Методичні вказівки
- •Лабораторна робота №5 Розробка програмного забезпечення для управління gsm-модемом. Передача та прийом даних через com-порт за допомогою радіомодулів.
- •5.1. Мета роботи
- •5.2. Теоретичні відомості
- •5.2.1. Основні відмомсті про gsm
- •5.2.2 Розробка программного забезпечення
- •Написати в події OnClick кнопки надіслати смс прописати наступну функцію
- •5.3. Програма роботи
- •5.4. Обладнання та програмне забезпечення
- •5.5. Порядок виконання роботи
- •Лістинг ініціалізації com-портру має наступний вигляд
- •5.6. Контрольні запитання.
Міністерство освіти і науки України
Національний університет водного господарства та природокористування
Кафедра автоматизації, електротехнічних та комп’ютерно-інтегрованих технологій
04-03-
Методичні вказівки
до виконання лабораторних робіт №5
з навчальної дисципліни
“ Технології об’єктно-орієнтованого та web програмування “
студентам за напрямом підготовки 6.050202
«Автоматизація та комп’ютерно-інтегровані технології»
денної та заочної форм навчання
Рекомендовано методичною комісією
за напрямом підготовки 6.050202 «Автоматизація та комп’ютерно-інтегровані технології»
Протокол № 1
від “31” серпня 2015 р.
Рівне – 2015
Методичні вказівки до виконання лабораторних робіт №5 з навчальної дисципліни «Технології об’єктно-орієнтованого та web програмування» студентам за напрямом підготовки 6.050202 «Автоматизація та комп’ютерно-інтегровані технології» денної та заочної форм навчання / А.П.Сафоник - Рівне: НУВГП, 2015. –32 с.
Упорядник: Сафоник А.П., к.т.н., доц., доцент кафедри автоматизації, електротехнічних та комп’ютерно-інтегрованих технологій
Відповідальний за випуск: Древецький В.В., д.т.н., професор, зав. кафедри автоматизації, електротехнічних та комп’ютерно-інтегрованих технологій
© Сафоник А.П., 2015
© НУВГП, 2015
Лабораторна робота №5 Розробка програмного забезпечення для управління gsm-модемом. Передача та прийом даних через com-порт за допомогою радіомодулів.
5.1. Мета роботи
На основі вивченого матеріалу і попередніх виконаних лабораторних робіт по передачі даних через COM-порт, Навчитися управляти модемом гіпертермінал та написати програму для передачі СМС-повідомлень та здійснення дзвінків мовою програмування C++ в середовищі програмування Borland C++ Builder 6.0.
5.2. Теоретичні відомості
5.2.1. Основні відмомсті про gsm
Глобальна система мобільного зв'язку (GSM) — міжнародний стандарт для мобільного цифрового стільникового зв'язку з розділенням каналу за принципом TDMA та високим рівнем безпеки за рахунок шифрування з відкритим ключем. Стандарт був розроблений під патронатом Європейського інституту стандартизації електрозв'язку (ETSI) наприкінці 1980-х років.
Більшість мереж GSM працюють у діапазоні 900 МГц або 1800 МГц. Деякі країни Америки використовують діапазони 850 МГц та 1900 МГц, оскільки стандартні діапазони 900 та 1800 МГц зайняті іншими системами.
Діапазони 400 та 450 МГц використовуються у деяких країнах (включаючи країни Скандинавії та деякі острівні країни).
При роботі у стандартному діапазоні 900 МГц використовуються діапазон 890—915 МГц для зв'язку від терміналу до базової станції, та 935—960 МГц для зв'язку від базової станції до терміналу. У деяких країнах діапазон частот GSM-900 був розширений до 880—915 Мгц (MS -> BTS) і 925—960 Мгц (MS <- BTS), завдяки чому максимальна кількість каналів зв'язку збільшилася на 50. Така модифікація була названа E-GSM (extended GSM).
Смуга у 25 МГц ділиться на 124 канали (несучі), кожен шириною у 200 кГц. Часове розділення каналів (TDMA) дозволяє у кожному каналі розміщувати вісім повношвидкісних (full-rate) чи шістнадцять напівшвидкісних (half-rate) голосових каналів.
Стандарт GSM використовує декілька голосових кодеків, що дозволяють передавати голосовий канал шириною 3.1 кГц на швидкостях від 5.6 до 13 кбіт/с.
Послуги, що можуть надаватися мережами GSM:
Передача голосової інформації.
Послуга передачі даних (синхронний та ансинхронний обмін даними, в тому числі пакетна передача даних — GPRS).
Передача коротних повідомлень (SMS).
Передача факсів.
В даній лабораторній роботі використовується GSM-модем SIM900. SIM900 - представник нового покоління бюджетних GSM / GPRS модулів компанії SIMCOM. Він має 4 діапазони 850/900/1800/1900Мгц, вміє передавати / приймати голосові виклики, працювати з смс, робити ussd запити і працювати з мережею через GPRS, з підтримкою ftp, http або tcp / udp.
Живлення Для модулів необхідне живлення від 3.2 до 4.8В. Номінальне значення 4.0В. Живлення заводиться на виводи VBAT. Струм споживання сильно залежить від поточного режиму роботи і може коливатися від 20-30мА до 500мА. При цьому також можливі короткочасні стрибки до 2-3А, особливо в процесі пошуку мережі або при прийомі / передачі даних. Так що для живлення необхідно використовувати відповідні блоки живлення і не економити на електролітах.
У модулях реалізований повний набір інтерфейсних виводів для підключення по usart. В залежності від налаштувань, управління потоком може бути апаратне з використанням RTS, CTS, DTR, DCD і RI. Так само можна використовувати режим без управління, коли використовуються тільки RXD і TXD. Програмне керування (XON / XOFF) використовувати не рекомендується через наявність помилок в його реалізації. Невикористані висновки потрібно залишити висіти в повітрі, всі необхідні підтяжки вже є всередині.
Модуль може працювати на швидкостях від 1200 до 115200. При включенні встановлюється режим авто-налаштування швидкості від 1200 до 57600, 8 біт даних, без парності і 1 стоп бітом. Для синхронізації необхідно почекати 2-3с після включення і послати команду «AT» (обов'язково великими літерами).
AT Команди.
Із зовнішнім світом модуль спілкується за допомогою AT команд. Користувачі модемів повинні їх пам'ятати. Всі команди діляться на базові, більшість з яких з'явилися ще за часів U.S. Robotics, так звані S-команди, родом звідти ж і розширених, доданих в стандартах GSM07.05-07.07.
Практично всі команди працюють в 3 режимах - тестовому, читання і запису. У тестовому режимі повертається OK, якщо команда підтримується або можливі значення даних у параметрі команди. Тестовий режим визначається закінченням команди у вигляді '=?'. У режимі читання повертаються поточні значення параметра, відрізняється від тестового наявністю в кінці просто символу '?'. І в режимі запису після '=' йдуть нові значення параметрів. Кількість параметрів при читанні і записі не обов'язково має збігатися.
Як приклад: AT + CFUN =? тестовий режим, поверне + CFUN: (0,1,4), (0-1), що значить у неї 2 параметри. Перший може приймати значення 0,1 або 4, а другий може бути в інтервалі 0-1. AT + CFUN? режим читання, у мене повертає + CFUN: 1, все добре. AT + CFUN = 4,0 запис, приймач / передавач вимикається без перезавантаження модуля.
Всі команди можуть вводитися як рядковими, так і прописними буквами.
Включення. При включенні модуль повинен видати 00 49 49 49 49 FF FF FF FF в шістнадцятковому режимі, RDY + CFUN: 1
Де 0 - мінімальна функціональність, 1 - повна функціональність, 4 - відключений приймач / передавач. Потім, якщо пін коду немає, то
+ CPIN: READY і якщо встановлений, то + CPIN: SIM PIN. На що треба відповісти через AT + CPIN = pin. У будь-якому випадку у відповідь отримаємо: OK Call Ready. Модуль готовий до роботи.
Управління портом. Спочатку роботи необхідно задати режими роботи com порту. Для цього є кілька основних команд:
AT + IPR = 9600 - швидкість порту. Можна вибрати: 0, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 0 - автовибір. Стоїть за умовчанням і для правильної роботи перший посилається символ повинен бути прописаний буквою 'A'.
AT + IFC = 0,0 - режим управління потоком в обидві сторони. 0, Без контролю. 1, Програмний режим (XON / XOFF). Є проблеми у використанні, краще не використовувати 2, Апаратний. Управління через CTS, DTR і т.д.
AT + ICF = 3,3 - встановлює режим передачі. Перше число - біти даних / парність / стоп біти
8/0/2
8/1/1
8/0/1, стоїть за умовчанням.
7/0/2
7/1/1
7/0/1
Друге число – парність, 0 непарний, 1 парний, 3 немає. Всі налаштування цих команд зберігаються в незалежній пам'яті. Так що їх можна робити тільки один раз.
Інформаційні команди. Тут зібрані різноманітні команди, що видають інформацію про самому модулі та його поточний стан.Команди інформації про модуль.
AT + GMM - ідентифікатор модуля. Поверне: SIMCOM_SIM900.
AT + GOI - більш короткий ідентифікатор модуля. У мене SIM900D.
AT + GMR - версія прошивки. Може стане в нагоді при бажанні використовувати нові фішки.
AT + CSQ - інформація про якість сигналу. Поверне два числа + CSQ: 21,0 21, - рівень сигналу. Може бути в діапазоні 0 .. 31 або 99. Чим більше тим краще, але 99 означає його відсутність.
AT + CREG = 1 - дозволяє видачу повідомлення про зміну реєстрації в мережі. Може приймати значення 0 .. 2, де 0 - заборона видачі повідомлень,1 - дозволити повідомленню про зміну статусу реєстрації, 2 - дозволяє видачу повідомлень, плюс видає ще трохи невиразною інформації
AT + CREG? - Отримати тип реєстрації в мережі. Повернеться щось на зразок + CREG: 0,1. Де: 0 - немає повідомлення про зміну реєстрації в мережі, 1 - поточний стан. 0 - не зареєстрований, пошук мережі не ведеться, 1 - зареєстрований в своїй домашній мережі, 2 - не зареєстрований, йде пошук мережі, 3 - реєстрація відхилена, 4 - модуль сам не знає що відбувається, 5 - зареєстрований в роумінгу. Дозволивши видачу цих повідомлень можна відстежувати коли модуль знаходить / втрачає мережу або потрапляє в роумінг.
AT + CSPN? - Інформація про оператора з сім-карти. Може стане в нагоді для автоматичної настройки GPRS. Команда тільки для читання.
0AT + COPS? - Інформація про оператора, у мережі якого зареєстрований модуль. Мені видало у відповідь + COPS: 0,0, «Beeline» ", що значить 0 - автоматичний вибір мережі (перший 0), 0 - довгий тестовий формат імені (другий 0), і саме назви оператора.
Ще можна зробити запит у вигляді AT + COPS =? .Після досить довгої обмірковування вам видадуть список знайдених мереж. У мене знайшлося наступне:+ COPS: (2, «MegaFonAT + CPAS - інформація про поточний стан телефону. Може повернути + CPAS: 00, - готовий до праці і оборони, 2 - не відомо що робить, 3 - йде вхідний дзвінок,4 - є голосове з'єднання.
Теж команда тільки для читання.AT + CCLK? - Отримати поточний час. Поверне поточний час у вигляді: + CCLK: «11/04/11, 1:46:33 +00»AT + CCLK = «yy / mm / dd, hh: mm: ss + zz» - встановити час. Обов'язково в такому форматі і з провідними нулями. Самостійно час не встановлюється, потрібно робити все ручками.
Сервісні команди. Насправді ці команди керують луною, повнотою інформації про помилку і подібні.
ATE0 режим луни. 0 вимкнений, 1 включений. Стоїть за умовчанням.
ATV0 - формат відповіді модуля. 1 повний текстовий відповідь з луною (якщо включений). Стоїть за умовчанням 0 повернення лише коду відповіді. У першому випадку завжди буде повертатися OK, ERROR та інше, а в другому будуть повертатися коди результату. Так замість OK повернеться 0, а замість ERROR 4.
AT + CMEE = 0 - рівень інформації про помилку. Може бути 0 .. 2.0, - відключено. Буде просто писати ERROR. 1 - код помилки. Буде повертати цифровий код помилки, 2 - опис помилки. Напише що саме йому не подобається в команді. Для ігор через термінал режим зручніше режими ATV1, ATE1 AT + CMEE = 2, для спілкування з мікроконтролером краще використовувати ATV0, ATE0 і AT + CMEE = 0.
Команди набору номера. Всі вони прийшли ще від модемів і нічого нового в них немає.
ATD1234567; - зателефонувати за номером
ATD> 1; - подзвонити по 1 номеру з сім карти
ATDL - подзвонити за останнім набраним номером У відповідь можемо отримати:BUSY NO DIALTONE NO CARRIER NA ANSWER CONNECTAT + CLIP = 1 - архі корисний параметр. Включає режим CLI (Calling Line Identification). Після його включення при вхідному виклику видає не просто повідомлення RING, а ще додає рядок типу + CLIP: "+3 XXXXXXXXXX", 145, "",, "", 0 або + CLIP: "+3 XXXXXXXXXX", 145, "",, "main», 0. Де"+3 XXXXXXXXXX", номер абонента. 145 формат номера в повідомленні. 145 - інтернаціональний формат, 129 - невідомий. 0 - дані вірні, 1 - дані не дає оператор, 2 - дані недоступні з за обмежень мережі. «Main» - ім'я запису в записнику ATA - відповісти на вхідний дзвінок .ATH0 - розірвати всі з'єднання. Може приймати значення 0 .. 5, вказуючі які види зв'язку потрібно розірвати. ATS0 = 0 - кількість дзвінків до авто підняття трубки. 0 - тільки вручну.
AT + GSMBUSY = 1 - заборона всіх вхідних дзвінків. 1 - заборонити всі вхідні дзвінки, 0 – дозволити. Результат даної команди не зберігається в пам'яті і його треба повторювати при кожному включенні.
СМС. За замовчуванням усі повідомлення зберігаються на сім карту. При надходженні повідомлення прийде повідомлення:
+ CMTI: «SM», 1 1, - номер отриманого повідомлення. Налаштування режимів прийому смс.
AT + CSCA - номер сервіс центру відправлення повідомлень. Береться автоматом з цим карти, але раптом знадобиться. Можна читати і писати. Ось що мені видав для Life: + CSCA: "+380933333333", 145AT + CMGF - формат повідомлень, 0-1.0 - режим PDU, управління кодом команди. Висновок повідомлення в HEX коді. Режим за замовчуванням 1 - текстовий режим. Команди текстові. Висновок повідомлення в текстовому вигляді. У перший режимі повідомлення будуть видаватися у вигляді шістнадцяткових кодів ascii або unicode. Дуже, дуже не легкотравний режим.
AT + CSCB = 1 прийом широкомовних повідомлень. За замовчуванням включена, для виправлення цієї недоробки використовуємо зазначену команду. Робота з смс. AT + CMGL - читання смс. Не зручна команда, краще використовувати наступну. Тільки команда на запис у форматі AT + CMGL = stat, mode де stat (режим PDU / текстовий): 0 / «REC UNREAD» - не прочитані повідомлень. 1 / «REC READ» - прочитані повідомлень. 2 / «STO UNSENT» - не відправлені .3 / «STO SENT» - відправлені. 4 / «ALL» - всі повідомлення. mode: 0 - звичайний режим. 1 - не змінювати статус повідомлення. Формат команди залежить від установок зроблених в AT + CMGF, якщо обрано режим PDU, то параметр «ALL» дасть помилку і навпаки. Зміна статусу означає, що повідомлення зі статусом не прочитаний стане як не дивно вже прочитаним.
AT + CMGR = 1,0 - читання смс. Команда тільки на запис.1 - номер смс, 0 - звичайний режим або 1 - не змінювати статус. За параметрами аналогічна AT + CMGL.
AT + CMGDA = «DEL ALL» - видалення всіх смс певного типу. Теж команда так собі, наступна получше буде.«DEL READ» - прочитаних. «DEL UNREAD» - не прочитаних. «DEL SENT» - відправлених. «DEL UNSENT» - не відправлених. «DEL INBOX» - отриманих. «DEL ALL» - усіх повідомлень.
AT + CMGD = 1,0 - видалення смс. 1 - номер повідомлення, 0 - режим видалення. Працює за замовчуванням, можна використовувати просто AT + CMGD = 21 - видалення тільки всіх прочитаних повідомлень 2 - видалення прочитаних і відправлених повідомлень, 3 - видалення всіх прочитаних, відправлених і не відправлених повідомлень, 4 - видалення всіх повідомлень. Тобто для видалення всіх повідомлення можна ввести команду AT + CMGD = 1,4.AT + CMGS = «ххххххххххх» - відправка смс. Так само залежить від AT + CMGF. Після введення команди видає запрошення ">" після чого можна вводити текст повідомлень. Завершується символом ESC або Ctrl-Z.
USSD запити. Для перевірки балансу та різних налаштувань зазвичай використовуються ussd запити. Дуже часто запити починаються зі '*' повертають відповідь в юникоде, рідною мовою. На щастя, багато телефонів не розуміють цієї кодування і для них були введені запити починаються з '#'. Вони повертають відповідь у стандартному ascii. Зробити запит можна 2 способами.
Перший, використовуючи спеціальну команду: AT + CUSD = 1, "# 111 #". 1 - режим обробки відповіді, 0 - виконати запит, отриманий відповідь проігнорувати, 1 - виконати запит, відповідь повернути в термінал, 2 - скасувати операцію, "# 111 #" - саме повідомлення. Відправляється тільки те, що знаходиться в дужках.
Другий виглядає як звичайний набір номера. Результат завжди повертається в терміналі. Але працює не на всіх версіях прошивки. ATD # 111 #
РАДІОКАНАЛ - смуга частот електромагнітних коливань, визначена для даної передачі.
Радіоканал використає передачу інформації з радіохвиль, тому теоретично він може забезпечити зв'язок на багато десятків, сотні й навіть тисячу кілометрів. Швидкість передачі досягає десятків мегабіт у секунду (тут багато чого залежить від обраної довжини хвилі й способу кодування).
Особливість радіоканалу полягає в тому, що сигнал вільно випромінюється в ефір, він не замкнутий у кабель, тому виникають проблеми сумісності з іншими джерелами радіохвиль (радіо- і телевіщальними станціями, радарами, радіоаматорськими й професійними передавачами й т.д.). У радіоканалі використовується передача у вузькому діапазоні частот і модуляція інформаційним сигналом сигналу несучої частоти.
Головним недоліком радіоканалу є його поганий захист від прослуховування, тому що радіохвилі поширюються неконтрольовано. Інший великий недолік радіоканалу - слабка перешкодозахищеність.
Характеристики радіомодулів
До основних характеристик радіомодулів відносять:
Кількість послідовних інтерфейсів: 1 (RS-232 / RS-485 / RS-422 / CAN);
Швидкість роботи послідовного звязку: 1200, 2400, 4800, 9600, 14400 бит/с;
частотний діапазон: 433–2480 МГц
метод модуляции:;
можливість самооб’єднання радіо модулів в мережу з ретрансляцією даних
потужність передачі: від 10Вт. до 100 мВт;
чутливість приймача: -97 дБм;
хвильовий опір навантаження 50 Ом – 150кОм;
тип антени: (зовнішня або вбудована)
напруга живлення : ≈220 В, або =5 В
температурний діапазон: від 0 до + 50 °С;
среднє напрацювання на відмову: 250 000 год;
средній срок служби: 15 років.
Пристрої передачі та прийому даних по радіоканалу
Рис.1 Структурна схема передачі команд для візуалізації процесу наповнення водонапірної башні
MCU-мікролколнтролер; Max-232-перетворювач логічних рівнів; Radio modul-радіомодуль; k1-кнопка збільшення рівня; k2- кнопка зменшення рівня; PC-персональний комп’ютер; rx-канал прийому даних; tx-канал передачі даних; БЖ-блок живлення постійної напруги 5В.
Принцип роботи пристрою
Мікроконтролер зчитує значення дискретних входів з кнопок збільшення та зменшення рівнів. У разі натиснення однієї з цих кнопок передає по каналу передачі даних число 100 або 200 відповідно на перетворювач логічних рівнів, який передворює сигнал 5В. в сигнал 11-12В. Двійковий код числа 100 або 200 з логічним рівнем 11-12В. поступає на вхід радіо модуля передавача. Радіо модуль приймач сприймаж дані передані по радіоканалу і передає їх на канал прийому даних другого перетворювача логічних рівнів, який здійснює зворотнє перетворення з 11-12В. в 5В. При прийомі через комунікаційний інтерфейс числа 100 здійснюється збільшення рівня водонапірної башні, а при прийомі числа 200 – зменшення.
