فهرست مطالب:
- مرحله 1: کالاها را دریافت کنید
- مرحله 2: قطعات را وصل کنید
- مرحله 3: کد را بنویسید
- مرحله 4: کد و خداحافظی
تصویری: AVR/Arduino RFID Reader با کد UART در C: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:59
RFID شگفت انگیزی است که در همه جا یافت می شود - از سیستم های موجودی گرفته تا سیستم های شناسه نشان. اگر تا به حال به یک فروشگاه بزرگ رفته اید و در نقاط ورودی/خروجی آن چیزهای فلزیاب را دنبال کرده اید ، RFID را دیده اید. چندین مکان برای یافتن اطلاعات خوب در مورد راه اندازی RFID وجود دارد و این دستورالعمل بر نصب RFID خوان Parallax (Serial TTL) بر روی AVR با تأکید بر کد C مورد نیاز برای خواندن ورودی سریال متمرکز است. کد به زبان C است و از هیچ کتابخانه خارجی استفاده نمی کند. در حقیقت ، با همگام سازی با سرعت baud خواننده RFID و خواندن پین دیجیتالی که به آن متصل است ، بدون استفاده از UART مستقیماً 2400 باود صحبت می کند. برانگیخته؟ من هم همینطور.
مرحله 1: کالاها را دریافت کنید
شما به لیست قطعات زیر نیاز دارید:
- RFID Reader (اختلاف منظر #28140 39.99 دلار)
- برچسب RFID (اختلاف منظر #32397 0.99 دلار)
- کلون AVR یا Arduino (اگر از AVR انبار استفاده می کنید ، به یک خازن max232 ، 5 x 1uF و یک اتصال DE9 نیز نیاز دارید)
- تخته نان بدون لحیم
اختیاری
- هدر 4 موقعیتی
- سیم
(و max232 و غیره برای ارتباط اطلاعات برچسب) همچنین می توانید به جای ارسال داده های برچسب از طریق RS232 ، صفحه LCD مورد علاقه خود را متصل کنید.
مرحله 2: قطعات را وصل کنید
جنبه سخت افزاری کارها بسیار آسان است. به جای اینکه خواننده RFID را مستقیماً در تخته نان قرار دهم ، تصمیم گرفتم یک کابل سریع بسازم تا بتوانم خواننده RFID را کمی بهتر جابجا کنم. برای انجام این کار ، من فقط 4 موقعیت را از نوار هدر سوکت زنانه ای که روی آن دروغ گفته بودم جدا کردم و روی سه سیم لحیم کردم. نوار برقی اتصال گتو را تکمیل کرد. خواننده RFID دارای 4 اتصال است:
- Vcc
- فعال کردن
- بیرون
- Gnd
همانطور که احتمالاً حدس زده اید ، Vcc را به +5V و Gnd را به زمین وصل کنید. از آنجا که خواننده RFID قدرت زیادی مصرف می کند ، می توانید پین ENABLE را بکشید تا در فواصل مختلف خاموش و روشن شود. من به سادگی تصمیم گرفتم آن را ادامه دهم. چون معکوس است ، آن را LOW می کشید تا فعال شود. متناوبا ، می توانید آن را به زمین وصل کنید. من آن را به PIND3 متصل کردم تا در صورت تصمیم گزینه های فعال یا غیرفعال کردن را در اختیار من قرار دهد. پین OUT جایی است که خواننده پس از خواندن برچسب ، داده های سریال خود را ارسال می کند. من آن را به PIND2 متصل کردم. توجه داشته باشید ، در جهان اختلاف منظر ، قرمز به معنی رفتن است. یعنی یک LED سبز به این معنی است که واحد غیرفعال و بیکار است ، در حالی که یک LED قرمز به این معنی است که واحد فعال است. * بالا انداختن شانه* رفتن به شکل.
مرحله 3: کد را بنویسید
برای خواندن داده های خواننده RFID ، باید بدانید چه زمانی برچسب ارسال شده است ، داده ها را از پورت سریال خارج کرده ، سپس به جایی ارسال کنید.
فرمت داده RFID Reader
خواننده RFID Parallax داده ها را با سرعت ثابت و یخبندان 2400 باود ارسال می کند. برچسب RFID 10 بایت است. به منظور امکان تشخیص/تصحیح خطا ، از آنجا که خواننده می تواند از سر و صدای تصادفی خارج شود ، RFID 10 بایت توسط نگهبان شروع و توقف محدود می شود. نگهبان شروع تغذیه خط (0x0A) و نگهبان نگهدار بازگشت کالسکه (0x0D) است. به نظر می رسد اینطور است:
[Start Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | نگهبان را متوقف کنید]این سه مرحله اولیه است.
بدانید چه زمانی برچسب ارسال شده است
من از یک تغییر پین تغییر در AVR استفاده می کنم که به سیستم عامل اطلاع می دهد که تغییری در یک پین تحت نظارت رخ داده است. پیکربندی AVR برای این کار آسان است و نیاز به تنظیم پرچم ، گفتن MCU روی کدام پین می خواهید نظارت داشته باشید و تنظیم بیت وقفه جهانی. پیکربندی PCINT
BSET (PCICR ، PCIE2) ؛ // تغییر پین تغییر کنترل کنترل وقفه pcie2 BSET (PCMSK2 ، PCINT18) ؛ // فعال کردن وقفه تغییر پین برای PCINT18 (PD2) BSET (SREG ، 7) ؛ // SREG I-bit را تنظیم کنیدشما می خواهید ISR خود را کوتاه نگه دارید ، بنابراین در بردار وقفه من کل بایت را ذره ذره می خوانم و بایت را در یک آرایه کاراکتر فرار جهانی ذخیره می کنم. در هر وقفه موارد زیر را انجام می دهم:
- بررسی کنید تا مطمئن شوید که کمی شروع کرده ام
- زمان را روی نبض میانی 2400 baud (سرعت RFID خوان) متمرکز کنید
- بیت شروع را رها کرده و تا وسط بیت بعدی مکث کنید
- هر بیت را در یک عدد صحیح بدون علامت بخوانید
- وقتی 8 بیت دریافت کردم ، بایت را در یک آرایه کاراکتر قرار دهید
- وقتی 12 بایت جمع آوری کردم ، به MCU اطلاع دهید که برچسب برای تشخیص خطا خوانده شده است.
من کد SoftSerial را از میکال هارت تغییر دادم که کد دیوید ملیس را برای تأخیرهای تجربی تعیین شده در روالهای سریال تغییر داد.
خروجی RS232 را تجزیه کنید
روال PCINT شامل کد برای خواندن خروجی RS232 از RFID خوان است. هنگامی که من 12 بایت دریافت کردم (RFID 10 بایت به همراه نگهبان) bDataReady را روی 1 تنظیم کردم و اجازه دادم حلقه اصلی داده ها را پردازش کرده و نمایش دهد.
// این handler وقفه است ISR (PCINT2_vect) {if (BCHK (PIND، RFID_IN)) // بیت شروع کم بازده می شود. uint8_t bit = 0؛ تنظیم تاخیر (CENTER_DELAY) ؛ // مرکز شروع بیت برای (uint8_t x = 0 ؛ x <8؛ x ++) {TunedDelay (INTRABIT_DELAY) ؛ // کمی پرش کن برادر… if (BCHK (PIND، RFID_IN)) BSET (bit، x)؛ در غیر این صورت BCLR (بیت ، x) ؛ } TunedDelay (INTRABIT_DELAY) ؛ // پرش از توقف بیت RFID_tag [rxIdx] = بیت ؛ ++ rxIdx؛ if (rxIdx == 12) bDataReady = 1؛}
برچسب خود را نمایش دهید
در حلقه اصلی () ، در طول حلقه (همیشه) ، بررسی می کنم که آیا bDataReady تنظیم شده است یا خیر ، این نشان می دهد که کل ساختار RFID ارسال شده است. سپس بررسی می کنم که آیا یک برچسب معتبر است (یعنی کاراکترهای شروع و توقف به ترتیب 0x0A و 0x0D هستند) ، و اگر چنین است ، اتصال RS232 خود را ارسال می کنم.
برای (؛؛) {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 Tag:")؛ برای (uint8_t x = 1؛ x <11؛ x ++) {USART_tx_S (itoa (RFID_tag [x]، ibuff، 16)) ؛ if (x! = 10) USART_tx (& apos: & apos)؛ } USART_tx_S ("\ n") ؛ } rxIdx = 0؛ bDataReady = 0 ؛ }}
مرحله 4: کد و خداحافظی
این صفحه حاوی یک فایل زیپ با کد مربوطه است. در AVR Studio 4.16 نوشته شده است. اگر از دفترچه یادداشت ، eclipse یا vi (یا چیز دیگری) برنامه نویس استفاده می کنید ، باید یک Makefile مورد اعتماد را در فهرست کپی کرده و این فایل ها را به خط منبع اضافه کنید. همچنین توجه داشته باشید ، زمان بخش خواندن سریال بر اساس MCU 16 مگاهرتز اگر با فرکانس ساعت متفاوتی کار می کنید ، باید به صورت تجربی تاخیرهای تنظیم شده را در مرکز پالس های نرخ baud تعیین کنید. امیدوارم این دستورالعمل به نحوی به شما کمک کرده باشد. اگر پیشنهادی در مورد چگونگی بهبود آن دارید ، لطفاً به من اطلاع دهید دریغ نکنید!
توصیه شده:
رانندگی متناسب Atmega128A - ATMEL ICE AVR Timer UART PWM Control: 4 Step
رانندگی متناسب Atmega128A - ATMEL ICE AVR Timer UART PWM Control: در این قسمت آموزشی نحوه کنترل موتور DC با PWM از طریق وقفه های تایمر دسته UART را برای شما توضیح می دهم اول از همه ، ما از یک برد توسعه سیستم AVR Core استفاده می کنیم. که می توانید در Aliexpress حدود 4 دلار پیدا کنید. تابلوی توسعه
Arduino RFID Reader با صفحه نمایش TFT: 7 مرحله
Arduino RFID Reader With TFT Display: در این مقاله به شما نشان خواهم داد که چگونه یک خواننده RFID زیبا با صفحه نمایش TFT و برای نصب روی دیوار طراحی کنید. ایجاد یک خواننده RFID زیبا با خروجی TFT برای نصب روی دیوار با Arduino بسیار آسان است MKR به انتخاب شما و Ar
نمایشی 4x4 از یک صفحه شطرنج الکترونیکی/ با Arduino Mega + RFID Reader + سنسورهای اثر هال: 7 مرحله
نمایشی 4x4 از یک صفحه شطرنج الکترونیکی/ با Arduino Mega + RFID Reader + سنسورهای اثر Hall: سلام سازندگان ، من Tahir Miriyev هستم ، فارغ التحصیل 2018 از دانشگاه فنی خاورمیانه ، آنکارا/ ترکیه. من در رشته ریاضیات کاربردی تحصیل کردم ، اما همیشه ساخت وسایل را دوست داشتم ، به خصوص وقتی که شامل کارهای دستی با الکترونیک ، طراحی و برنامه نویسی بود
Arduino RFID UHF Reader: 10 مرحله
Arduino RFID UHF Reader: هدف از این دستورالعمل ارائه مثال قابل فهم از ارتباط میکروکنترلر با خواننده RFID UHF است. خواننده مورد استفاده ما Thinkify TR-265 است. این تظاهرات شامل سه برچسب UHF است که هر کدام دارای یک شناسه منحصر به فرد هستند
از MFRC522 RFID Reader با آردوینو استفاده کنید: 5 مرحله
از MFRC522 RFID Reader با آردوینو استفاده کنید: سلام! من می خواهم به شما آموزش دهم که چگونه یک اسکنر ساده و آسان برای ساخت کلید یا اسکنر کلید فوب بسازید! اگر یک ماژول RFID MFRC522 ، چراغ ، مقاومت ، سیم ، یک arduino uno ، یک تخته نان و یک باتری 9 ولت (اختیاری) دارید ، پس برای تهیه یک خنک کننده خوب می توانید