- Потребни материјали:
- ГСМ модул:
- Комуникација са ГСМ модулом помоћу АТ команди:
- Кружни дијаграм:
- Програмирање вашег ПИЦ микроконтролера:
- Симулација:
- Упућивање и примање позива користећи ГСМ и ПИЦ:
ГСМ модули су фасцинантни за употребу, посебно када наш пројекат захтева даљински приступ. Ови модули могу да изврше све радње које би могао да уради наш уобичајени мобилни телефон, попут упућивања / примања позива, слања / примања СМС-а, повезивања на Интернет помоћу ГПРС-а итд. На овај модул можете да повежете и уобичајени микрофон и звучник и разговарате на свом мобилни позиви. Ово ће отворити врата многим креативним пројектима ако би се могли повезати са микроконтролером. Стога ћемо у овом упутству научити како можемо повезати ГСМ модул (СИМ900А) са нашим ПИЦ микроконтролером и то ћемо демонстрирати упућивањем и примањем позива помоћу ГСМ модула. Претходно смо га повезали са Ардуином и Распберри Пи за позивање и размену порука:
- Позив и порука помоћу Ардуино и ГСМ модула
- Позив и текст помоћу Распберри Пи и ГСМ модула
Потребни материјали:
- ПИЦ микроконтролер (ПИЦ16Ф877А)
- ГСМ модул (СИМ900 или било који други)
- Повезивање жица
- 12В адаптер
- ПицКит 3
ГСМ модул:
ГСМ модул се може користити чак и без било каквог микроконтролера помоћу АТ командног режима. Као што је приказано изнад, ГСМ модул долази са УСАРТ адаптером који се може директно повезати са рачунаром помоћу МАКС232 модула или се Тк и Рк пинови могу користити за његово повезивање са микроконтролером. Такође можете приметити и остале пинове попут МИЦ +, МИЦ-, СП +, СП- итд. На које се може повезати микрофон или звучник. Модул се може напајати преко 12В адаптера кроз нормалну утичницу за једносмерну струју.
Уметните СИМ картицу у отвор на модулу и укључите је, требало би да приметите да се ЛЕД лампица за напајање УКЉУЧУЈЕ. Сачекајте минуту или тако мало и требали бисте видети црвену (или било коју другу боју) ЛЕД лампицу како трепће једном у 3 секунде. То значи да је ваш модул могао успоставити везу са вашом СИМ картицом. Сада можете наставити са повезивањем вашег модула са телефоном или било којим микроконтролером.
Комуникација са ГСМ модулом помоћу АТ команди:
Као што сте могли претпоставити, ГСМ модул може комуницирати серијском комуникацијом и могао је разумјети само један језик, а то су „ АТ команде “. Шта год да желите да кажете или затражите од ГСМ модула, то би требало да буде само путем АТ команди. На пример, ако желите да знате да ли је ваш модул активан. Требали бисте затражити (послати) наредбу попут „АТ“ и ваш модул ће одговорити „ОК“.
Ове АТ команде су добро објашњене у техничком листу и могу се наћи овде у званичном листу података. У реду! У реду! То је лист са подацима од 271 странице и можда ће вам требати дана да га прочитате. Дакле, дао сам вам неколико најважнијих АТ команди да бисте то ускоро покренули.
АТ |
Одговара са ОК за потврду |
АТ + ЦПИН? |
Проверите квалитет сигнала |
АТ + ПОЛИЦИЈА? |
Пронађите име добављача услуга |
АТД96КСКСКСКСКСКСКСКС; |
Позив на одређени број, завршава се тачком и зарезом |
АТ + ЦНУМ |
Пронађите број СИМ картице (можда неће радити на неким СИМ картицама) |
АТА |
Одговорите на долазни позив |
АТХ |
Прекини тренутни долазни позив |
АТ + КОЛП |
Прикажи број долазног позива |
АТ + ВТС = (број) |
Пошаљите ДТМФ број. Можете користити било који број на мобилној тастатури за (број) |
АТ + ЦМГР |
АТ + ЦМГР = 1 чита поруку на првој позицији |
АТ + ЦМГД = 1 |
Избришите поруку на првом месту |
АТ + ЦМГДА = "ДЕЛ АЛЛ" |
Избриши све поруке са СИМ-а |
АТ + ЦМГЛ = "СВЕ" |
Прочитајте све поруке са СИМ-а |
АТ + ЦМГФ = 1 |
Подесите конфигурацију СМС-а. „1“ је само за текстуални режим |
АТ + ЦМГС = “+91 968837КСКСКСКС” > Текст ЦирцуитДигест
|
Овде шаље СМС на одређени број 968837КСКСКСКС. Када видите „>“ почните да уносите текст. Притисните Цтрл + З да бисте послали текст. |
АТ + ЦГАТТ? |
Да бисте проверили Интернет везу на СИМ картици |
АТ + ЦИПСХУТ |
Да бисте затворили ТЦП везу, што значи да прекидате везу са Интернета |
АТ + ЦСТТ = „АПН“, „корисничко име“, „Пасс“ |
Повежите се на ГПРС помоћу АПН и Пасс кључа. Може се добити од мрежног провајдера. |
АТ + ЦИИЦР |
Проверите да ли СИМ картица садржи пакет података |
АТ + ЦИФСР |
Набавите ИП СИМ мреже |
АТ + ЦИПСТАРТ = „ТЦП“, „СЕРВЕР ИП“, „ЛУКА“ |
Користи се за постављање ТЦП ИП везе |
АТ + ЦИПСЕНД |
Ова наредба се користи за слање података на сервер |
Кружни дијаграм:
Дијаграм повезивања за повезивање ГСМ модула са ПИЦ микроконтролером приказан је испод.
Једноставно смо повезали Тк и Рк пинове ГСМ модула са Рк и Тк пиновима ПИЦ МЦУ ПИЦ16Ф877А. Ово ће успоставити серијску везу између оба. Такође, не заборавите на заједничко и ГСМ и ПИЦ модул. Такође смо користили ЛЦД екран да бисмо знали статус нашег ГСМ модула. Када се везе заврше, ваш хардвер ће изгледати као нешто испод.
ПИЦ Перф плоча направљена је за нашу серију ПИЦ туторијала, у којој смо научили како да користимо ПИЦ микроконтролер. Можда ћете се желети вратити на те водиче за ПИЦ микроконтролер користећи МПЛАБКС и КСЦ8 ако не знате како да нарежете програм помоћу Пицкит-а 3, јер ћу прескочити све те основне информације.
Програмирање вашег ПИЦ микроконтролера:
Комплетан програм за овај пројекат налази се на дну овог водича. Овде ћу објаснити неке важне функције и делове кода. Овај програм такође има ЛЦД кодове који потичу од повезивања ЛЦД-а са ПИЦ микроконтролером. Можете да посетите тај водич ако вас занима како ЛЦД може да се користи са ПИЦ микроконтролером.
Као што је раније речено, комуницираћемо између ПИЦ-а и ГСМ-а помоћу АТ наредби путем серијског начина комуникације. Дакле, прво морамо да иницијализујемо комуникациони модул УСАРТ у нашем ПИЦ микроконтролеру помоћу иницијализације _СИМ900 (); функцију. Унутар ове функције декларишемо Тк и РКС пинове и иницијализујемо асинхрони пријем и пренос брзином од 9600 бауд и 8-битним режимом.
// *** Иницијализација УАРТ-а за СИМ900 ** // воид Инитиализе_СИМ900 (воид) {// **** Подешавање И / О пинова за УАРТ **** // ТРИСЦ6 = 0; // ТКС пин постављен као излаз ТРИСЦ7 = 1; // РКС пин постављен као улаз // ________ постављени И / О пинови __________ // / ** Иницијализовати СПБРГ регистар за потребну брзину преноса и подесити БРГХ за брзу брзину преноса ** / СПБРГ = 129; // СИМ900 ради на брзини од 9600 Бауд, тако да 129 БРГХ = 1; // за високу брзину преноса // _________ Крај поставке брзине преноса _________ // // **** **** Омогући асинхрони серијски порт ******* // СИНЦ = 0; // Асинхрони СПЕН = 1; // Омогући пинове серијског порта // _____ Омогућен асинхрони серијски порт _______ // // ** Омогућимо припрему за пренос и пријем ** // ТКСЕН = 1; // омогућити пренос ЦРЕН = 1; // омогућити пријем // __ УАРТ модул уп и спреман за пренос и пријем __ // // ** Изаберите 8-битни режим ** // ТКС9 = 0; // изабрани 8-битни пријем РКС9 = 0;// одабран 8-битни режим пријема // __ одабран 8-битни режим __ //} // ________ УАРТ модул Иницијализован __________ //
Сада морамо читати и писати информације са / на наш ГСМ модул. За ово користимо функције _СИМ900_путцх (), _СИМ900_гетцх (), _СИМ900_сенд_стринг (), _СИМ900_принт (). Ове функције користе регистар међуспремника за пренос и пријем, као што су ТКСРЕГ и РЦРЕГ, за серијско читање или писање података.
// ** Функција за слање једног бајта датума у УАРТ ** // воид _СИМ900_путцх (цхар бт) {вхиле (! ТКСИФ); // задржавамо програм док ТКС бафер не буде слободан ТКСРЕГ = бт; // Учитајте ме успремник предајника са примљеном вредношћу} // _____________ Крај функције ________________ // // ** ** Функција за добијање једног бајта датума из УАРТ-а ** // цхар _СИМ900_гетцх () {иф (ОЕРР) // провера грешке { ЦРЕН = 0; // Ако је грешка -> Ресетуј ЦРЕН = 1; // Ако је грешка -> Ресетуј} вхиле (! РЦИФ); // задржавање програма док РКС бафер не буде слободан повратак РЦРЕГ; // примити вредност и послати је главној функцији} // _____________ Крај функције ________________ // // ** ** Функција за претварање низа у бајт ** // воид СИМ900_сенд_стринг (цхар * ст_пт) {вхиле (* ст_пт) // иф тхере је цхар _СИМ900_путцх (* ст_пт ++);// обрадимо га као бајт податке} // ___________ Крај функције ______________ // // ** Крај модификованих кодова ** // воид _СИМ900_принт (непотписани цонст цхар * птр) {вхиле (* птр! = 0) {_СИМ900_путцх (* птр ++); }
Горе наведене функције су универзалне и не морају се мењати ни за једну апликацију. Објашњено им је само да би дали груби увод. Ако желите, можете дубоко заронити у њих кроз разумевање.
Сада унутар наше главне функције, иницијализујемо УСАРТ везу и проверавамо да ли смо у могућности да примимо „ОК“ када пошаљемо „АТ“ помоћу доњег реда кода
до {Лцд_Сет_Цурсор (2,1); Лцд_Принт_Стринг ("Модул није пронађен"); } вхиле (! СИМ900_исСтартед ()); // сачекајте док ГСМ не пошаље назад "ОК" Лцд_Сет_Цурсор (2,1); Лцд_Принт_Стринг („Откривен модул“); __делаи_мс (1500);
Функција СИМ900_исСтартед (); послаће „АТ“ ГСМ-у и чека одговор „ОК“ од њега. Ако је одговор да, вратиће се 1 елсе 0;
Ако модул није откривен или ако постоји било какав проблем са везом, на ЛЦД-у ће се приказати „Модул није пронађен“, у супротном ће се приказати Модул је откривен и прећи на следећи корак где проверавамо да ли СИМ картицу можете открити доле линија кода.
/ * Проверите да ли је откривена СИМ картица * / до {Лцд_Сет_Цурсор (2,1); Лцд_Принт_Стринг ("СИМ није пронађен"); } вхиле (! СИМ900_исРеади ()); // сачекајте док ГСМ не пошаље назад "+ ЦПИН: СПРЕМАН" Лцд_Сет_Цурсор (2,1); Лцд_Принт_Стринг („Откривен СИМ“); __делаи_мс (1500);
Функција СИМ900_исРеади () ће послати „АТ + ЦПИН?“ на ГСМ и чека одговор „+ ЦПИН: СПРЕМАН“ од њега. Ако је одговор да, вратиће се 1 елсе 0;
Ако СИМ картица буде пронађена, на ЛЦД-у ћемо приказати откривену СИМ картицу. Тада можемо покушати да упутимо позив помоћу команде „ АТД мобиленумбер ; ”. Овде сам као пример користио свој број као АТД93643159КСКС;. Тамо морате заменити одговарајући број мобитела.
/ * Успоставите телефонски позив * / до {_СИМ900_принт ("АТД93643КСКСКСКСКС; \ р \ н"); // Овде упућујемо позив на број 93643КСКСКСКСКС Лцд_Сет_Цурсор (1,1); Лцд_Принт_Стринг ("Успостављање позива…."); } вхиле (_СИМ900_ваитРеспонсе ()! = СИМ900_ОК); // сачекајте док ЕСП не пошаље „ОК“ Лцд_Сет_Цурсор (1,1); Лцд_Принт_Стринг ("Позив упућен…."); __делаи_мс (1500);
Једном када се упути позив, на ЛЦД-у ће се приказати Позив упућен и требали бисте примити долазни позив на тај наведени број.
Такође можете назвати број мобилног телефона повезан на ГСМ модул и добити обавештење о томе на свом ЛЦД екрану и помоћу доњег кода
вхиле (1) {иф (_СИМ900_ваитРеспонсе () == СИМ900_РИНГ) // Провери да ли постоји долазни позив {Лцд_Сет_Цурсор (2,1); Лцд_Принт_Стринг ("Долазни позив !!."); }}
Када ГСМ модул препозна долазни позив, на другој линији ЛЦД модула приказује се Долазни позив. Функција _СИМ900_ваитРеспонсе () ће проверити да ли долазе подаци из ГСМ модула. Када прими СИМ900_РИНГ, што је еквивалентно „РИНГ“ због ваитРеспонце () , приказаћемо статус „Долазни позив“.
Можете креирати сопствене функције попут ове да бисте извршавали готово све врсте активирања помоћу ГСМ модула. Ако желите да ствари буду добро кодиране, можете једноставно да користите функцију __СИМ900_принт () за слање било које АТ команде попут ове доле.
_СИМ900_принт ("АТ + ЦПИН? \ Р \ н");
Имајте на уму да све што наредите треба пратити са „\ р \ н“ да бисте означили да се наредба завршава.
Симулација:
Једном када схватите како програм функционише, можете покушати са симулацијом и извршити промене у складу са вашим потребама. Симулација ће вам уштедети пуно времена. Симулација је изведена помоћу Протеуса и изгледа као у наставку.
Као што видите, користили смо опцију виртуелног терминала у Протеусу да бисмо проверили да ли програм реагује према очекивањима. Вредности можемо да унесемо кроз искачући дијалошки оквир. На пример, чим притиснемо рун, појавиће се црни дијалошки оквир као горе и приказаће АТ, то значи да је послао ГСМ модул АТ, сада можемо одговорити ПИЦ-у тако што ћемо у поље укуцати „ОК“ и притиснути ентер а ПИЦ ће на то одговорити. На сличан начин можемо покушати за све АТ команде.
Упућивање и примање позива користећи ГСМ и ПИЦ:
Једном када схватите како функционишу код и хардвер, једноставно отпремите доњи програм на ПИЦ и укључите модул. Ваш ЛЦД би требао приказати „Откривен модул“, „Откривен је СИМ“ и „Позван је“ ако све ради у реду. Једном када видите „Позив упућен“, примит ћете долазни позив на број наведен у програму.
Такође можете покушати да позовете број који је присутан у ГСМ модулу и на вашем ЛЦД екрану ће се приказати „Долазни позив“ који означава да се СИМ картица позива.
Комплетан рад пројекта приказан је у видео снимку испод. Надам се да сте разумели пројекат и уживали сте у њему. Ако имате било каквих проблема са постизањем резултата, пошаљите своје питање у одељак за коментаре или на наше форуме и радо ћу вам помоћи.