پروژه قفل درب عددی با رزبری پای و پایتون

محتویات
سلام. پروژه قفل دیجیتالی عددی با رزبری پای +آموزش کامل را آماده کردیم.
قفل امنیتی رمز عبور عددی با رزبری پای
امنیت یک نگرانی اساسی در زندگی روزمره ما است و قفل های دیجیتال به بخش مهمی از این سیستم های امنیتی تبدیل شده اند. فناوری های بسیاری برای تأمین امنیت مکان ما وجود دارد، مانند سیستم های امنیتی مبتنی بر PIR، سیستم امنیتی مبتنی بر RFID، آلارم های امنیتی لیزری، قفل های اثر انگشت، حسگر قرنیه و …
فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.
ما قبلاً پروژه های قفل امنیتی فراوانی را با استفاده از AVR و آردوینو طراحی کرده ایم. اینبار میخواهیم این پروژه را با برد رزبری پای راه اندازی کنیم. در این پروژه کاربر میتواند رمز مورد نظر خود را تنظیم کند و پس از آن در فقط با رمز صحیح باز میشود. ما قبلا به طور کامل با Raspberry Pi و پین های GPIO آشنا شده ایم. در صورت نیاز، بخش آموزش های رزبری پای سایت را مشاهده کنید.
پروژه قفل در با رزبری پای چطور کار میکند؟
کار با این پروژه بسیار ساده است. هنگامی که کاربر برنامه را اجرا میکند، ال سی دی پیام خوش آمد را نشان میدهد و سپس دو خط در LCD نمایش داده میشود.
A- Input Password
B- Change Passkey
اکنون کاربر با انتخاب گزینه A و B کار خود را مشخص میکند. در صورت فشردن کلید A کاربر رمز را وارد میکند و در صورت وارد کردن رمز صحیح درب باز میشود. و در صورت فشردن کلید B کاربر میتواند رمز را تغییر دهد.
در صورت وارد کردن رمز عبور اشتباه، سیستم دستورالعمل را برای فعال کردن بازر ارسال میکند و پیام “Access Denied” را بر روی LCD نشان می دهد.
در صورتی که کاربر بخواهد رمز را عوض کند، پس از فشردن کلید B، ال سی دی پیامی را مبنی بر ورود گذرواژه فعلی نمایش میدهد. کاربر پس از وارد کردن رمز در صورتی که رمز صحیح باشد، میتواند رمز عبور جدید را تنظیم کند. اگر کاربر رمز عبور فعلی را به صورت اشتباه وارد کند، ال سی دی پیام Wrong Password را نمایش میدهد و بازر فعال میشود.
برای یک پروژه کوچک می توانید به سادگی یک موتور DC را برای باز و بسته کردن درب استفاده کنید. ما همچنین می توانیم از موتور سروو یا موتور استپر استفاده کنیم، اما باید کد را بر آن اساس تغییر دهیم.
در این پروژه همچنین میتوانیم از قفل های الکترونیکی استفاده کنیم. نحوه کار این قفل ها به این صورت است که آهن ربا در صورت عدم عبور جریان از طریق قفل (مدار باز)، درب را بسته نگه می دارد. و هنگامی که جریان از آن عبور می کند، قفل غیرفعال می شود و می توان درب را باز کرد.
اتصال صفحه کلید 4*4 به رزبری پای با مالتی پلکس
در این مدار ، ما از تکنیک Multiplexing برای ارتباط صفحه کلید با رزبری پای استفاده میکنیم. از کیبورد برای وارد کردن رمز عبور استفاده میشود. صفحه کلید مورد استفاده ما 4*4 ملتی پلکس با 16 کلید است. به طور معمول برای اتصال 16 دکمه به 16 پین نیاز داریم. اما در صورت استفاده از تکنیک مالتی پلکس، فقط 8 پین برای اتصال نیاز است.
تکنیک مولتی پلکس روشی بسیار کار آمد برای کاهاش تعداد پین های مورد استفاده از میکروکنترلر است. ما در اینجا در این پروژه، ما بدون استفاده از کتابخانه صفحه کلید، روش کوتاه کد نویسی را برای صفحه کلید پیاده سازی کرده ایم. لطفا آن را در بخش برنامه نویسی در زیر مشاهده کنید.
همچنین پروژه قفل امنیتی هوشمند با نوع در زدن را نیز مشاهده کنید.
شماتیک مدار قفل در رمزی با رزبری پای
مدار این پروژه بسیار ساده است. در این مدار از رزبری پای 3 استفاده کرده ایم. همچنین ماژول صفحه صفحه کلید، بازر، ال سی دی کاراکتری نیز در این مدار قابل مشاهده است.
در اینجا برد Raspberry Pi به عنوان مغز مدار استفاده میشود. تمامی اعمال مثل دریافت رمز عبور از صفحه کلید و مقایسه رمز عبور وارد شده با رمز عبور تنظیم شده، کنترل موتور (قفل) و ارسال پیام ها به نمایشگر توسط رزبری پای کنترل میشود. پین های ماژول صفحه کلید به پین های ستون GPIO 22 ، 23 ، 24 ، 25 وصل می شوند و پین های ردیف به پین های 21 ، 14 ، 13 ، 12 وصل می شوند. یک ال سی دی کاراکتری 16*2 به رزبری پای در حالت 4 بیتی متصل شده است. پین های کنترل RS ، RW و En به طور مستقیم به پین GPIO 11 ، GND و 10 وصل می شوند. پین های داده D4-D7 به پین های GPIO 6 ، 15 ، 4 و 1 وصل می شوند. L293D در پین 28 و 29 به Raspberry Pi متصل است.
قطعات مورد نیاز
- برد رزبری پای (با کارت SD)
- ماژول صفحه کلید
- ال سی دی کاراکتری 16*2
- پتانسیومتر 10 کیلو اهم
- مقاومت 10 کیلو اهم
- مقاومت 1 کیلو اهم
- ال ای دی
- بازر
- یک موتور یا رله برای بازکردن در
- درایور موتور L293D
- منبع تغذیه 5 ولت
- باتری 12 ولت
برنامه نویسی پروژه قفل درب با رزبری پای
برنامه نویسی بسیار شبیه Arduino است. در آردوینو از کلاسها استفاده می شود اما در اینجا ما این کد را با استفاده از برنامه نویسی c و بدون کلاس انجام داده ایم. ما همچنین کتابخانه wiringPi را برای پین های GPIO نصب کرده ایم.
کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های مهم کد را توضیح میدهیم.
در ابتدا ما باید کتاخبانه های مورد نیاز را فراخوانی کنیم و سپس پین های مورد نیاز را تعریف کنیم.
#include<wiringPi.h> #include<string.h> #include<stdio.h> #define buzz 8 // پین بازر #define m1 29 // پین های موتور #define m2 28 #define led 27 // ین ال ای دی #define RS 11 // پین های ال سی دی #define EN 10 #define D4 6 #define D5 5 #define D6 4 #define D7 1
سپس پین های ستون و ردیف های صفحه کلید را تعیین کرده و آرایه ای را برای ذخیره رمز عبور و شماره های صفحه کلید تعریف میکنیم.
char pass[4]; char pass1[]={'1','2','3','4'}; int n=0; char row[4]={21, 14, 13, 12}; // پین های ردیف char col[4]={22, 23, 24, 25}; // پین های ستون char num[4][4]={ {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };
سپس چند تابع برای ال سی دی مینویسیم.
تابع void lcdcmd برای ارسال فرمان به LCD استفاده می شود و عملکرد write برای ارسال داده به LCD استفاده می شود.
void print(char *str) { while(*str) { write(*str); str++; } }
تابع setCursor برای تنظیم موقعیت مکان نما در LCD استفاده می شود.
void setCursor(int x, int y) { int set=0; if(y==0) set=128+x; if(y==1) set=192+x; lcdcmd(set); }
تابع void clear() برای پاک کردن LCD استفاده میشود و از buzzer() برای فعال کردن بوق استفاده میشود.
تابع های void gate_open() , void gate_stop() و void gate_close() برای باز کردن، توقف و بستن در استفاده میشود.
void gate_open() // تابع باز کردن در { digitalWrite(m1, LOW); // موتور یک غیرفعال میشود digitalWrite(m2, HIGH); // موتور دو فعال میشود delay(2000); } void gate_stop() // تابع توقف در { digitalWrite(m1, LOW); // موتور یک غیرفعال میشود digitalWrite(m2, LOW); // موتور دو غیرفعال میشود delay(2000); } void gate_close() // تابع بستن در { digitalWrite(m1, HIGH); // موتور یک فعال میشود digitalWrite(m2, LOW); // موتور دو غیرفعال میشود delay(2000); }
توابع زیر برای پیکربندی ال سی دی در حالت 4 بیتی استفاده میشوند.
void begin(int x, int y) { lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x06); lcdcmd(0x0e); lcdcmd(0x01); }
تابع keypad() برای برقراری ارتباط بین کیپد و رزبری پای با روش کوتاه استفاده میشود.
void keypad() { int i,j; int x=0,k=0; delay(2000); while(k<4) { for(i=0;i<4;i++) { digitalWrite(col[i], LOW); for(j=0;j<4;j++) { if(digitalRead(row[j])==0) { setCursor(x,1); .... ...... ..... ......
موارد موجود در فایل : سورس کد ، شماتیک پروژه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام میشه برنامه نویسی را با موبایل انجام داد
سلام جناب. اگر برنامه نویسی رزبری پای منظورتون هست با یک کیبورد و نمایشگر میتونید انجام بدید. مقاله آموزش LED چشمک زن با رزبری پای و پایتون رو مشاهده کنید.