- Необходимые материалы
- Используемое программное обеспечение
- 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», и ваш модуль ответит «ОК».
Эти AT-команды хорошо объяснены в его техническом паспорте и могут быть найдены здесь, в его официальном техническом описании. Хорошо! Хорошо! Это таблица данных на 271 страницу, и вам может потребоваться несколько дней, чтобы ее прочитать. Итак, я привел несколько наиболее важных 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 = "УДАЛИТЬ ВСЕ" |
Удалить все сообщения с SIM-карты |
AT + CMGL = "ВСЕ" |
Читать все сообщения с SIM-карты |
AT + CMGF = 1 |
Установите конфигурацию SMS. «1» - только текстовый режим. |
AT + CMGS = «+91 968837XXXX» > Текст CircuitDigest
|
Отправляет 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», «IP СЕРВЕРА», «ПОРТ» |
Используется для установки TCP IP-соединения |
AT + CIPSEND |
Эта команда используется для отправки данных на сервер |
Здесь мы будем использовать команды AT + CMGF и AT + CMGS для отправки сообщений.
Если вы использовали модуль GSM с Arduino, при получении сообщений вы можете использовать команду + CMT: для просмотра номера мобильного телефона и текстового сообщения на последовательном мониторе. Текстовое сообщение появляется во второй строке, как показано на рисунке.
Мы просканируем эту + CMT: команду, чтобы проверить, доступно ли сообщение или нет.
Схема подключения GSM-модуля ATMega16
Подключения будут следующие
- Tx и Rx модуля GSM к Rx (Pin14) и Tx (Pin15) Atmega16 соответственно.
- Нажмите кнопки на PD5 (контакт 19) и PD6 (контакт 20).
- Подключения ЖК-дисплея:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Создание проекта для ATmega16 с использованием CodeVision
После установки CodeVisionAVR и SinaProg программного обеспечения , выполните следующие действия, чтобы создать проект и написание кода:
Уже загружено
Шаг 1. Откройте CodeVision. Щелкните File -> New -> Project . Появится диалоговое окно подтверждения. Нажмите Да
Шаг 2. Откроется CodeWizard. Выберите первый вариант, например AT90 , и нажмите OK.
Шаг 3: - Выберите микросхему микроконтроллера, здесь мы возьмем Atmega16L, как показано.
Шаг 4: - Щелкните USART . Выберите Receiver and Transmitter , щелкнув по нему. Как показано ниже:
Шаг 5: - Нажмите на буквенно-цифровой ЖК-дисплей и выберите « Включить поддержку буквенно-цифрового ЖК-дисплея» .
Шаг 6: - Щелкните Программа -> Создать, сохранить и выйти . Сейчас больше половины нашей работы выполнено
Шаг 7: - Создайте новую папку на рабочем столе, чтобы наши файлы оставались в папке, иначе они будут разбросаны по всему окну рабочего стола. Назовите свою папку как хотите, и я предлагаю использовать то же имя для сохранения файлов программы.
У нас будет три диалоговых окна одно за другим для сохранения файлов.
Сделайте то же самое с двумя другими диалоговыми окнами, которые появятся после сохранения первого.
Теперь ваше рабочее пространство выглядит так.
Большая часть нашей работы выполняется с помощью Мастера. Теперь нам нужно написать код только для GSM.
Код и объяснение
Все файлы заголовков автоматически прикрепляются после создания проекта, вам нужно просто включить файл заголовка delay.h и объявить все переменные. Полный код приведен в конце этого руководства.
#включают
Сделайте функцию получения данных из регистра UDR. Эта функция вернет полученные данные.
unsigned char полученное_значение (void) { while (! (UCSRA & (1 <
Приезжайте в то время как петли, в которой мы создаем два, если заявления, один для отправки сообщений и других для приема. Кнопка отправки связана с PIND6 ATmega, а кнопка получения сообщения - с PIND5.
Когда PIND6 (Send Button) нажата первая, если оператор будет выполнять и все команды для отправки сообщения будет выполняться один за другим.
while (1) { // lcd_clear (); lcd_putsf ("Отправить-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Прием-> кнопка 2"); если (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Отправка сообщения…"); для (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); для (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Если Receive кнопка сообщение нажата, в то время как (б! = «+») Цикл проверяет, присутствует ли команда СМТ или нет. Если присутствует, второй в то время как цикл будет выполняться и перейти на вторую строку команды и выводит сообщение на LCD один за другим.
пока (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 (а); // ПЕЧАТЬ В lcd delay_ms (10); }
Полный код с демонстрационным видео приведен ниже, теперь нам нужно собрать наш проект.
Постройте проект
Щелкните значок Build the project, как показано.
После сборки проекта в папке Debug-> Exe создается файл HEX, который можно найти в папке, которую вы создали ранее для сохранения проекта. Мы будем использовать этот HEX-файл для загрузки в Atmega16 с помощью программного обеспечения Sinaprog.
Загрузите код в Atmega16
Подключите ваши схемы согласно данной схеме к программе Atmega16. Подключите одну сторону кабеля FRC к программатору USBASP, а другую сторону подключите к контактам SPI микроконтроллера, как описано ниже:
- Контакт 1 разъема FRC female -> Контакт 6, MOSI Atmega16
- Контакт 2 подключен к Vcc atmega16, т.е. контакт 10
- Контакт 5 подключен к сбросу atmega16, т.е. контакт 9
- Контакт 7 подключен к SCK atmega16, т.е. Контакт 8
- Контакт 9 подключен к MISO atmega16, т.е. контакт 7
- Контакт 8 подключен к GND atmega16, т.е. контакт 11
Мы загрузим созданный выше шестнадцатеричный файл с помощью Sinaprog, поэтому откройте его и выберите Atmega16 в раскрывающемся меню устройства. Выберите файл HEX из папки Debug-> Exe, как показано.
Теперь нажмите «Программа», и ваш код будет записан в микроконтроллер ATmega16.
Вы закончили, и ваш микроконтроллер запрограммирован. Просто нажмите кнопки для отправки и получения сообщений от микроконтроллера GSM и ATmega16.
Полный код и демонстрационное видео приведены ниже.