- Необхідні матеріали
- Програмне забезпечення, що використовується
- Модуль GSM
- Спілкування з модулем GSM за допомогою AT-команд
- Схема взаємодії модуля GSM ATMega16
- Створення проекту для ATmega16 за допомогою CodeVision
- Код та пояснення
- Побудуйте проект
- Завантажте код на Atmega16
Модулі GSM цікаві у використанні, особливо коли наш проект вимагає віддаленого доступу. Ці модулі можуть виконувати всі дії, які може робити наш звичайний мобільний телефон, наприклад, робити / отримувати дзвінок, надсилати / отримувати SMS, підключатись до Інтернету за допомогою GPRS тощо. Ви також можете підключити до цього модуля звичайний мікрофон і динамік і вести розмову на своєму мобільні дзвінки. Це відкриє двері для багатьох творчих проектів, якщо їх можна поєднати з мікроконтролером. Отже, у цьому підручнику ми дізнаємось, як ми можемо взаємодіяти модуль GSM (SIM900A) з мікроконтролером AVR ATmega16, і продемонструємо це, надсилаючи та отримуючи повідомлення за допомогою модуля GSM.
Необхідні матеріали
- Atmega16
- Модуль GSM (SIM900 або будь-який інший)
- РК-дисплей
- Кнопки
- 10k резистори, потенціометр
- Підключення проводів
- Адаптер 12 В
- Програміст USBasp
- 10-контактний кабель FRC
Програмне забезпечення, що використовується
Ми будемо використовувати програмне забезпечення CodeVisionAVR для написання нашого коду та програмне забезпечення SinaProg для завантаження нашого коду в Atmega16 за допомогою програміста USBASP.
Ви можете завантажити ці програмні засоби за вказаними посиланнями:
CodeVisionAVR:
SinaProg:
Перш ніж входити в схеми та коди, ми дізнаємося про GSM-модуль та його роботу.
Модуль GSM
Модуль GSM можна використовувати навіть без будь-якого мікроконтролера за допомогою командного режиму AT. Як показано вище, модуль GSM постачається з адаптером USART, який можна безпосередньо підключити до комп'ютера за допомогою модуля MAX232, або штирі Tx та Rx можна використовувати для підключення його до мікроконтролера. Ви також можете помітити інші штифти, такі як MIC +, MIC-, SP +, SP- тощо, де можна підключити мікрофон або динамік. Модуль може живитися від адаптера на 12 В через звичайний гніздо для ствола постійного струму.
Вставте SIM-карту у гніздо модуля та увімкніть його, ви повинні помітити, що світлодіод живлення світиться. Тепер зачекайте хвилину або близько того, і ви побачите червоний (або будь-який інший колір) світлодіод, який блимає раз на 3 секунди. Це означає, що Ваш Модуль зміг встановити зв’язок з Вашою SIM-карткою. Тепер ви можете продовжувати підключення модуля до телефону або будь-якого мікроконтролера.
За допомогою модуля GSM можна створити безліч цікавих проектів, таких як:
- Бездротова дошка оголошень за допомогою GSM та Arduino
- Автоматичний автовідповідач за допомогою Arduino та GSM-модуля
- Домашня автоматизація на базі GSM за допомогою Arduino
- Датчик PIR та система безпеки на основі GSM
Тут також перевірте всі проекти, пов’язані з GSM.
Спілкування з модулем GSM за допомогою AT-команд
Як ви вже здогадалися, модуль GSM може спілкуватися через послідовний зв'язок і може розуміти лише одну мову, а саме " AT-команди ". Що б ви не хотіли сказати або попросити про модуль GSM, це повинно бути лише за допомогою AT-команд. Наприклад, якщо ви хочете знати, чи активний ваш модуль. Вам слід запитати (надіслати) таку команду, як “AT”, і ваш модуль відповість “OK”.
Ці команди AT добре пояснено в його технічному паспорті, і їх можна знайти тут в офіційному паспорті. Добре! Добре! Це таблиця даних на 271 сторінку, і її прочитання може зайняти кілька днів. Отже, я дав декілька найважливіших команд AT, щоб ви змогли це швидко запустити.
AT |
Відповідає з OK для підтвердження |
AT + CPIN? |
Перевірити якість сигналу |
AT + COPS? |
Знайдіть ім’я постачальника послуг |
ATD96XXXXXXXX; |
Дзвінок на певний номер, що закінчується крапкою з комою |
AT + CNUM |
Знайдіть номер SIM-картки (для деяких SIM-карт може не працювати) |
ATA |
Відповідь на вхідний дзвінок |
ATH |
Відключити поточний вхідний дзвінок |
AT + COLP |
Показати номер вхідного дзвінка |
AT + VTS = (число) |
Надішліть номер DTMF. Ви можете використовувати будь-який номер на мобільній клавіатурі для (номер) |
AT + CMGR |
AT + CMGR = 1 читає повідомлення на першій позиції |
AT + CMGD = 1 |
Видалити повідомлення з першої позиції |
AT + CMGDA = ”DEL ALL” |
Видалити всі повідомлення з SIM-картки |
AT + CMGL = "ВСЕ" |
Читати всі повідомлення з SIM-карти |
AT + CMGF = 1 |
Встановити конфігурацію SMS. “1” призначений лише для текстового режиму |
AT + CMGS = “+91 968837XXXX” > CircuitDigest Text
|
Надсилає SMS на певний номер тут 968837XXXX. Коли ви побачите “>”, почніть вводити текст. Натисніть Ctrl + Z, щоб надіслати текст. |
AT + CGATT? |
Щоб перевірити підключення до Інтернету на SIM-карті |
AT + CIPSHUT |
Щоб закрити TCP-з'єднання, тобто відключити Інтернет |
AT + CSTT = "APN", "ім'я користувача", "Пропуск" |
Підключіться до GPRS за допомогою APN та ключа доступу. Можна отримати у постачальника мереж. |
AT + CIICR |
Перевірте, чи має SIM-карта пакет даних |
AT + CIFSR |
Отримайте IP мережі SIM |
AT + CIPSTART = “TCP”, “SERVER IP”, “PORT” |
Використовується для встановлення IP-з'єднання TCP |
AT + CIPSEND |
Ця команда використовується для надсилання даних на сервер |
Тут ми будемо використовувати команди AT + CMGF та AT + CMGS для надсилання повідомлень.
Якщо ви використовували модуль GSM з Arduino, під час отримання повідомлень ви можете використовувати команду + CMT: для перегляду мобільного номера та текстового повідомлення на послідовному моніторі. Текстове повідомлення надходить у другий рядок, як показано на малюнку.
Ми відскануємо цю команду + CMT: щоб перевірити, доступне повідомлення чи ні.
Схема взаємодії модуля GSM ATMega16
Зв’язки будуть такими
- Tx та Rx модуля GSM до Rx (Pin14) та Tx (Pin15) Atmega16 відповідно.
- Кнопки на PD5 (Pin19) і PD6 (Pin20).
- РК-з'єднання:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Створення проекту для ATmega16 за допомогою CodeVision
Після установки CodeVisionAVR і SinaProg програмного забезпечення , виконайте наступні дії, щоб створити проект і написання коду:
Вже завантажено
Крок 1. Відкрийте CodeVision Клацніть на Файл -> Створити -> Проект . З'явиться діалогове вікно підтвердження. Клацніть на Так
Крок 2. Відкриється CodeWizard. Клацніть на перший варіант, тобто AT90 , і натисніть OK.
Крок 3: - Виберіть мікросхему мікроконтролера, тут ми візьмемо Atmega16L, як показано.
Крок 4: - Клацніть на USART . Виберіть Приймач і Передавач , натиснувши на них. Як показано нижче:
Крок 5: - Клацніть на буквено-цифровий РК-дисплей і виберіть Увімкнути підтримку буквено-цифрового РК-дисплея .
Крок 6: - Клацніть на Program -> Generate, Save and Exit . Зараз більше половини нашої роботи завершено
Крок 7: - Створіть нову папку на робочому столі, щоб наші файли залишалися в папці, інакше ми буде розкидані по всьому вікні робочого столу. Назвіть свою папку як завгодно, і я пропоную використовувати ту саму назву для збереження програмних файлів.
У нас буде три діалогові вікна один за одним для збереження файлів.
Зробіть те ж саме з двома іншими діалоговими вікнами, які з’являться після збереження першого.
Тепер ваша робоча область виглядає так.
Наша більша частина роботи завершена за допомогою майстра. Тепер нам потрібно написати код лише для GSM.
Код та пояснення
Всі файли заголовків автоматично приєднуються після створення проекту, вам потрібно просто включити файл заголовка delay.h та оголосити всі змінні. Повний код наведено в кінці цього підручника.
#включати
Зробіть функцію для отримання даних з реєстру UDR. Ця функція поверне отримані дані.
непідписаний символ отриманий_значення (void) { while (! (UCSRA & (1 <
Приїжджайте в той час як петлі, в якій ми створюємо два, якщо заяви, один для відправки повідомлень і інших для прийому. Кнопка "Надіслати" з'єднана з PIND6 ATmega, а кнопка отримання повідомлення - PIND5.
Коли PIND6 (Send Button) натиснута перша, якщо оператор буде виконувати і всі команди для відправки повідомлення буде виконуватися один за іншим.
while (1) { // lcd_clear (); lcd_putsf ("Надіслати-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Отримати-> buttn 2"); якщо (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Надсилання повідомлення…"); для (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; затримка_ms (100); } UDR = ('\ r'); delay_ms (500); для (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; затримка_ms (100); } …..
Якщо Receive кнопка повідомлення натиснута, в той час як (б! = «+») Цикл перевіряє, чи присутній команда СМТ чи ні. Якщо присутній, другий в той час як цикл буде виконуватися і перейти на другий рядок команди і виводить повідомлення на LCD один за іншим.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Отримання повідомлення…"); b = отримана_значення (); в той час як (b! = '+') { b = отримана_значення (); } b = отримана_значення (); якщо (b == 'C') { b = отримана_значення (); … ..
Цей цикл переводить програму на другий рядок команди і зберігає повідомлення в масиві.
в той час як (b! = 0x0a) { b = отримана_значення (); } для (b = 0; b <3; b ++) { c = отримана_значення (); msg = c; } .. ..
Цей цикл for відображає повідомлення на РК-дисплеї.
для (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // ДРУКУВАТИ в lcd delay_ms (10); }
Повний код з демонстраційним відео наведено нижче, тепер ми повинні створити наш проект.
Побудуйте проект
Клацніть на значок побудови проекту, як показано.
Після побудови проекту у папці Debug-> Exe створюється шістнадцятковий файл, який можна знайти в папці, яку ви створили раніше для збереження проекту. Ми використаємо цей шістнадцятковий файл для завантаження в Atmega16 за допомогою програмного забезпечення Sinaprog.
Завантажте код на Atmega16
Підключіть свої схеми відповідно до заданої схеми до програми Atmega16. Підключіть одну сторону кабелю FRC до програміста USBASP, а іншу сторону підключіть до контактів SPI мікроконтролера, як описано нижче:
- Pin1 жіночого роз'єму FRC -> Pin 6, MOSI Atmega16
- Контакт 2, підключений до Vcc atmega16, тобто контакт 10
- Контакт 5, підключений до скидання atmega16, тобто контакт 9
- Контакт 7, підключений до SCK atmega16, тобто контакт 8
- Контакт 9, підключений до MISO atmega16, тобто контакт 7
- Контакт 8, підключений до GND atmega16, тобто контакт 11
Ми завантажимо згенерований вище шестигранний файл за допомогою Sinaprog, тому відкрийте його та оберіть Atmega16 зі спадного меню Пристрій. Виберіть шістнадцятковий файл у папці Налагодження-> Exe, як показано.
Тепер натисніть «Програма», і ваш код буде записаний в мікроконтролері ATmega16.
Ви закінчили, і ваш мікроконтролер запрограмований. Просто натисніть кнопки для надсилання та отримання повідомлень від мікроконтролера GSM та ATmega16.
Повний код та демонстраційне відео наведено нижче.