پروژه الکترونیکپروژه های امنیتیپروژه های رزبری پای

پروژه قفل درب عددی با رزبری پای + آموزش Door Lock Raspberry Pi

سلام. پروژه قفل دیجیتالی عددی با رزبری پای +آموزش کامل را آماده کردیم.

قفل امنیتی رمز عبور عددی با Raspberry Pi

امنیت یک نگرانی اساسی در زندگی روزمره ما است و قفل های دیجیتال به بخش مهمی از این سیستم های امنیتی تبدیل شده اند. فناوری های بسیاری برای تأمین امنیت مکان ما وجود دارد، مانند سیستم های امنیتی مبتنی بر PIR، سیستم امنیتی مبتنی بر RFID، آلارم های امنیتی لیزری، قفل های اثر انگشت، حسگر قرنیه و …

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

ما قبلاً پروژه های قفل امنیتی فراوانی را با استفاده از AVR و آردوینو طراحی کرده ایم. اینبار میخواهیم این پروژه را با برد رزبری پای راه اندازی کنیم. در این پروژه کاربر میتواند رمز مورد نظر خود را تنظیم کند و پس از آن در فقط با رمز صحیح باز میشود.  ما قبلا به طور کامل با Raspberry Pi و پین های GPIO آشنا شده ایم. در صورت نیاز، بخش آموزش های رزبری پای سایت را مشاهده کنید.

پروژه قفل در با رزبری پای چطور کار میکند؟

کار با این پروژه بسیار ساده است. هنگامی که کاربر برنامه را اجرا میکند، ال سی دی پیام خوش آمد را نشان میدهد و سپس دو خط در LCD نمایش داده میشود.

A- Input Password

B- Change Passkey

اکنون کاربر با انتخاب گزینه A و B کار خود را مشخص میکند. در صورت فشردن کلید A کاربر رمز را وارد میکند و در صورت وارد کردن رمز صحیح درب باز میشود. و در صورت فشردن کلید B کاربر میتواند رمز را تغییر دهد.

در صورت وارد کردن رمز عبور اشتباه، سیستم دستورالعمل را برای فعال کردن بازر ارسال میکند و پیام “Access Denied” را بر روی LCD نشان می دهد.

نحوه کار پروژه قفل امنیتی با رزبری پای

در صورتی که کاربر بخواهد رمز را عوض کند، پس از فشردن کلید B، ال سی دی پیامی را مبنی بر ورود گذرواژه فعلی نمایش میدهد. کاربر پس از وارد کردن رمز در صورتی که رمز صحیح باشد، میتواند رمز عبور جدید را تنظیم کند. اگر کاربر رمز عبور فعلی را به صورت اشتباه وارد کند، ال سی دی پیام Wrong Password را نمایش میدهد و بازر فعال میشود.

برای یک پروژه کوچک می توانید به سادگی یک موتور DC را برای باز و بسته کردن درب استفاده کنید. ما همچنین می توانیم از موتور سروو یا موتور استپر استفاده کنیم، اما باید کد را بر آن اساس تغییر دهیم.

در این پروژه همچنین میتوانیم از قفل های الکترونیکی استفاده کنیم. نحوه کار این قفل ها به این صورت است که آهن ربا در صورت عدم عبور جریان از طریق قفل (مدار باز)، درب را بسته نگه می دارد. و هنگامی که جریان از آن عبور می کند، قفل غیرفعال می شود و می توان درب را باز کرد.

حتما ببینید :  آموزش ساخت شیر آب اتوماتیک با التراسونیک و آردوینو (پروژه تصفیه هوشمند با Arduino)

اتصال صفحه کلید 4*4 به رزبری پای با مالتی پلکس

در این مدار ، ما از تکنیک Multiplexing برای ارتباط صفحه کلید با رزبری پای استفاده میکنیم. از کیبورد برای وارد کردن رمز عبور استفاده میشود. صفحه کلید مورد استفاده ما 4*4 ملتی پلکس با 16 کلید است. به طور معمول برای اتصال 16 دکمه به 16 پین نیاز داریم. اما در صورت استفاده از تکنیک مالتی پلکس، فقط 8 پین برای اتصال نیاز است.

اتصال صفحه کلید 4*4 به رزبری پای با مالتی پلکس

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

تکنیک مولتی پلکس روشی بسیار کار آمد برای کاهاش تعداد پین های مورد استفاده از میکروکنترلر است. ما در اینجا در این پروژه، ما بدون استفاده از کتابخانه صفحه کلید، روش کوتاه کد نویسی را برای صفحه کلید پیاده سازی کرده ایم. لطفا آن را در بخش برنامه نویسی در زیر مشاهده کنید.

توضیحات شماتیک مدار پروژه

مدار این پروژه بسیار ساده است. در این مدار از رزبری پای 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 متصل است.

قطعات مورد نیاز

  1. برد رزبری پای (با کارت SD)
  2. ماژول صفحه کلید
  3. ال سی دی کاراکتری 16*2
  4. پتانسیومتر 10 کیلو اهم
  5. بسته بندی مقاومت 10 کیلو اهم
  6. مقاومت 1 کیلو اهم
  7. ال ای دی
  8. بازر
  9. یک موتور یا رله برای بازکردن در
  10. درایور موتور L293D
  11. منبع تغذیه 5 ولت
  12. باتری 12 ولت
حتما ببینید :  آموزش پروژه تشخیص حرکت LDR با آپ امپ LM741 با هشدار (چشم الکترونیکی)

توضیحات برنامه نویسی پروژه

برنامه نویسی بسیار شبیه 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);
          .... ......
          ..... ......

موارد موجود در فایل : سورس کد ، شماتیک پروژه

[post_shop]

دانلود فایل های پروژه

[/post_shop] [lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن