Мазмұны:

UR коды бар AVR/Arduino RFID оқу құралы: 4 қадам
UR коды бар AVR/Arduino RFID оқу құралы: 4 қадам

Бейне: UR коды бар AVR/Arduino RFID оқу құралы: 4 қадам

Бейне: UR коды бар AVR/Arduino RFID оқу құралы: 4 қадам
Бейне: Уроки Arduino. Работа с EEPROM памятью 2024, Қараша
Anonim
UR коды бар AVR/Arduino RFID оқу құралы
UR коды бар AVR/Arduino RFID оқу құралы

RFID - бұл барлық жерде - түгендеу жүйесінен таным белгісінің жүйесіне дейін кездесетін ақылсыздық. Егер сіз әмбебап дүкенде болсаңыз және кіру/шығу нүктелерінде металл іздейтін заттарды аралап көрген болсаңыз, онда сіз RFID-ті көрдіңіз. RFID орнату туралы жақсы ақпаратты табуға болатын бірнеше орын бар және бұл нұсқаулық параллакс RFID оқу құралын (Serial TTL) AVR -ге орнатуға бағытталған, бұл ретте сериялық кірісті оқу үшін қажет C кодына баса назар аударылады. Код С -да және ешқандай сыртқы кітапханаларды пайдаланбайды. Шын мәнінде, UART қолданбай, RFID оқырманының жіберу жылдамдығына синхрондау және ол қосылған цифрлық түйреуішті оқу арқылы 2400 бауд туралы тікелей сөйлейді. Көңілді ме? Мен де.

1 -қадам: тауарды алыңыз

Тауарды алыңыз
Тауарды алыңыз

Сізге келесі бөліктер тізімі қажет:

  • RFID оқу құралы (Параллакс № 28140 $ 39.99)
  • RFID тегі (Parallax #32397 $ 0.99)
  • AVR немесе Arduino клоны (егер сіз AVR қорын қолдансаңыз, сізге max232, 5 x 1uF конденсаторлар мен DE9 қосқышы қажет)
  • Дәнекерленбеген нан тақтасы

Қосымша

  • 4 позиция тақырыбы
  • Сым

(және тегтер туралы ақпаратты жіберу үшін max232 және т.б.) Сіз RS232 арқылы тегтік деректерді жіберудің орнына сүйікті СКД экранды қоса аласыз.

2 -қадам: бөлшектерді қосыңыз

Бөлшектерді қосыңыз
Бөлшектерді қосыңыз
Бөлшектерді қосыңыз
Бөлшектерді қосыңыз
Бөлшектерді қосыңыз
Бөлшектерді қосыңыз

Заттардың аппараттық жағы өте оңай. RFID оқу құралын тікелей тақтаға салудың орнына мен RFID оқу құралын сәл жақсырақ жылжыту үшін тез кабельді таңдадым. Ол үшін мен жай ғана жатқан және үш сымға дәнекерленген аналық розеткадан 4 позицияны қысқарттым. Электрлік таспа гетто коннекторын аяқтады. RFID оқу құрылғысында 4 байланыс бар:

  • Vcc
  • ҚОСУ
  • ШЫҚТЫ
  • Gnd

Сіз болжаған боларсыз, Vcc -ты +5V -ге, ал Gnd -ді жерге қосыңыз. RFID оқу құралы өте көп энергияны тұтынатындықтан, оны әр түрлі уақытта өшіру және қосу үшін ENABLE түйреуішін жаруға болады. Мен оны жалғастыруды таңдадым. Ол төңкерілгендіктен, оны іске қосу үшін ТӨМЕН тартыңыз. Немесе оны жерге қосуға болады. Мен PIND3 -ке қосылдым, егер мен шешкен болсам, қосу/өшіру опцияларын беремін. OUT пині - бұл оқырман тегті оқығаннан кейін сериялық деректерді жіберетін жер. Мен оны PIND2 -ге қостым. Ескертпе, Параллакс Ғаламында қызыл түс жүруді білдіреді. Яғни, жасыл жарық диоды құрылғының белсенді емес екенін көрсетеді, ал қызыл жарық диоды құрылғының белсенді екенін білдіреді. * иығын көтеру* Фигураға өту.

3 -қадам: кодты жазыңыз

Кодты жазыңыз
Кодты жазыңыз

Деректерді RFID оқу құралынан оқу үшін сіз тегтің жіберілгенін білуіңіз керек, деректерді сериялық порттан алып тастаңыз, содан кейін оны бір жерге жіберіңіз.

RFID оқу құралының деректер пішімі

Parallax RFID оқу құралы деректерді тұрақты, мұздық қарқынмен 2400 байт жібереді. RFID тегі 10 байтты құрайды. Оқырман кездейсоқ шуылдан өшірілуі мүмкін болғандықтан, қатені анықтауға/түзетуге мүмкіндік беру үшін 10 байтты RFID старт пен тоқтату күзетімен шектеледі. Бастапқы күзетші - желілік беріліс (0x0A), ал тоқтату - каретканың оралуы (0x0D). Бұл келесідей көрінеді:

[Бастау күзет | Байт 1 | Байт 2 | Байт 3 | Байт 4 | Байт 5 | Байт 6 | Байт 7 | Байт 8 | Байт 9 | Байт 10 | Қарауылды тоқтату]Бұл үш негізгі қадам.

Белгінің қашан жіберілгенін біліңіз

Мен AVR -де түйреуішті өзгерту үзілісін қолдандым, ол микробағдарламаға бақыланатын түйреуіште өзгеріс болғанын хабарлайды. Бұл үшін AVR -ды конфигурациялау оңай және жалаушаны орнатуды, MCU -ге қай түйреуішті бақылағыңыз келетінін айтуды және жаһандық үзіліс битін орнатуды қажет етеді. PCINT теңшеу

BSET (PCICR, PCIE2); // түйреуішті өзгерту үзілісті бақылау регистрі pcie2 BSET (PCMSK2, PCINT18); // PCINT18 (PD2) BSET (SREG, 7) үшін түйін ауыстыру үзілісін қосу; // SREG I-битін орнатыңызҮзіліс қызметінің тәртібін жазыңыз Сіз ISR -ді қысқа сақтағыңыз келеді, сондықтан менің үзіліс векторында мен байтты біртіндеп оқып шығамын және байтты жаһандық тұрақсыз таңбалар массивінде сақтаймын. Мен әр үзілісте келесі әрекеттерді орындаймын:

  • Бастапқыда екенімді тексеріңіз
  • Ортаңғы импульске уақытты 2400 байтқа қойыңыз (RFID оқу жылдамдығы)
  • Бастау битін өткізіп жіберіп, келесі биттің ортасына кідіріңіз
  • Әр битті белгісіз бүтін санға оқыңыз
  • Менде 8 бит болған кезде байтты таңбалар массивіне қойыңыз
  • Мен 12 байт жинаған кезде, MCU -ге тегті қатені анықтау үшін оқылғанын хабарлаңыз.

Мен сериялық процедуралардың эксперименталды түрде анықталған кідірістері үшін Дэвид Меллис кодын өзгерткен Микал Харттың SoftSerial кодын өзгерттім.

RS232 шығысын талдау

PCINT процедурасы RFID оқу құралынан RS232 шығысын оқуға арналған кодты қамтиды. Мен 12 байтты (10 байтты RFID плюс жіберушілер) алған кезде, bDataReady параметрін 1 етіп қойдым және негізгі цикл деректерді өңдеуге және оны көрсетуге мүмкіндік береді.

// бұл үзіліс өңдегішіISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Бастау биті төмен қайтарымдылыққа түседі; uint8_t бит = 0; TunedDelay (CENTER_DELAY); // (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // сәл өткізіп жіберіңіз, ағайын… if (BCHK (PIND, RFID_IN)) BSET (бит, x); else BCLR (бит, x); } TunedDelay (INTRABIT_DELAY); // өткізгішті тоқтату биті RFID_tag [rxIdx] = бит; ++ rxIdx; егер (rxIdx == 12) bDataReady = 1;}

Сіздің тегіңізді көрсетіңіз

Main () ішінде for (ever) циклі кезінде мен RFID құрылымының барлығы жіберілгенін білдіретін bDataReady орнатылғанын тексеремін. Содан кейін мен оның жарамды тег екенін тексеремін (яғни бастапқы және тоқтату таңбалары тиісінше 0x0A және 0x0D), егер солай болса, мен оны RS232 байланысын жіберемін.

for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S («Бастау байты:»); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S («\ nБайтты тоқтат:»); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S («\ nRFID тэгі:»); үшін (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); егер (x! = 10) USART_tx (& apos: & apos); } USART_tx_S («\ n»); } rxIdx = 0; bDataReady = 0; }}

4 -қадам: код және қоштасу

Бұл бетте тиісті коды бар zip файлы бар. Ол AVR Studio 4.16 нұсқасында жазылған. Егер сіз бағдарламашы блокнотын, тұтылуды немесе vi (немесе басқа нәрсені) қолдансаңыз, сенімді Makefile файлын каталогқа көшіріп, осы файлдарды бастапқы жолға қосуыңыз қажет, сонымен қатар сериялық оқу бөлімінің уақыты 16 МГц MCU. Егер сіз басқа сағат жиілігінде жұмыс жасасаңыз, онда жылдамдық импульстерін орталықтандырудың реттелген кідірістерін эксперименталды түрде анықтау қажет болады. Егер сізде оны қалай жақсартуға болатыны туралы ұсыныстарыңыз болса, маған хабарлаудан тартынбаңыз!

Ұсынылған: