Знамо у канцеларијама, тржним центрима и на многим другим местима где само особа са ауторизационом картицом сме да уђе у собу. Ови системи користе РФИД комуникациони систем. РФИД се користи у тржним центрима за заустављање крађе јер су производи означени РФИД чипом, а када особа напусти зграду са РФИД чипом аутоматски се укључује аларм. РФИД ознака дизајнирана је тако мала као део песка. РФИД системи за потврду идентитета лако се пројектују и јефтини су. Неке школе и факултети данас користе РФИД системе похађања наставе.
У овом пројекту ћемо израдити РФИД систем наплате путарине из безбедносних разлога. Дакле, овај систем отвара врата и омогућава људима само са овлашћеним РФИД ознакама. Овлашћени ИД држача ознака програмирани су у АТМЕГА микроконтролеру и само они власници смеју да напусте или уђу у просторије.
Компоненте потребне
Хардвер: АТмега32 микроконтролер, напајање (5в), АВР-ИСП програмер, ЈХД_162АЛЦД (ЛЦД модул 16к2), кондензатор 100уФ (повезан преко напајања), дугме, отпорник 10КΩ, кондензатор 100нФ, ЛЕД (два комада), ЕМ-18 (два комада) РФИД модул читача), ИЦ управљачки програм мотора Л293Д, 5В једносмерни мотор.
Софтвер: Атмел студио 6.1, прогисп или фласх магиц.
Шема и радно објашњење
У горе приказаном кругу система за наплату путарине РФИД, ПОРТА од АТМЕГА32 повезан је на податковни порт ЛЦД-а. Овде треба имати на уму да онемогућимо ЈТАГ комуникацију у ПОРТЦ-у у АТМЕГА променом бајтова осигурача, ако желимо да користимо ПОРТЦ као нормалан комуникациони порт. На ЛЦД екрану од 16к2 има 16 пинова ако постоји позадинско светло, а ако нема позадинског светла, биће 14 пинова. Можемо напајати или остављати игле за позадинско светло. Сада у 14 пинова постоји 8 пинова за податке (7-14 или Д0-Д7), 2 пина за напајање (1 и 2 или ВСС & ВДД или гнд & + 5в), трећи пин за контролу контраста (ВЕЕ-контролише колико је дебела треба да буду приказани знакови), 3 контролна пина (РС & РВ & Е).
У кругу можете приметити да сам узео само два контролна клина. Ово даје флексибилност бољег разумевања. Контрастни бит и РЕАД / ВРИТЕ се не користе често, тако да могу бити кратко спојени на масу. Ово ЛЦД поставља у највећи контраст и режим читања. Само треба да контролишемо ЕНАБЛЕ и РС пинове да би у складу са тим слали знакове и податке.
Прикључци који су направљени за ЛЦД, дати су у наставку:
ПИН1 или ВСС на масу
ПИН2 или ВДД или ВЦЦ до + 5в снаге
ПИН3 или ВЕЕ на земљу (даје максимални контраст најбољи за почетнике)
ПИН4 или РС (Избор регистра) за ПД6 МЦУ-а
ПИН5 или РВ (читање / писање) на масу (ставља ЛЦД у режим читања олакшава комуникацију за корисника)
ПИН6 или Е (Омогући) за ПД5 микроконтролера
ПИН7 или Д0 до ПА0
ПИН8 или Д1 до ПА1
ПИН9 или Д2 до ПА2
ПИН10 или Д3 до ПА3
ПИН11 или Д4 до ПА4
ПИН12 или Д5 до ПА5
ПИН13 или Д6 до ПА6
ПИН14 или Д7 до ПА7
У кругу видите да смо користили 8-битну комуникацију (Д0-Д7). Међутим, ово није обавезно и можемо користити 4-битну комуникацију (Д4-Д7), али са 4-битним комуникацијским програмом постаје помало сложен, па сам више волео 8-битну комуникацију.
Тако из пуког посматрања горње табеле повезујемо 10 пинова ЛЦД-а на контролер у којем су 8 пинова пинови за податке и 2 пина за контролу.
Пре него што кренемо напред, морамо да разумемо серијску комуникацију. РФИД модул овде серијски шаље податке контролору. Има и други начин комуникације, али за лакшу комуникацију бирамо РС232. РС232 пин модула је повезан са РКСД пином АТМЕГА.
Подаци које РФИД модул шаље:
Сада су за интерфејс РФИД модула потребне следеће функције:
1. РКСД пин (функција пријема података) контролера мора бити омогућен.
2. Будући да је комуникација серијска, морамо знати сваки пут када се прими дата бие, како бисмо могли зауставити програм док се не прими комплетан бајт. То се постиже омогућавањем да подаци примају потпуни прекид.
3. РФИД шаље податке контролору у 8-битном режиму. Дакле, два знака ће се истовремено слати контролору. Ово је приказано на горњој слици.
4. На горњој слици нема битова паритета, један зауставни бит у подацима које шаље модул.
Горе наведене карактеристике постављене су у регистре контролера; разговараћемо о њима укратко,
ЦРВЕНО (РКСЕН): Овај бит представља функцију пријема података. Овај бит мора бити подешен за податке из модула који ће примати контролер. Такође омогућава РКСД пин контролера.
СМЕЂА (РКСЦИЕ): Овај бит мора бити подешен за добијање прекида након успешног пријема података. Омогућавањем овог бита упознајемо се одмах након пријема 8-битних података.
ПИНК (УРСЕЛ): Овај бит мора бити постављен пре омогућавања осталих битова у УЦСРЦ. Након подешавања, остали потребни битови у УЦСРЦ, УРСЕЛ морају бити онемогућени или стављени на нулу.
ЖУТА (УЦСЗ0, УЦСЗ1, УЦСЗ2): Ова три бита се користе за одабир броја битова података које примамо или шаљемо у једном потезу.
Будући да подаци које шаље РФИД модул имају 8-битни тип података, морамо поставити УЦСЗ0, УЦСЗ1 на један, а УЦСЗ2 на нулу.
НАРАНЧАСТА (УМСЕЛ): Овај бит се поставља на основу тога да ли систем комуницира асинхроно (оба користе другачији сат) или синхроно (оба користе исти сат).
Будући да модул и контролер користе другачији сат, овај бит мора бити постављен на нулу или остављен сам јер су сви подразумевано подешени на нулу.
ЗЕЛЕНО (УПМ1, УПМ0): Ова два бита су прилагођена на основу паритета битова који користимо у комуникацији.
Будући да РФИД модул шаље податке без паритета, поставили смо и УПМ1, УПМ0 на нулу или их можемо оставити саме јер су сви битови у било којем регистру подразумевано постављени на нулу.
ПЛАВО (УСБС): Овај бит се користи за одабир броја зауставних битова које користимо током комуникације.
Будући да РФИД модул шаље податке једним зауставним битом, само морамо да оставимо УСБС бит на миру.
Сада коначно треба да подесимо брзину преноса, из горње слике је јасно да РФИД модул шаље податке контролору са брзином преноса од 9600 бпс (бита у секунди).
Брзина преноса података подешава се у контролеру избором одговарајућег УБРРХ.
Вредност УБРРХ се бира на основу брзине преноса са референтном брзином и фреквенције кристала ЦПУ-а, тако да се на основу УБРР вредности укрштања види '6', и тако је постављена брзина преноса.
Сада је приказано на слици, два пина из контролера иду на Л293Д, који је Х-МОСТ који се користи за контролу брзине и смера ротације код једносмерних мотора мале снаге.
Л293Д је Х-БРИДГЕ ИЦ дизајниран за погон једносмерних мотора мале снаге и приказан је на слици, овај ИЦ се састоји од два х-моста и тако може да вози два ДЦ мотора. Дакле, овај ИЦ се може користити за погон робот-мотора од сигнала микроконтролера.
Као што је претходно дискутовано, овај ИЦ има могућност промене правца ротације једносмерног мотора. То се постиже контролом нивоа напона на ИНПУТ1 и ИНПУТ2.
Омогући пин |
Улазни пин 1 |
Улазни пин 2 |
Смер мотора |
Хигх |
Ниска |
Хигх |
Скрените десно |
Хигх |
Хигх |
Ниска |
Скрените лево |
Хигх |
Ниска |
Ниска |
Зауставити |
Хигх |
Хигх |
Хигх |
Зауставити |
Дакле, као што је приказано у горњој табели, за ротацију у смеру са сатом 2А треба да буде висока, а 1А ниска. Слично томе, за смер у смеру казаљке на сату 1А треба да буде висок, а 2А низак.
Кад год се овлашћена картица приближи модулу, мотор се програмира да се секунду креће у смеру казаљке на сату, показујући да се отвор за наплату отвара након секунде када се врати, говорећи да је врата за наплату затворена. Рад наплатне рампе најбоље је објаснити у кораку по кораку наведеном у наставку.
Објашњење програмирања
Испод је објашњење реда за линију кода РФИД система наплате путарине. Можете схватити концепт и рад овог пројекта читајући доњи код. Да бисте преузели или копирали, комплетни код можете пронаћи на дну странице.
#инцлуде // заглавље да би се омогућила контрола протока података над пиновима
#дефине Ф_ЦПУ 1000000 // припојена кристална фреквенција контролера
#инцлуде
#дефине Е 5 // давање имена „енабле“ петом пину ПОРТД-а, јер је повезан са пином за омогућавање ЛЦД-а
#дефине РС-6 // даје име "регистерселецтион" до 6 тх пин на ПОРТД, јер је повезан са пин ЛЦД РС
воид сенд_а_цомманд (непотписана наредба цхар);
воид сенд_а_цхарацтер (непотписани знак карактера);
воид сенд_а_стринг (цхар * стринг_оф_цхарацтерс);
инт маин (воид)
{
ДДРА = 0кФФ; // стављање порта као излазних пинова
ДДРД = 0б11111110;
_делаи_мс (50); // давање кашњења од 50мс
ДДРБ = 0б11110000; // Узимање неких портБ пинова као улаза.
УЦСРБ - = (1 <
УЦСРЦ - = (1 <
УЦСРЦ & = ~ (1 <
УБРРХ & = ~ (1 <
УБРРЛ = 6; // подешавање брзине преноса // Следеће садржи ИД ознака, оне се морају променити за различите ознаке. Морају се ажурирати да би пројекат функционисао
/ * Након избацивања програма у контролер морате узети картице које морају бити ауторизоване и добити ИД ознаке. Добија се стављањем ознаке близу РФИД модула и ИД ће бити приказан на екрану. Након добијања ИД-а, програм се мора ажурирати заменом доле наведених ИД бројева новим ИД бројевима.
цхар АДМИТ = {{(0к97), (0ка1), (0к90), (0к92)}, {(0к97), (0ка1), (0к90), (0к93)}, {(0к97), (0ка1), (0к90), (0к94)}, {(0к97), (0ка1), (0к90), (0к95)}, {(0к97), (0ка1), (0к90), (0к96)}}; |
Сада горе одобравамо само пет карата, које се могу променити у било који број.
На пример, узмите у обзир да је задати програм избачен у контролер, набавите картице које би требале бити ауторизоване. Поставите један за другим близу модула, за сваки ћете добити ИД као кккккккк (907а4Ф87), Ако имамо 7 ознака које имамо, тада ћемо имати 7 осмобитних ИД-а. * /
// сада за седам карата то иде као // цхар АДМИТ = {{(0к90), (0к7а), (0к4Ф), (0к87)},; // додељивање меморије за приказ ИД-а који шаље модул инт и = 0; инт глас = 0; инт к = 0; сенд_а_цомманд (0к01); // Обриши екран 0к01 = 00000001 _делаи_мс (50); сенд_а_цомманд (0к38); // кажемо лцд-у да користимо 8-битни режим команди / података _делаи_мс (50); сенд_а_цомманд (0б00001111); // ЛЦД ЕКРАН УКЉУЧЕН и индикатор трепери цхар МЕМ; // додељивање меморије за чување комплетног ИД ознаке сенд_а_стринг ("РФИД БРОЈ"); // слање низа сенд_а_цомманд (0к80 + 0к40 + 0); // премештање курсора у други ред док (1) { вхиле (! (УЦСРА & (1 <
{ } ТАЧКА = УДР; // УДР чува примљене осмобитне податке и узима се у цео број. МЕМ = ТАЧКА; // прва два знака се ажурирају у меморију итоа (ЦОУНТА, СХОВА, 16); // наредба за стављање променљивог броја у ЛЦД (променљиви број, који знак треба заменити, која је основа променљива (овде десет, јер рачунамо број у басе10)) сенд_а_стринг (СХОВА); // казивање дисплеју да покаже карактер (замењен променљивим бројем) друге особе након постављања курсора на ЛЦД вхиле (! (УЦСРА & (1 <
{ } ТАЧКА = УДР; итоа (ЦОУНТА, СХОВА, 16); сенд_а_стринг (СХОВА); МЕМ = ТАЧКА; // трећи и четврти знак се ажурирају у меморију вхиле (! (УЦСРА & (1 <
{ } ТАЧКА = УДР; итоа (ЦОУНТА, СХОВА, 16); сенд_а_стринг (СХОВА); МЕМ = ЦОУНТА; // пети и шести знак се ажурирају у меморију вхиле (! (УЦСРА & (1 <
{ } ТАЧКА = УДР; итоа (ЦОУНТА, СХОВА, 16); сенд_а_стринг (СХОВА); МЕМ = ЦОУНТА; // седми и осам знакова се ажурирају у меморију сенд_а_стринг (""); сенд_а_цомманд (0к80 + 0к40 + 0); УЦСРБ & = ~ (1 <
за (и = 0; и <5; и ++) { ако је ((МЕМ == ДОДАТИ) & (МЕМ == ДОПУСТИТИ) & (МЕМ == ДОПУСТИТИ) & (МЕМ == ДОПУСТИТИ)) {// провера ауторизације купујем упоређујући два знака истовремено са знаковима у меморији ПОРТБ - = (1 <
ПОРТБ & = ~ (1 <
_делаи_мс (220); // кашњење _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); ПОРТБ - = (1 <
ПОРТБ & = ~ (1 <
_делаи_мс (220); _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); _делаи_мс (220); ПОРТБ & = ~ (1 <
ПОРТБ - = (1 <
} } УЦСРБ - = (1 <
} } воид сенд_а_цомманд (непотписана наредба цхар) { ПОРТА = наредба; ПОРТД & = ~ (1 <
ПОРТД - = 1 <
_делаи_мс (50); ПОРТД & = ~ 1 <
ПОРТА = 0; } воид сенд_а_цхарацтер (непотписани знак карактера) { ПОРТА = карактер; ПОРТД - = 1 <
ПОРТД - = 1 <
_делаи_мс (50); ПОРТД & = ~ 1 <
ПОРТА = 0; } воид сенд_а_стринг (цхар * стринг_оф_цхарацтерс) { вхиле (* стринг_оф_цхарацтерс> 0) { сенд_а_цхарацтер (* стринг_оф_цхарацтерс ++); } } |