معرفی Reader تگ های غیر فعال EM-18:
EM-18 یک ریدر تگ های غیرفعال می باشد که توسط آن می توان شماره شناسه کارت مورد نظر را خواند و از طریق پروتکل های ارتباطی مناسب به دستگاه های مورد نظر فرستاد.
مشخصات ماژول:
- ولتاژ تغذیه ۵ ولت
- جریان مصرفی در لحظه خواندن تگ کمتر از ۵۰ میلی آمپر
- فرکانس کاری ۱۲۵ کیلوهرتز
- دارای یک خروجی جهت اتصال به بازر یا LED جهت نمایش خواندن تگ
- دارای ۲ پروتکل ارتباطی RS232 و WEIGAND
معرفی پایه های ماژول:

۱- VCC
۲- GND
۳- OUT
۴- NC
۵- NC
۶- RS232=1 – WEIGAND=0
۷- RS232 TX
۸- WEIGAND
۹- WEIGAND
تشریح عملکرد و قسمت های مختلف برنامه نوشته شده:
برنامه نوشته برای دستگاه به زبان C و تحت کامپایلر محبوب CODEVISION نسخه ۲٫۰۵٫۳ می باشد.
قسمت اول:
#include <mega8.h> #include <delay.h> #include <alcd.h> #include <stdio.h> #include <string.h> #define xtal 8000000
در این قسمت ابتدا فایل های سرآیند توابع مورد استفاده در برنامه معرفی شده اند. این هدرها شامل :
۱- رجیسترهای تراشه مورد استفاده که در اینجا ATmega8 می باشد.
۲- فایل سرآیند تاخیر
۳- فایل سرآیند توابع LCD
۴- فایل سرآیند توابع استاندارد ورودی و خروجی
۵- فایل سرآیند کار با داده های رشته ای
۶- تعیین فرکانس کاری میکروکنترلر که ۸ مگاهرتز می باشد.
نکته: این فرکانس فقط برای کامپایلر و درستی عملکرد توابع تاخیر می باشد و در عمل هم باید را طریق فیوزبیت های مربوطه، اسیلاتور داخلی بر روی فرکانس ۸مگاهرتز سویچ شود.
قسمت دوم:
#define soran “01004D764C76”
معرفی تگ مورد استفاده که در اینجا فقط یک تگ در دسترس می باشد.
قسمت سوم:
void main(void) { unsigned char buff[13]; DDRB=0xff; DDRC=0xff; DDRD=0x80; PORTD=0x04; //****************************** UCSRA=0x00; UCSRB=0x10; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; lcd_init(16);
تابع اصلی برنامه که باید در کلیه برنامه های نوشته به زبان سی موجود باشد. این تابع شامل کلیه تنظیمات و عملکرد کلی دستگاه است.
در اولین قسمت تابع متغیر مورد استفاده جهت دریافت کد تگ معرفی شده که از نوع کاراکتر و به اندازه ۱۳ می باشد زیرا آخرین کاراکتر هر رشته null می باشد.
سپس پورتهای میکروکنترلرهای در وضعیت های مناسب ورودی و خروجی قرار گرفته اند. در خطوط بعد پروتکل USART میکروکنترلر پیکربندی شده و باوودریت ۹۶۰۰ مورد استفاده قرار گرفته. همچنین ۸ بیت دیتا، یک بیت stop و بدون parity بیت تنظیم شده است.
lcd_init(16); نیز به معنی تنظیمات اولیه نمایشگر می باشد.
lcd_clear(); lcd_putsf("Designer:"); lcd_gotoxy(0,1); lcd_putsf("aoran arasteh"); delay_ms(2000); lcd_clear();
در ادامه تابع اصلی به خطوط بالا می رسیم که در آن بر روی نمایشگر متن هایی جهت نمایش نام طراح دیده خواهد شد.
while (1) { lcd_clear(); lcd_putsf("Insert TAG??"); gets(lcd_buff,12); if(!strcmp(soran,buff)) { lcd_clear(); lcd_putsf("Open DOOR!!"); PORTD.7=1; delay_ms(500); PORTD.7=0; } }
حلقه while برنامه یا حلقه بی نهایت که جزئی از تابع اصلی برنامه می باشد و برنامه های داخل آن به تعداد بینهایت اجرا خواهند شد.
در این حلقه در ابتدا بر روی نمایشگر پیغام “Insert tag” ظاهر می شود و منتظر عبور تگ از مقابل ماژول می ماند. با عبور هر تگ از مقابل ماژول، برنامه دیتای تگ را گرفته و با استفاده از یک شرط if کد شناسایی آن را با کد شناسایی موجود مقایسه می کند و در صورت برابری متن “Open DOOR” بر روی نمایشگر نشان داده شده و رله به مدت ۵۰۰ میلی ثانیه فعال می شود. در این حالت LED نشانگر وضعیت (LED سفید) هم به معنی فعال بودن رله روشن می شودو پس از سپری شدن زمان دوباره این روال تکرار می شود.
برنامه نوشته شده به صورت کامل
#include <mega8.h> #include <delay.h> #include <alcd.h> #include <stdio.h> #include <string.h> #define xtal 8000000 //************************************ #define soran "01004D764C76" //************************************ void main(void) { unsigned char buff[13]; DDRB=0xff; DDRC=0xff; DDRD=0x80; PORTD=0x04; //****************************** UCSRA=0x00; UCSRB=0x10; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; lcd_init(16); //***************************** lcd_clear(); lcd_putsf("Designer:"); lcd_gotoxy(0,1); lcd_putsf("soran arasteh"); delay_ms(2000); lcd_clear(); //***************************** while (1) { lcd_clear(); lcd_putsf("Insert TAG??"); gets(lcd_buff,12); if(!strcmp(soran,buff)) { lcd_clear(); lcd_putsf("Open DOOR!!"); PORTD.7=1; delay_ms(500); PORTD.7=0; } } }
معرفی قسمت های مختلف برد

۱- سوکت مربوط به LCD16*2
۲- میکروکنترلر مورد استفاده به شماره ATmega8
۳- ماژول EM-18 جهت خواندن تگ ها
۴- رله
۵- ترمینال مربوط به کنتاکت های رله
۶- LED وضعیت رله
۷- LED وضعیت ماژول
۸- ترمینال ورودی که با توجه به استفاده از رله ۱۲ ولت و وجود تغذیه ۱۲ولت بر روی آیفون باید ورودی ۱۲ ولت باشد.
۹- LED وضعیت روشن و خاموش بودن
۱۰- قطعات مربوط به قسمت تغذیه شامل رگلاتور، خازن و سلف صافی، دیوی ۱n4007 جهت محافظت از مدار در مقابل تغذیه برعکس.
۱۱- پتانسیومتر جهت کنترل کنتراست نمایشگر
۱۲- سویچ جهت استفاده های آتی
ویدیو عملکرد دستگاه:
سلام ببخشید چجوری تگ رو معرفی میکنید؟ منظورم کد روی کارت هستش چجوری تعریف میشه برای میکرو
سلام
روی برد برای این کار شستی تعبیه شده.
ممنون از جوابتون ولی متوجه نمیشم یعنی نیازی به تبدیل کد روی کارت به هگز و تعریف اون داخل برنامه توسط خودم نیست و این کار توسط همون شاسی شماره ۱۲ که تو شکل شماره گذاری کردید انجام میشود؟
بله دقیقا فقط برای اضافه یا حذف کردن تگ باید ابتدا تگ مادر رو داشته باشید و سپس با نگه داشتن شستی مشخص شده صدای بیپ شنیده میشه و می تونید تگ جدید رو اضافه و یا حذف کنید و هیچ نیازی به تغییر در برنامه نیست.
صرفا تگ مادر باید در برنامه تغریف بشه که این کار برای امنیت بیشتر دستگاه هستش.
موفق باشید
ممنون از پاسختون این چند روز رو داشتم تست میکردم ولی هیچ جوری نمیتونم برای ریدر کارت مادر رو تعریف کنم حتی وقتی کلید رو نگه میدارم و کارت رو نزدیک میکنم اتفاقی نمیفته فقط چراغی که برای ریدر گذاشتم چشمک میزنه چطور این مشکلم رو حل کنم؟ببخشید زیاد اذیت میکنم 🙂
ببینید کدها رو باید حسابی برسی کنید. قبلا هم گفتم در این نسخه تگ مادر رو خودتون باید از طریق برنامه و خطوط کد معرفی کنید. یعنی ابتدا از طریق ریدر کدرهای تگ رو به دست میارید و تو برنامه قرار میدین و بعد از کامپایل و رو پراگرام کردن همه چیز حل میشه.
موفق باشید
با سلام.من میخواستم این پروژه رو انجام بدم و برای چاپ pcb بفرستم و براش هزینه کنم.ممنون میشم اگه از نداشتن مشکل ((چه تو مدار و چه تو فایل التیوم ….)بهم اطمینان بدین.تشکر
سلام
تمامی اطلاعات و پروژه های قرار داده شده در سایت کاملا تست شده می باشد.
سلام…ببخشید…تا چنتا تگ رو میشه اضافه کرد؟؟
سلام
تنظیماتش دست خوتونه البته حداکثر مقدار با توجه به حداکثر ظرفیت حافظه ایپرام مشخص میشه.
میشه بیشتر راهنمایی کنید..
من میخوام تا صدتا تگ رو ذخیره کنه