آیکون فایل

قفل رمز درب بازکن با آردینو ( Arduino Safety Lock ) 2022-05-17

دسترسی دریافت را ندارید
در این پست قصد دارم یک قفل رمز ایمنی چهارقمی با نمایشگر و صفحه کی برد خازنی 12 کلیدی همراه با باز کردن قفل مکانیکی را با آردینو برای شما نمایش و ارائه کنم.

safety_lock2_banner.jpg

صفحه LCD پیامی را نمایش می دهد که از کاربر می خواهد رمز عبور را وارد کند. رمز عبور پیش فرض این است: <1036> و در حافظه فلش میکروکنترلر ذخیره می شود. پس از وارد کردن رمز عبور، کاربر باید کلید '#' را که به عنوان <Enter> عمل می کند فشار دهد. اگر کاربر در وارد کردن رمز عبور اشتباه کند، می تواند با فشردن کلید "*" آن را پاک کند. اگر کاربر رمز عبور را درست وارد کرده باشد، سرو موتور چند درجه می چرخد تا درب باز شود. بعد از دو ثانیه سروو موتور به حالت اولیه خود باز می گردد. یک خازن 1000 uF / 16 ولت به همراه کابل های سروو برق + 5 ولت برای از بین بردن تلاطم سروموتور اضافه شده است.

safety_lock2_d.jpg


من یک طرح ساده نوشتم فایل آن باز است تا شما بتوانید به راحتی آن را تغییر دهید و آن را برای مطابقت با نیازهای خود پیچیده تر کنید (تغییر رمز عبور، لیست دسترسی کاربر و غیره).
/*
* قفل ایمنی الکترونیک v2

#define SERVO_1 3 /* D3 به عنوان خروجی. موتور سروو را درایو می کند */
#define SERVO_ON 160
#define SERVO_OFF 20

#define KBD_TX 10 /* Pin D10. داده از صفحه کلید خازنی تا آردوینو (9600 bps) */
#define KBD_RX 11 /* این پین استفاده نمی شود */
#define KBD_ASTERISK 0x0A /* <*> */
#define KBD_ZERO 0x0B /* <0> */
#define KBD_SH 0x0C /* <#> */

#include < Wire . h >
#include < سروو . h >
#include "rgb_lcd.h"
#include < SoftwareSerial . ساعت>

const byte my_password [ ] = { 1 , 0 , 3 , 6 } ;
const byte SIZE_OF_MY_PASS = sizeof ( my_password ) ;
بایت success_digits = 0 ;
بایت lcd_position = 0 ;

سروو میسروو ; /* ایجاد شی سروو برای کنترل سروو */
rgb_lcd lcd ;
نرم افزار CapKeypad سریال ( KBD_TX , KBD_RX ) ؛ // Arduino RX، Arduino TX


void setup ( ) {

CapKeypad . شروع ( 9600 ) ;
pinMode ( KBD_TX , INPUT ) ;
ال سی دی . شروع ( 16 , 2 ) ;
clear_lcd_password_area ( ) ;
میسروو . پیوست ( SERVO_1 ) ؛
}

void loop ( ) {

if ( read_keyboard( ) == true ) { /* اگر رمز عبور درست است، */
unlock_door ( ) ; /* قفل در را باز کنید */
}
}

read_keyboard boolean ( ) { byte val ; if ( CapKeypad . موجود ( ) > 0 ) { val = CapKeypad . خواندن ( ) - 0xe0 ; /* اگر ( val == ) پیشوند 0xE0 را از مقدار صفحه کلید */ حذف کنید


KBD_ASTERISK ) { /* <Clear password> Button */
clear_lcd_password_area ( ) ;
بازگشت نادرست _
}

if ( val == KBD_ZERO ) { /* <0> : جایگزین مقدار Zero-Button */
val = 0 ;
}

if ( val == KBD_SHARP ) { /* دکمه <Enter> */
if ( ( success_digits == SIZE_OF_MY_PASS ) && ( success_digits == lcd_position )) {
ارقام_ موفقیت = 0 ;
بازگشت درست _
} else {
ال سی دی . روشن ( ) ;
ال سی دی . print ( F ( "رمز عبور اشتباه" ) ) ;
تاخیر ( 1000 ) ;
ال سی دی . روشن ( ) ;
clear_lcd_password_area ( ) ;
بازگشت نادرست _
}
}

if ( ( lcd_position < 14 ) && ( val < 0x0a ) ) {
lcd_position ++ ;
ال سی دی . نوشتن ( '*' ) ;
}

if ( val == my_password [ success_digits ] ) {
success_digits ++ ;
} else {
success_digits = 0 ;
}

}
return false ;
}

void clear_lcd_password_area ( ) {
lcd_position = 0 ;
ارقام_موفقیت = 0 ;
ال سی دی . setCursor ( 0 , 0 ) ;
ال سی دی . چاپ ( " رمز عبور را وارد کنید" ) ;
ال سی دی . setCursor ( 0 , 1 ) ;
ال سی دی . چاپ ( F ( " " ) ) ;
ال سی دی . setCursor ( 0 , 1 ) ;
}

خالی unlock_door ( ) {
ال سی دی . روشن ( ) ;
ال سی دی . چاپ ( F ( "قفل در باز است " ) ; میسروو . نوشتن ( SERVO_ON ) ; تاخیر ( 2000 ) ; ال سی دی . روشن ( ) ; ال سی دی . چاپ ( F ( "در قفل است" ) ) ; میسروو . بنویسید ( SERVO_OFF

) ؛
تاخیر ( 2000 ) ;
clear_lcd_password_area ( ) ;
}

seeed_nano_back.png
seeed_nano_front.png
wiring_diagram_small.png

لطفا نظرات ارزشمند خود را کامنت کنید.
نویسنده
SONIC
دریافت‌ها
0
بازدیدها
61
اولین انتشار
آخرین بروزرسانی
رتبه‌بندی
0.00 ستاره 0 رتبه‌بندی

فایل‌های بیشتری از SONIC

بالا پایین