Мазмуну:
- 1 -кадам: Товарды алыңыз
- 2 -кадам: Бөлүктөрдү туташтыруу
- 3 -кадам: Кодду жазыңыз
- 4 -кадам: Код жана коштошуу
Video: AVR/Arduino RFID Reader UART коду менен C: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:44
RFID - бул бардык жерде - инвентаризация системасынан төш белгинин тутумуна чейин. Эгер сиз качандыр бир универмагга барып, кирүү/чыгуу пункттарындагы металл детекторуна окшош нерселерди аралап жүргөн болсоңуз, анда сиз RFIDди көрдүңүз. RFIDди орнотуу боюнча жакшы маалыматты таба турган бир нече жерлер бар жана бул көрсөтмө Parallax RFID окурманын (Serial TTL) AVRге орнотууга багытталган, сериялык кирүүнү окуу үчүн керектүү C кодуна басым жасалат. Код С тилинде жана эч кандай тышкы китепканаларды колдонбойт. Чындыгында, UARTди колдонбостон 2400 baud сүйлөйт, RFID окурмандын берүү ылдамдыгына синхрондошуу жана ал туташкан санарип пинди окуу. Толкундандыңызбы? Мага да.
1 -кадам: Товарды алыңыз
Сизге бөлүктөрдүн төмөнкү тизмеси керек болот:
- RFID Reader (Parallax #28140 $ 39.99)
- RFID теги (Parallax #32397 $ 0.99)
- AVR же Arduino клону (эгер сиз AVR фондун колдонсоңуз, сизге дагы max232, 5 x 1uF конденсаторлор жана DE9 туташтыргычы керек болот)
- Лансыз нан
Милдеттүү эмес
- 4 позиция башы
- Зым
(жана max232 ж.б тег маалыматы үчүн) Сиз RS232 аркылуу теги маалыматтарды жөнөтүүнүн ордуна сүйүктүү ЖК экранды туташтыра аласыз.
2 -кадам: Бөлүктөрдү туташтыруу
Нерселердин аппараттык жагы абдан оңой. RFID окурманымды түз эле нан табакка киргизүүнүн ордуна, мен RFID окурманын бир аз жакшыраак жылдыруу үчүн тез кабель жасоону чечтим. Бул үчүн, мен жөн эле жаткан жана 3 зымга ширетилген аялдык розеткадан 4 позицияны кесип салдым. Электр лентасы гетто коннекторун бүтүрдү. RFID окурманы 4 байланышка ээ:
- Vcc
- ЖАНЫТУУ
- ЧЫГЫП
- Gnd
Сиз болжогондой, Vccти +5V менен Gndди жерге туташтырыңыз. RFID окурманы ушунчалык көп энергия керектегендиктен, аны өчүрүп -күйгүзүү үчүн ENABLE пинди ар кандай аралыкта жарып коюңуз. Мен жөн эле улантууну чечтим. Ал тескери болгондуктан, аны активдештирүү үчүн ТӨМӨН тартыңыз. Же болбосо, аны жерге туташтырсаңыз болот. Мен аны PIND3 менен туташтырдым, эгер мен чечим кабыл алсам, иштетүү/өчүрүү параметрлерин берем. OUT пин окурман тегин окугандан кийин сериялык маалыматын жөнөтөт. Мен аны PIND2ге туташтырдым. Эскертүү, Параллакс Ааламында кызыл барууну билдирет. Башкача айтканда, жашыл LED бирдиги иштебей турганын жана бош турганын билдирет, ал эми кызыл LED бирдиги активдүү экенин билдирет. * ийин куушуруу* Фигурага өтүү.
3 -кадам: Кодду жазыңыз
RFID окурмандын маалыматын окуу үчүн, сиз теги качан тапшырылганын билишиңиз керек, маалыматтарды сериялык порттон сууруп алып, анан бир жерге жөнөтүңүз.
RFID Reader маалымат форматы
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-bitти орнотууISR кыска болгуңуз келет, ошондуктан менин үзгүлтүк векторумда мен бүт байтты аз -аздан окуп, байтты глобалдык туруксуз символдор массивинде сактайм. Мен ар бир үзгүлтүктө төмөнкүлөрдү кылам:
- Баштоодо экенимди текшериңиз
- Убакытты ортоңку импульстун борборуна 2400 bod (RFID окурмандын ылдамдыгы)
- Баштоо битин өткөрүп жиберип, кийинки биттин ортосуна тыныгуу
- Ар бир битти белгисиз бүтүн санга окуңуз
- Менде 8 бит болгондо, байтты символдор массивине кой
- Мен 12 байт чогулткандан кийин, MCUга ката табуу үчүн теги окулганын билдириңиз.
Мен сериалдык процесстердин эксперименталдык түрдө аныкталган кечигүүлөрү үчүн Дэвид Меллистин кодун өзгөрткөн Микал Харттан SoftSerial кодун өзгөрттүм.
RS232 Чыгуусун талдоо
PCINT тартиби RFID окуучусунан RS232 чыгарылышын окуу үчүн кодду камтыйт. Мен 12 байтка ээ болгондо (10 байт RFID плюс поселкалары) bDataReady'ди 1ге коюп, негизги цикл маалыматтарды иштетип, аны көрсөтүүгө мүмкүнчүлүк берет.
// бул үзгүлтүк иштетүүчүISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Баштоо битинин кирешеси төмөн; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Баштоо битинин борбору (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // бир аз өткөрүп жибер, тууган… if (BCHK (PIND, RFID_IN)) BSET (bit, 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 ("Start byte:"); 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 Tag:"); үчүн (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. Эгерде сиз башка саат жыштыгында иштеп жаткан болсоңуз, анда эксперименталдык түрдө бауд импульсунун борборуна коюлган жөндөлгөн кечигүүлөрдү аныктооңуз керек болот. Эгерде сизде аны жакшыртуу боюнча кандайдыр бир сунуштар болсо, мага тартынбаңыз!
Сунушталууда:
Морзе коду менен 2 тамга менен сөз үйрөнүүчү: 5 кадам
Морзе коду менен 2 тамга менен сөз үйрөнүүчү: Мен Scrabble (tm) 2 тамгадан турган сөздөрдү үйрөнүүгө аракет кылып келе жатам, бирок ийгиликке жете элек. Мен дагы бир аз ийгилик менен Морзе кодун үйрөнүүгө аракет кылып келе жатам
Lock Changer: QR-коду менен ачык эшик: 8 кадам
Lock Changer: Open Door with QR-code: Саламатсызбы, менин атым Ben Vanpoucke жана мен Кортрихте (Бельгия) Howestте New Media жана коммуникация технологиясын окуйм. Мектепке тапшырма катары биз IoT түзмөгүн жасашыбыз керек болчу. Airbnb аркылуу батирлерди ижарага алып, мага аппарат ачуу идеясы келди
Электрондук шахмат тактасынын 4x4 демосу/ Arduino Mega + RFID Reader + Холл эффекти сенсорлору менен: 7 кадам
Электрондук шахмат тактасынын 4x4 демосу/ Arduino Mega + RFID Reader + Холл эффекти сенсорлору менен: Саламатсыздарбы, мен Тахир Мириевмин, Жакынкы Чыгыш Техникалык Университетинин 2018-жылкы бүтүрүүчүсү, Анкара/ Түркия. Мен прикладдык математика адистигине ээ болчумун, бирок мен ар дайым буюмдарды жасаганды жакшы көрчүмүн, айрыкча ал электроника, дизайн жана программалоо менен кол эмгектерин камтыйт
[Arduino Robot] Кыймылдуу роботту кантип жасоо керек - Бармак робот - Servo Motor - Булак коду: 26 кадам (Сүрөттөр менен)
[Arduino Robot] Кыймылдуу роботту кантип жасоо керек | Бармак робот | Servo Motor | Булак коду: Thumbs Robot. MG90S серво моторунун потенциометрин колдонгон. Бул абдан кызыктуу жана оңой! Код абдан жөнөкөй. Бул болгону 30 линиянын тегерегинде. Сураныч, кандайдыр бир сурооңузду же пикириңизди калтырыңыз! [Instruction] Source Code https: //github.c
Сигнал коду байланышчылары (RFM69): 7 кадам (сүрөттөр менен)
Signal Code Communicators (RFM69): Бул "2-биттик" (санариптик) радио коммуникаторлор чоң куту дүкөнүнүн карама-каршы четинен соода кылууда бири-бирине сигнал берүүчү каражатты камсыздашат (алар кайда, эгерде алар…); уюлдук телефондордо кызмат жок же уюлдук батарея жок болсо дагы