قفل الکترونیکی آردوینو نانو. ساخت قفل RFID با استفاده از آردوینو

در این درس می آموزیم که چگونه یک سیستم ساده بسازیم که قفل را با استفاده از کلید الکترونیکی (Label) باز کند.

در آینده، می توانید عملکرد را اصلاح و گسترش دهید. به عنوان مثال، تابع "افزودن کلیدهای جدید و حذف آنها از حافظه" را اضافه کنید. در حالت پایه، یک مثال ساده را در نظر بگیرید، زمانی که یک شناسه کلید منحصر به فرد از قبل در کد برنامه مشخص شده است.

در این آموزش به موارد زیر نیاز خواهیم داشت:

برای اجرای پروژه، باید کتابخانه های زیر را نصب کنیم:

2) حالا باید Buzzer را وصل کنید که اگر کلید کار کرد و قفل باز شد سیگنال می دهد و با بسته شدن قفل سیگنال دوم را می دهد.

زنگ را به ترتیب زیر وصل می کنیم:

آردوینو زنگ
5 ولت VCC
GND GND
پین 5 IO

3) یک سروو به عنوان مکانیزم باز کردن قفل استفاده خواهد شد. بسته به ابعاد مورد نیاز شما و نیروهایی که سروو ایجاد می کند، می توان هر سروو را انتخاب کرد. سروو دارای 3 پین است:

واضح تر، می توانید نحوه اتصال ماژول ها را در تصویر زیر مشاهده کنید:

حالا، اگر همه چیز متصل است، می توانید به برنامه نویسی بروید.

طرح:

#عبارتند از #عبارتند از #عبارتند از // کتابخانه "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); uidDec طولانی بدون امضا، uidDecTemp. // برای ذخیره شماره تگ در فرمت اعشاری Servo servo. void setup() ( Serial.begin(9600); Serial.println("در انتظار کارت..."); SPI.begin(); // مقدار دهی اولیه SPI / گذرگاه SPI Init. mfrc522.PCD_Init(); // مقداردهی اولیه MFRC522 / راه اندازی MFRC522 card.servo.attach(6); servo.write(0); // سروو را روی حالت بسته تنظیم کنید) void loop() ( // جستجوی یک برچسب جدید اگر (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // انتخاب تگ if (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; // صدور شماره سریال تگ برای (بایت i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

بیایید طرح را با جزئیات بیشتری تجزیه و تحلیل کنیم:

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

UID حاصل باید در خط زیر وارد شود:

اگر (uidDec == 3763966293) // Uid برچسب را مقایسه کنید، اگر برابر با مشخص شده باشد، سروو دریچه را باز می کند.

برای هر کارت، این شناسه منحصر به فرد است و تکرار نمی شود. بنابراین، هنگامی که کارتی را ارائه می دهید که شناسه آن را در برنامه تنظیم کرده اید، سیستم با استفاده از سروو دسترسی را باز می کند.

ویدئو:

آردوینو بهترین سیستم برای کپی کردن هر نوع تجهیزاتی است. بسیاری از ایده ها بدون او امکان پذیر نبودند. از مدت ها قبل چنین ایده ای وجود داشته است: ایجاد یک قفل ترکیبی خاص در آردوینو. برای باز کردن آن، باید کلید خاصی را نگه دارید. در این حالت، قفل نباید باز شود، حتی اگر دکمه درست را بدانید. برای باز کردن آن، باید فواصل خاصی را با استفاده از حافظه عضلانی حفظ کنید. مجرم نمی تواند چنین کاری را انجام دهد. اما همه اینها فقط یک نظریه است.

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

کیفیت تصویر بهترین نیست، اما اتصال به زمین، D3، D5، D7، D9 و D11 انجام می شود.

کد زیر ارائه شده است:

Const intina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; بایت a = 0; بایت b = 0; بایت c = 0; بایت d = 0; زمان طولانی بدون امضا = 0; //هر چیزی را فراموش نکنید که مقدار millis() unsigned long temp = 0; //ذخیره در بایت طولانی بدون علامت keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //کدها در واقع بایت keyb = ( 1, 1, 1, 1, 0, 1, 0, 0); کلید بایت = ( 1، 0، 1، 0، 1، 1، 1، 0)؛ بایت k = 0; void setup() (pinMode(ina, INPUT_PULLUP)؛ //3 ورودی متصل به دکمه‌ها pinMode (inb, INPUT_PULLUP)؛ pinMode (inc, INPUT_PULLUP)؛ pinMode (ledPin, OUTPUT)؛ // LED داخلی روی پین 13 Mode (7، OUTPUT)؛ pinMode(11، OUTPUT)؛ digitalWrite(7، LOW)؛ //جایگزینی زمین digitalWrite(11، LOW)؛ time = millis(); //نیاز برای زمان بندی) void blinktwice() ( // دوبار چشمک زدن LED digitalWrite (ledPin، HIGH)؛ تاخیر (100)؛ digitalWrite (ledPin، LOW)؛ تاخیر (100)؛ digitalWrite (ledPin، HIGH)؛ تاخیر (100؛ digitalWrite (ledPin، LOW)؛ تاخیر( 200)؛ ) void loop() (if(k==0) (blinktwice(); // درخواست برای وارد کردن کد) if (k == 8) (digitalWrite(ledPin، HIGH)؛ تاخیر(3000)؛ k = . مثبت کاذب، if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) (if (a == keya[k]) (اگر (b == keyb[k]) (اگر (c == keyc[k]) (k++; ) ) ) ) if (k==1) (اگر (d ==0) (زمان = میلیس (); d++; ) ) دما = میلیس(); temp = temp - time; اگر (دمای > 10000) (k= 0؛ d=0؛ زمان = میلی‌لی (؛ ))

به منظور جلوگیری از سوالات غیر ضروری در مورد کد، نکاتی باید روشن شود. تابع setup برای اختصاص پورت ها استفاده می شود. تابع بعدی Input_Pullup است که برای افزایش ولتاژ پین به میزان 5 ولت لازم است. این کار با استفاده از یک مقاومت انجام می شود. به همین دلیل، اتصال کوتاه مختلف رخ نخواهد داد. برای راحتی بیشتر، توصیه می شود از عملکرد blinktwice استفاده کنید. به طور کلی، هنگام ایجاد برنامه های مختلف، باید عملکردهای دیگری را امتحان کنید.

پس از تخصیص عملکردها، سیگنال از پورت ها خوانده می شود. اگر دکمه فشار داده شود، این با عدد 1 نشان داده می شود، و اگر نه - 2. سپس، تمام مقادیر مورد تجزیه و تحلیل قرار می گیرند. به عنوان مثال، ترکیبی مانند 0،1،1 وجود دارد. به این معنی که کلید اول فشار داده می شود و دو کلید دیگر فشار داده نمی شود. اگر همه مقادیر درست باشند، شرط 8 نیز درست است. این با LED روشن در پانل جلویی نشان داده می شود. بعد، باید کد خاصی را وارد کنید که برای باز کردن درب کار می کند.

آخرین عناصر کد برای تنظیم مجدد مقادیر شمارنده استفاده می شود. این عملکرد در صورتی اجرا می شود که بیش از 10 ثانیه از آخرین فشار کلید گذشته باشد. بدون این کد، می توان همه گزینه های ممکن را مرتب کرد، اگرچه تعداد زیادی از آنها وجود دارد. پس از ساخت این دستگاه، باید آن را تست کنید. بیشتر

روز دیگر داشتم مرد عنکبوتی شگفت انگیز را تماشا می کردم و در یک صحنه پیتر پارکر از راه دور در را از لپ تاپش باز و بسته می کند. به محض اینکه این را دیدم، بلافاصله متوجه شدم که به چنین قفل الکترونیکی روی درب ورودی نیاز دارم.

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

مرحله 1: فهرست مواد





برای مونتاژ قفل الکترونیکی در آردوینو، به مواد زیر نیاز دارید:

الکترونیک:

  • آداپتور دیواری 5 ولت

اجزاء:

  • 6 پیچ برای قفل
  • مقوا
  • سیم ها

ابزار:

  • آهن لحیم کاری
  • تفنگ چسب
  • مته
  • مته
  • مته سوراخ پایلوت
  • چاقوی لوازم التحریر
  • کامپیوتر با آردوینو IDE

مرحله 2: نحوه عملکرد قفل

ایده این است که می توانم در را بدون کلید و حتی بدون اینکه به سمت آن بروم باز یا ببندم. اما این فقط ایده اصلی است، زیرا شما می توانید یک سنسور کوبش برای واکنش به یک ضربه خاص اضافه کنید، یا می توانید یک سیستم تشخیص صدا اضافه کنید!

یک اهرم سروو متصل به پیچ با استفاده از دستورات دریافتی از طریق ماژول بلوتوث پیچ (0 درجه) را بسته و (60 درجه) پیچ را باز می کند.

مرحله 3: نمودار سیم کشی


بیایید ابتدا سروو را به برد آردوینو وصل کنیم (می خواهم توجه داشته باشم که اگرچه از برد آردوینو نانو استفاده می کنم، اما پین اوت دقیقاً در برد Uno یکسان است).

  • سیم قهوه ای سروو زمین شده است، آن را در آردوینو به زمین وصل می کنیم
  • سیم قرمز مثبت است، آن را به کانکتور 5 ولت آردوینو وصل می کنیم
  • سیم نارنجی - خروجی منبع سروو، آن را به پایه 9 در آردوینو وصل کنید

من به شما توصیه می کنم قبل از شروع مونتاژ سروو را تست کنید. برای این کار در برنامه Arduino IDE در مثال ها گزینه Sweep را انتخاب کنید. پس از اطمینان از کارکرد سروو می توانیم ماژول بلوتوث را وصل کنیم. شما باید پایه rx ماژول بلوتوث را به پایه tx آردوینو و پایه tx ماژول را به پایه rx آردوینو وصل کنید. اما هنوز این کار را نکنید! هنگامی که این اتصالات لحیم شوند، نمی توانید هیچ کدی را در آردوینو آپلود کنید، بنابراین ابتدا همه کدهای خود را آپلود کنید و سپس اتصالات را لحیم کنید.

در اینجا نمودار اتصال ماژول و میکروکنترلر آمده است:

  • ماژول Rx - برد آردوینو Tx
  • ماژول Tx - برد Rx
  • Vcc (ترمینال مثبت) ماژول - 3.3 ولت برد آردوینو
  • اتصال زمین به زمین (زمین به زمین)

اگر توضیح برای شما واضح نیست، نمودار سیم کشی ارائه شده را دنبال کنید.

مرحله 4: تست

اکنون که همه قطعات کار را داریم، مطمئن شویم که سروو می‌تواند چفت را حرکت دهد. قبل از نصب ضامن روی در، یک نمونه آزمایشی جمع کردم تا مطمئن شوم سروو به اندازه کافی قوی است. در ابتدا به نظرم رسید که سروو من ضعیف است و یک قطره روغن به لچ اضافه کردم، بعد از آن همه چیز خوب عمل کرد. بسیار مهم است که مکانیسم به خوبی سر بخورد، در غیر این صورت خطر قفل شدن در اتاق خود را دارید.

مرحله 5: محفظه برای قطعات الکتریکی



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

ابعاد کناره های کیس:

  • پایین - 7.5x4 سانتی متر
  • درب - 7.5x4 سانتی متر
  • دیوار سمت چپ - 7.5x4 سانتی متر
  • دیوار سمت راست - 7.5x4 سانتی متر
  • دیوار جلو - 4x4 سانتی متر (با شکاف برای سیم برق)
  • دیوار پشتی - 4x4 سانتی متر

مرحله 6: درخواست

برای کنترل کنترلر، به یک گجت اندروید یا ویندوز با بلوتوث داخلی نیاز دارید. من فرصتی برای آزمایش برنامه روی دستگاه های اپل نداشتم، شاید به برخی از درایورها نیاز باشد.

من مطمئن هستم که برخی از شما این فرصت را دارید که آن را بررسی کنید. برای اندروید اپلیکیشن ترمینال بلوتوث و برای ویندوز تراترم را دانلود کنید. سپس باید ماژول را به گوشی هوشمند خود متصل کنید، نام آن باید linvor باشد، رمز عبور باید 0000 یا 1234 باشد. پس از برقراری جفت شدن، برنامه نصب شده را باز کنید، گزینه ها را وارد کرده و "ایجاد اتصال (ناامن)" را انتخاب کنید. گوشی هوشمند شما اکنون مانیتور سریال آردوینو است، به این معنی که می توانید با کنترلر ارتباط برقرار کنید.

اگر عدد 0 را وارد کنید، در بسته می شود و صفحه گوشی هوشمند پیام "در بسته" را نمایش می دهد.
اگر عدد 1 را وارد کنید، درب را باز می بینید و پیغام "در باز است" روی صفحه ظاهر می شود.
در ویندوز، فرآیند به همین صورت است، با این تفاوت که باید برنامه TeraTerm را نصب کنید.

مرحله 7: پیچ را نصب کنید


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

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

مرحله 8: تغذیه


برای تکمیل دستگاه، به یک منبع تغذیه، یک سیم و یک دوشاخه mini usb برای اتصال به آردوینو نیاز دارید.
ترمینال زمین منبع تغذیه را به ترمینال زمین پورت mini usb وصل کنید، سیم قرمز را به سیم قرمز پورت mini usb وصل کنید، سپس سیم را از قفل به لولای در و از آنجا به سوکت بکشید. .

مرحله 9: کد

#include Servo myservo; int pos = 0; int state; int flag=0; void setup() (myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() (if(Serial.available() > 0) (state = Serial.read(); flag=0; ) // اگر حالت "0" باشد، موتور DC خاموش می شود اگر (state == "0") (myservo.write(8); delay(1000)؛ سریال. println("Door Locked"); ) other if (state == "1") (myservo.write(55); delay(1000); Serial.println("Door Unlocked"); ) )

مرحله 10: قفل آردوینو به پایان رسید

از قفل کنترل از راه دور خود لذت ببرید و فراموش نکنید که دوستان خود را "به طور تصادفی" در اتاق قفل کنید.

درس امروز در مورد نحوه استفاده از یک خواننده RFID با آردوینو برای ایجاد یک سیستم قفل ساده، به عبارت ساده - یک قفل RFID است.

RFID (Eng. Radio Frequency Identification، شناسایی فرکانس رادیویی) روشی برای شناسایی خودکار اشیاء است که در آن داده های ذخیره شده در به اصطلاح فرستنده یا برچسب های RFID با استفاده از سیگنال های رادیویی خوانده یا نوشته می شوند. هر سیستم RFID از یک خواننده (خواننده، خواننده یا بازپرس) و یک فرستنده (با نام مستعار برچسب RFID، گاهی اوقات از اصطلاح برچسب RFID نیز استفاده می شود) تشکیل شده است.

این آموزش از یک تگ RFID با آردوینو استفاده می کند. دستگاه شناسه منحصر به فرد (UID) هر تگ RFID را که در کنار خواننده قرار می دهیم می خواند و آن را روی صفحه نمایش OLED نمایش می دهد. اگر UID تگ برابر با مقدار از پیش تعریف شده ای باشد که در حافظه آردوینو ذخیره می شود، پیام Unlocked را روی صفحه نمایش خواهیم دید. اگر شناسه منحصر به فرد با مقدار از پیش تعریف شده برابر نباشد، پیام "Unlocked" ظاهر نمی شود - عکس زیر را ببینید.

قلعه بسته است

قلعه باز است

جزئیات مورد نیاز برای ایجاد این پروژه:

  • RFID Reader RC522
  • صفحه نمایش OLED
  • تخته نان
  • سیم ها

توضیحات بیشتر:

  • باتری (پاوربانک)

هزینه کل اجزای پروژه تقریباً 15 دلار بود.

مرحله 2: RFID Reader RC522

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

همین تراشه در تگ های کلید فوب RFID وجود دارد.

هر تگ RFID یک شماره منحصر به فرد دارد که آن را مشخص می کند. این UID است که بر روی صفحه نمایش OLED نشان داده شده است. به استثنای این UID، هر تگ می تواند داده ها را ذخیره کند. این نوع کارت می تواند تا 1000 داده را ذخیره کند. چشمگیر است، اینطور نیست؟ این ویژگی امروز مورد استفاده قرار نخواهد گرفت. امروزه تنها چیزی که مورد توجه است شناسایی یک کارت خاص توسط UID آن است. ریدر RFID و این دو کارت RFID حدود 4 دلار قیمت دارند.

مرحله 3 صفحه نمایش OLED

این آموزش از یک نمایشگر 0.96 اینچی 128x64 I2C OLED استفاده می کند.

این صفحه نمایش بسیار خوبی برای استفاده با آردوینو است. این صفحه نمایش OLED است و این بدان معناست که مصرف انرژی پایینی دارد. توان مصرفی این نمایشگر حدود 10-20 میلی آمپر است و بستگی به تعداد پیکسل دارد.

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

این صفحه نمایش OLED بسیار روشن است و دارای یک کتابخانه عالی و بسیار زیبا است که Adafruit برای این نمایشگر ساخته است. علاوه بر این، صفحه نمایش از رابط I2C استفاده می کند، بنابراین اتصال به آردوینو فوق العاده آسان است.

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

مرحله 4: قرار دادن تمام قطعات در کنار هم

ارتباط با برد Arduino Uno بسیار ساده است. ابتدا برق را هم به خواننده و هم به نمایشگر وصل کنید.

مراقب باشید، خواننده RFID باید به خروجی 3.3 ولت آردوینو Uno متصل باشد وگرنه آسیب می بیند.

از آنجایی که نمایشگر می تواند با ولتاژ 3.3 ولت نیز کار کند، VCC را از هر دو ماژول به ریل تخته نان مثبت وصل می کنیم. سپس این ریل به خروجی 3.3 ولت آردوینو Uno متصل می شود. سپس هر دو پایه (GND) را به گذرگاه زمین تخته نان وصل می کنیم. سپس گذرگاه GND برد برد را به آردوینو GND وصل می کنیم.

صفحه نمایش OLED → آردوینو

SCL → آنالوگ پین 5

SDA → آنالوگ پین 4

RFID Reader → Arduino

RST → پین دیجیتال 9

IRQ ← متصل نیست

MISO → پین دیجیتال 12

MOSI → پین دیجیتال 11

SCK → پین دیجیتال 13

SDA → پین دیجیتال 10

ماژول خواننده RFID از رابط SPI برای برقراری ارتباط با آردوینو استفاده می کند. بنابراین ما قصد داریم از پین های SPI سخت افزاری Arduino UNO استفاده کنیم.

پایه RST به پین ​​دیجیتال 9 می رود. پین IRQ قطع می شود. پین MISO به پین ​​دیجیتال 12 می رود. پین MOSI به پین ​​دیجیتال 11 می رود. پین SCK به پین ​​دیجیتال 13 می رود و در نهایت پین SDA به پین ​​دیجیتال 10 می رود. همین.

خواننده RFID متصل است. اکنون باید صفحه نمایش OLED را با استفاده از رابط I2C به آردوینو متصل کنیم. بنابراین پین SCL روی نمایشگر به پین ​​آنالوگ 5 و SDA روی نمایشگر به پین ​​آنالوگ 4 می رود. اگر اکنون پروژه را روشن کرده و کارت RFID را در کنار خواننده قرار دهیم، می بینیم که پروژه به خوبی کار می کند.

مرحله 5: کد پروژه

برای اینکه کد پروژه کامپایل شود، باید چند کتابخانه را وارد کنیم. اول از همه، ما به کتابخانه MFRC522 Rfid نیاز داریم.

برای نصب آن به طرح -> شامل کتابخانه ها -> مدیریت کتابخانه ها(مدیریت کتابخانه ها). MFRC522 را پیدا کرده و نصب کنید.

همچنین برای نمایش به کتابخانه Adafruit SSD1306 و کتابخانه Adafruit GFX نیاز داریم.

هر دو کتابخانه را نصب کنید. کتابخانه Adafruit SSD1306 نیاز به اصلاح کمی دارد. به پوشه بروید آردوینو -> کتابخانه هاپوشه Adafruit SSD1306 را باز کرده و کتابخانه را ویرایش کنید Adafruit_SSD1306.h. خط 70 را کامنت کنید و خط 69 را حذف کنید زیرا وضوح صفحه نمایش 128x64 است.

ابتدا، مقدار تگ RFID را که آردوینو باید تشخیص دهد، اعلام می کنیم. این یک آرایه از اعداد صحیح است:

کد int = (69,141,8,136); // UID

سپس خواننده و نمایشگر RFID را مقداردهی اولیه می کنیم:

Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC، 0x3C)؛

پس از آن، در تابع حلقه، برچسب روی خواننده را هر 100 میلی ثانیه چک می کنیم.

اگر خواننده تگ داشته باشد، UID آن را می خوانیم و روی نمایشگر چاپ می کنیم. سپس UID برچسبی را که فقط خواندیم با مقدار ذخیره شده در متغیر کد مقایسه می کنیم. اگر مقادیر یکسان باشد، پیام UNLOCK را نمایش می دهیم، در غیر این صورت این پیام را نمایش نمی دهیم.

If(match) ( Serial.println("\nاین کارت را می شناسم!"); printUnlockMessage(); )else ( Serial.println("\nکارت ناشناس"); )

البته می توانید این کد را طوری تغییر دهید که بیش از 1 مقدار UID ذخیره شود تا پروژه تگ های RFID بیشتری را شناسایی کند. این فقط یک مثال است.

کد پروژه:

#عبارتند از #عبارتند از #عبارتند از #عبارتند از #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // نمونه کلاس MFRC522:: کلید MIFARE_Key; کد int = (69,141,8,136); //این UID ذخیره شده int codeRead = 0 است. رشته uidString; void setup() (Serial.begin(9600); SPI.begin(); // راه اندازی گذرگاه SPI rfid.PCD_Init(); // راه اندازی MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C)؛ // مقداردهی اولیه با افزودن I2C 0x3D (برای 128x64) // پاک کردن buffer.display.clearDisplay(); display.display(); display.setTextColor(WHITE); // یا BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("RFID Lock"); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) delay(100); ) void readRFID() (rfid.PICC_ReadCardSerial(); Serial.print(F("\nنوع PICC: ") MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)؛ Serial.println(rfid.PICC_GetTypeName(piccType))؛ // بررسی کنید که PICC از نوع MIFARE کلاسیک باشد اگر (2:2:MIN_PIFIPEI!=MIFARC! && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("برچسب شما از نوع MIFARE Classic نیست.")); return; ) (Serialprint. UID PICC اسکن شده:"؛ printDec(rfid.uid.uidByte, rfid.uid.size)؛ uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0؛ تطبیق بولی = درست؛ while(i

مرحله 6: نتیجه نهایی

همانطور که از درس می بینید - با پول کمی می توانید یک خواننده RFID به پروژه های خود اضافه کنید. شما می توانید به راحتی با این خواننده یک سیستم امنیتی ایجاد کنید یا مثلا پروژه های جالب تری ایجاد کنید، به طوری که داده های یک درایو USB فقط پس از باز کردن قفل خوانده شوند.

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

  • مکانیزم قفل. برای باز و بسته کردن درب استفاده می شود. این پروژه استفاده از سه مکانیسم مختلف را در نظر می گیرد:
    • سروو بزرگ هستند، کوچک هستند. بسیار جمع و جور، و همراه با یک پیچ سنگین - یک گزینه عالی
    • قفل درب ماشین برقی. یک چیز بزرگ و قدرتمند، اما فقط جریان های جنون آمیز را می خورد
    • چفت برقی. گزینه خوبی است، زیرا به خودی خود بسته می شود

    در تنظیمات سیستم عامل، می توانید هر یک از سه نوع (تنظیم قفل_نوع)

  • دکمه داخل. برای باز و بسته کردن در از داخل استفاده می شود. می توان آن را روی دستگیره در (سمت کف دست یا انگشت)، روی خود در یا روی پایه قرار داد
  • دکمه بیرون. برای بستن درب و همچنین بیدار شدن از صرفه جویی در انرژی استفاده می کند. می توان آن را روی دستگیره در (سمت کف دست یا انگشت)، روی خود در یا روی پایه قرار داد
  • تریلربرای بستن در برای بسته شدن خودکار قفل هنگام بسته شدن درب کار می کند. ممکنه باشند:
    • دکمه تاکت
    • سنسور هال + آهنربا روی خود درب
    • سوئیچ نی + آهنربا روی خود درب
  • راز دکمه بازنشانی دسترسی. برای تنظیم مجدد رمز عبور / وارد کردن رمز عبور جدید / به خاطر سپردن یک کلید / ترکیب جدید و غیره استفاده می شود. ممکن است در جایی از بدن پنهان شده باشد
  • دیود ساطع نوربرای نشان دادن عملیات از رنگ‌های LED RGB، قرمز و سبز استفاده می‌شود (وقتی مخلوط می‌شوند زرد می‌شوند):
    • سبز روشن - قفل باز است. روشن به یاد داشته باشید که در را ببندید
    • زرد جامد - سیستم بیدار است و منتظر رمز عبور است
    • چشمک زن قرمز - باتری کم است

هر یک از این عناصر را می توان از سیستم حذف کرد:

  • ما تریلر را حذف می کنیم. در فریمور در تنظیمات، آن را نیز خاموش می کنیم (تنظیم دکمه_دم). حالا برای بستن قفل باید دکمه را فشار دهید
  • دکمه بیرونی را بردارید. در فریمور در تنظیمات، آن را نیز خاموش می کنیم (تنظیم wake_button). اکنون سیستم نیازی به بیدار شدن ندارد، خود به خود بیدار می شود (مصرف برق کمی بالاتر است). و همچنین دیگر دکمه بستن در جلوی در نداریم و به یک سوئیچ محدود نیاز داریم. یا قلعه جهنمی است
  • دکمه داخلی را حذف می کنیم. این گزینه برای کابینت و گاوصندوق مناسب است. شما نیازی به تغییر چیزی در تنظیمات ندارید.
  • LED را حذف می کنیم. شما نیازی به تغییر چیزی در تنظیمات ندارید.
  • دکمه تنظیم مجدد دسترسی را می توان پس از اولین استفاده از لحیم خارج کرد یا می توانید کد را برای خود بازنویسی کنید
  • در بسته، OUTSIDE فشار داده شده - بیدار شوید، منتظر ورود رمز عبور / برچسب RFID / کلید الکترونیکی / اثر انگشت باشید
  • در بسته است، سیستم از خواب بیدار شده و منتظر وارد شدن رمز عبور است. زمان را می توان تنظیم کرد (تنظیم وقت خواب)
  • در بسته، رمز/برچسب/کلید وارد شده و غیره - باز کن
  • در بسته، فشار داده شده در داخل - باز
  • در باز است، فشار خارج - بسته
  • در باز، فشار داخل - بسته
  • در باز است، سوئیچ LIMIT فشار داده شده است - ببندید

قفل طوری طراحی شده است که در حالت صرفه جویی در مصرف انرژی با باتری کار کند (فعال کردن غیرفعال کردن: تنظیمات sleep_enable)، برای مثال:

  • هر چند ثانیه یکبار بیدار شوید، EVENT را دنبال کنید (اختیاری، اگر دکمه ای در بیرون وجود ندارد. می توانید آن را در تنظیمات فعال کنید. wake_button)
  • ولتاژ باتری را هر چند دقیقه نظارت کنید (تنظیم روشن/خاموش باتری_مانیتور)
  • اگر باتری تخلیه شود (ولتاژ در تنظیمات تنظیم شده است bat_low):
    • در را باز کنید (اختیاری، می توان آن را در سیستم عامل پیکربندی کرد open_bat_low)
    • باز و بسته شدن بیشتر را ممنوع کنید
    • چراغ قرمز چشمک زن هنگام فشار دادن دکمه
    • توقف دنبال کردن یک EVENT (به عنوان مثال ورود رمز عبور/برچسب و غیره)

هنگامی که سیستم بیدار است، دکمه تغییر رمز عبور (دکمه پنهان) را فشار دهید. ما در می افتیم حالت تغییر رمز عبور:
رمز عبور را از اعداد وارد کنید ( حداکثر 10 عدد!!!)

  • وقتی * را فشار دهید، رمز عبور در حافظه نوشته می شود و سیستم از تغییر رمز عبور خارج می شود
  • وقتی # را فشار می دهید، رمز عبور بازنشانی می شود (می توانید دوباره آن را وارد کنید)
  • اگر به مدت 10 ثانیه چیزی را فشار ندهید، به طور خودکار از حالت تغییر رمز عبور خارج می شویم، رمز عبور قدیمی باقی می ماند.

هنگامی که سیستم خواب نیست (با دکمه بیدار می شود یا خواب غیرفعال است)، برای ورود به حالت ورود رمز عبور * را فشار دهید.
اگر سیستم خواب است و به طور دوره‌ای بیدار می‌شود تا EVENT را بررسی کند، * را فشار داده و نگه دارید تا LED قرمز روشن شود.
حالت ورودی رمز عبور:

  • پردازش رمز به این صورت انجام می شود که رمز عبور صحیح تنها زمانی شمارش می شود که دنباله صحیح اعداد وارد شده باشد، یعنی اگر رمز عبور 345 باشد، می توانید هر عددی را تا زمانی که دنباله 345 ظاهر شود، وارد کنید، یعنی. 30984570345 قفل را باز می کند زیرا در 345 به پایان می رسد.
  • اگر رمز عبور درست باشد، در باز می شود
  • اگر چیزی را فشار ندهید، پس از 10 ثانیه سیستم به حالت عادی (استندبای) باز می گردد
  • اگر # را فشار دهید، بلافاصله از حالت ورود رمز عبور خارج می شویم
  • اگر دکمه مخفی را برای تغییر رمز عبور در حالت ورود رمز عبور فشار دهید، ما نیز از آن خارج خواهیم شد