- Необходими материали
- Използван софтуер
- GSM модул
- Комуникация с GSM модул с помощта на AT команди
- Схема на взаимодействие на модула ATMega16 GSM
- Създаване на проект за ATmega16 с помощта на CodeVision
- Код и обяснение
- Изградете проекта
- Качете кода в Atmega16
GSM модулите са интересни за използване, особено когато нашият проект изисква отдалечен достъп. Тези модули могат да извършват всички действия, които може да направи нашият нормален мобилен телефон, като например осъществяване / получаване на повикване, изпращане / получаване на SMS, свързване към интернет чрез GPRS и т.н. Можете също така да свържете нормален микрофон и високоговорител към този модул и да разговаряте на мобилни разговори. Това ще отвори врати за много творчески проекти, ако може да се свърже с микроконтролер. Следователно в този урок ще научим как можем да свържем GSM модула (SIM900A) с AVR микроконтролера ATmega16 и ще го демонстрираме чрез изпращане и получаване на съобщения с помощта на GSM модул.
Необходими материали
- Atmega16
- GSM модул (SIM900 или друг)
- ЛСД дисплей
- Бутони
- 10k резистори, потенциометър
- Свързващи проводници
- 12V адаптер
- USBasp програмист
- 10-пинов FRC кабел
Използван софтуер
Ще използваме софтуер CodeVisionAVR за писане на нашия код и софтуер SinaProg за качване на нашия код в Atmega16 с помощта на USBASP програмист.
Можете да изтеглите тези софтуери от дадените връзки:
CodeVisionAVR:
SinaProg:
Преди да влезем в схемите и кодовете, научаваме за GSM модула и неговата работа.
GSM модул
Модулът GSM може да се използва дори без никакъв микроконтролер, като се използва командният режим AT. Както е показано по-горе, GSM модулът се доставя с USART адаптер, който може да бъде директно свързан към компютъра чрез модул MAX232 или Tx и Rx щифтовете могат да бъдат използвани за свързването му с микроконтролер. Можете също така да забележите другите щифтове като MIC +, MIC-, SP +, SP- и т.н., където може да се свърже микрофон или високоговорител. Модулът може да се захранва от 12V адаптер през обикновен жак за постоянен ток.
Поставете вашата 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 |
Отговори с ОК за потвърждение |
AT + CPIN? |
Проверете качеството на сигнала |
AT + ЧЕНГА? |
Намерете името на доставчика на услуги |
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 картата |
НА + CIPSHUT |
За да затворите TCP връзка, което означава да прекъснете връзката от интернет |
AT + CSTT = „APN“, „потребителско име“, „Pass“ |
Свържете се с GPRS с вашия APN и Pass ключ. Може да се получи от доставчика на мрежа. |
AT + CIICR |
Проверете дали SIM картата има пакет данни |
AT + CIFSR |
Вземете IP на SIM мрежата |
AT + CIPSTART = “TCP”, “СЪРВЪР IP”, “ПОРТ” |
Използва се за задаване на TCP IP връзка |
НА + CIPSEND |
Тази команда се използва за изпращане на данни към сървъра |
Тук ще използваме командите AT + CMGF и AT + CMGS за изпращане на съобщения.
Ако сте използвали GSM модул с Arduino, докато получавате съобщения, можете да използвате + CMT: команда за преглед на мобилния номер и текстово съобщение на сериен монитор. Текстовото съобщение идва на втори ред, както е показано на снимката.
Ще сканираме тази команда + CMT:, за да проверим дали съобщението е налично или не.
Схема на взаимодействие на модула ATMega16 GSM
Връзките ще бъдат както следва
- Tx и Rx на GSM модула към Rx (Pin14) и Tx (Pin15) на Atmega16 съответно.
- Бутони за PD5 (Pin19) и PD6 (Pin20).
- LCD връзки:
- 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: - Щракнете върху буквено-цифров LCD и изберете Enable Alphanumeric LCD support .
Стъпка 6: - Щракнете върху Програма -> Генериране, запазване и излизане . Сега повече от половината от нашата работа е завършена
Стъпка 7: - Направете нова папка на работния плот, така че нашите файлове да останат в папката, в противен случай ще бъде разпръснат върху целия прозорец на работния плот. Наименувайте папката си, както искате и ви предлагам да използвате същото име, за да запазите програмните файлове.
Ще имаме три диалогови прозореца един след друг, за да запазваме файлове.
Направете същото с другите два диалогови прозореца, които ще се появят, след като запазите първия.
Сега вашето работно пространство изглежда така.
По-голямата част от работата ни е завършена с помощта на съветника. Сега трябва да напишем код само за GSM.
Код и обяснение
Всички заглавни файлове се прикачват автоматично след създаването на проекта, просто трябва да включите заглавния файл delay.h и да декларирате всички променливи. Пълният код е даден в края на този урок.
#include
Направете функция за получаване на данни от UDR регистър. Тази функция ще върне получените данни.
неподписан знак получил_значение (void) { while (! (UCSRA & (1 <
Стигнете до цикъла while, в който създаваме две if инструкции, една за изпращане на съобщение и друга за получаване. Бутонът за изпращане е свързан с 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; delay_ms (100); } UDR = ('\ r'); delay_ms (500); за (z = 0; cmd_2! = ""; z ++) { UDR = cmd_2; delay_ms (100); }…..
Ако натиснете бутона за получаване на съобщение, докато цикълът (b! = '+') Ще провери дали командата CMT е налице или не. Ако е налице, втори цикъл while ще се изпълни и ще премине към втория ред на командата и ще отпечата съобщението на 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 е за показване на съобщението на LCD.
за (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // ПЕЧАТ В lcd delay_ms (10); }
Пълният код с Demo Video е даден по-долу, сега трябва да изградим нашия проект.
Изградете проекта
Кликнете върху Изграждане на иконата на проекта , както е показано.
След изграждането на проекта се генерира HEX файл в папката Debug-> Exe, който може да бъде намерен в папката, която сте направили преди това, за да запазите проекта си. Ще използваме този HEX файл за качване в 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 от падащото меню Device. Изберете HEX файла от папката Debug-> Exe, както е показано.
Сега щракнете върху Програма и вашият код ще бъде изгорен в микроконтролера ATmega16.
Приключихте и вашият микроконтролер е програмиран. Просто натиснете бутоните, за да изпращате и получавате съобщенията от микроконтролера на GSM и ATmega16.
Пълният код и демонстрационното видео е дадено по-долу.