قفل بصمة البيومترية محلية الصنع لباب المرآب. قفل بصمة بيومترية محلي الصنع لباب المرآب توصيل مستشعر بصمة الإصبع بالكمبيوتر

قفل بصمة البيومترية محلية الصنع لباب المرآب. قفل بصمة بيومترية محلي الصنع لباب المرآب توصيل مستشعر بصمة الإصبع بالكمبيوتر

وبما أنني لا أملك سيارة، فلا أحتاج إلى حمل مفاتيحي معي في كل مكان. ولهذا السبب، اتضح أنني وجدت نفسي عدة مرات بدون مفاتيح خارج المنزل واضطررت إلى انتظار عودة أحد الأقارب إلى المنزل والسماح لي بالدخول، وفي مرحلة ما قررت أنني بحاجة إلى القيام بشيء حيال ذلك وصممت قفل مرآب محلي الصنع.

سأوضح لك في هذا المشروع كيفية عمل قفل ببصمة الإصبع لبابك الأمامي.

الخطوة 1: المواد


فيما يلي قائمة بالمواد والأدوات المطلوبة.

الالكترونيات:

  • الماسح الضوئي لبصمات الأصابع (وموصل JST)
  • مجموعة شاشات الكريستال السائل (مع ATmega328)
  • ATtiny85
  • الترانزستور NPN
  • مكبر الصوت
  • سلك مكبر الصوت
  • الحالة (في الخطوة 9 ستكون هناك ملفات للطباعة ثلاثية الأبعاد)
  • فيلم النحاس
  • منظم الجهد 5 فولت
  • بطارية 9 فولت
  • موصل لبطارية 9 فولت
  • التبديل SPDT

للراحة، سأرفق قائمة أمنيات جاهزة على موقع Sparkfun.

أداة:

  • لحام الحديد واللحام
  • الشريط العازل
  • الأسلاك والصداري
  • كماشة / متجرد
  • لوحة النماذج الأولية
  • مقاومات مختلفة
  • مسامير
  • تدريبات
  • عدة مصابيح LED للاختبار
  • لوحة FTDI 5V
  • مسدس الغراء الساخن
  • الوصول إلى طابعة ثلاثية الأبعاد
  • اختياري: مقبس IC (8 سنون لـ ATtiny و28 سنًا لـ ATmega)
  • اختياري: لوحة Arduino أخرى / مكثف 10 فائق التوهج (التفاصيل في الخطوة 5)

الخطوة 2: مخطط الجهاز






تأتي مجموعة شاشات الكريستال السائل التي تم شراؤها من Sparkfun مزودة بـ ATmega328 الذي يتحكم في الشاشة. يعد ATmega328 قويًا جدًا ويمكن استخدامه ليس فقط للتحكم في العرض، ولكن أيضًا لمهام أخرى. في ضوء ذلك، يمكننا استخدامه بدلاً من Arduino للتواصل مع الماسح الضوئي لبصمات الأصابع وإرسال الأوامر إلى ATtiny85 والتحكم في الشاشة والصافرة.

لمنع قفل الباب البيومتري من العمل طوال الوقت، قمت ببناء مفتاح فيه يعمل لحظة إغلاق العلبة. إذا تم إغلاق العلبة، فلن يتم توفير الطاقة للجهاز، ونقوم بحفظ موارد البطارية.

ملاحظة هامة: يعمل ماسح بصمات الأصابع بجهد 3.3 فولت، لذا أوصي باستخدام مقسم الجهد الذي يحول الإشارات من ATmega إلى 3.2 فولت. يتكون مقسم الجهد من مقاومة 560 أوم بين دبوس الماسح الضوئي D10/الثاني ومقاوم 1K بين دبوس الماسح الضوئي GND/الثاني.

دبوس LCD:

  • D10 - دبوس الماسح الضوئي 1 (سلك أسود)
  • D11 - الماسح الضوئي رقم 2 (عبر مقسم الجهد)
  • D12 - أتيني85
  • D13 - صرير

ATtiny85 دبوس:

  • الدبوس 5 (0 في رمز البرنامج) - الإدخال من ATmega
  • الدبوس 3 (4 في رمز البرنامج) - الترانزستور / LED الأصفر
  • الدبوس 7 (2 في رمز البرنامج) - إشارة LED

الخطوة 3: تجميع المكونات من مجموعة شاشات الكريستال السائل

اسم الخطوة يتحدث عن نفسه: دليل البدء/التجميع السريع سهل الاستخدام

الخطوة 4: تجميع الدائرة على لوحة النماذج الأولية




إن وضع المكونات على اللوحة أمر متروك لك، فقط حاول لحام الأسلاك بحيث تواجه نفس الاتجاه ولا تنكسر.

بمجرد التجميع، قمت بتغطية الجزء العلوي والسفلي من اللوحة بالغراء الساخن - مما أدى إلى تأمين عناصر الدائرة وعزلها. الغراء الساخن لن يلحق الضرر بالرقاقة.

كما هو الحال مع اللوحة الرئيسية، قم بلحام كل شيء بلوحة ATtiny ثم استخدم الغراء الساخن لتأمين المكونات وعزلها. يمكن أن يصبح منظم الجهد ساخنًا جدًا، لذلك من الجيد تجنب وضع الغراء الساخن عليه أو على أي أسطح قريبة منه. من الأفضل أيضًا عدم تغطية لوحة ATtiny بالغراء الساخن، حيث قد ترغب في إزالتها وإعادة برمجتها.

الخطوة 5: برمجة ATmega328

كما هو مذكور في الخطوة 2، يحتوي ATmega328 على معالج قوي بما يكفي ودبابيس كافية لتشغيل شاشة LCD أثناء التحكم في المكونات الإضافية الأخرى. لتحقيق ذلك، تحتاج إلى برمجة الشريحة.

اذا كنت تمتلك اردوينو أونوأو Duemilanove، يمكنك ببساطة إزالة الشريحة منها واستبدالها بالشريحة المرفقة في المجموعة. أو يمكنك العثور على لوحة FTDI Basic Breakout (5V) ومرفقات اللحام على جانبها (انظر الصور في الخطوة 3)

ستحتاج أيضًا إلى تحميل الكود في وضع "Duemilanove w/ATmega328".

الرمز أدناه - برنامج العملللتحقق من وظائف الجهاز.

#include "LiquidCrystal.h" LiquidCrystal LCD(2,3,4,5,6,7,8); إعداد الفراغ () (pinMode (9، OUTPUT)؛ // الإضاءة الخلفية pinMode (13، OUTPUT)؛ // beeper LCD.begin (16، 2)؛ // 16 حرفًا عرضًا، 2 كتابة رقمية عالية (9، HIGH) ؛ / / قم بتشغيل الإضاءة الخلفية LCD.print("Hello World!"); //توسيط النص باستخدام مسافات Delay(2000); .clear( ); lcd.print(" الجرس قيد التشغيل "); تأخير(1000);

الخطوة 6: إعداد الماسح الضوئي لبصمات الأصابع

لقد استخدمت هذه المكتبة للتواصل مع الماسح الضوئي. رابط التحميل المباشر .

للتحقق مما إذا كان الكود الخاص بك يعمل، قم بتنزيل أداة اختبار الوميض هذه.

يحتوي الماسح الضوئي لبصمات الأصابع على ذاكرة مدمجة خاصة به لتخزين البيانات. لذا، بعد التأكد من أن الماسح الضوئي يعمل، قم بتنزيل هذا البرنامج لإضافة بصمة إصبعك إلى قاعدة البيانات تحت المعرف #0. افتح وحدة التحكم التسلسلية الخاصة بك واتبع التعليمات ببساطة.

برنامج وميض LED لاختبار الماسح الضوئي

/* سيؤدي هذا الرمز البسيط إلى تشغيل وإيقاف تشغيل مؤشر LED. يتم استخدامه لفهم ما إذا كان الاتصال يعمل. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" // إعداد الأجهزة - ماسح الإصبع متصل بـ: // Digital pin 10(arduino rx, fps tx) //digital pin 11(arduino tx - 560ohm fps resistor tx - مقاوم 1000ohm - GND) // يؤدي هذا إلى خفض 5v tx إلى حوالي 3.2v ولن نحرق الماسح الضوئي الخاص بنا FPS_GT511C3 fps(10, 11); إعداد باطلة())( Serial.begin(9600); fps.UseSerialDebug = صحيح; // يمكنك رؤية الرسائل على شاشة التصحيح التسلسلي fps.Open(); ) حلقة باطلة())( // اختبار وامض LED لـ fps scan.SetLED(true); // يقوم بتشغيل مؤشر LED الموجود داخل الماسح الضوئي Delay(1000);

برنامج لتسجيل البيانات في الماسح الضوئي

#include "FPS_GT511C3.h" #include "SoftwareSerial.h" // إعداد الأجهزة - ماسح الإصبع متصل بـ: // Digital pin 10(arduino rx, fps tx) //digital pin 11(arduino tx - 560ohm resistor fps tx - مقاوم 1000 أوم - GND) // يؤدي هذا إلى خفض 5 فولت إلى حوالي 3.2 فولت ولن نحرق الماسح الضوئي الخاص بنا FPS_GT511C3 fps(10, 11); إعداد باطلة())( Serial.begin(9600); تأخير(100); fps.Open(); fps.SetLED(true); Enroll(); ) باطلة Enroll())( // اختبار التسجيل // ابحث عن فتح المعرف int enrollid = 0; fps.EnrollStart(enrollid); // التسجيل Serial.print("اضغط بإصبعك للتسجيل #"); .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("إزالة الإصبع"); fps.Enroll1(); while(fps.IsPressFinger() == true) تأخير(100) Serial.println("اضغط على نفس الإصبع مرة أخرى"); while(fps.IsPressFinger() == false) تأخير(100); "إزالة الإصبع"); while(fps.IsPressFinger() == true) تأخير(100); () == false) تأخير(100); Serial.println("إزالة الإصبع"); iret = fps.Enroll3(); if (iret = = 0) (Serial.println("تم التسجيل بنجاح"); ) else ( Serial.print("فشل التسجيل مع رمز الخطأ:"); Serial.println(iret); ) ) else Serial.println("فشل في التقاط الإصبع الثالث"); ) else Serial.println("فشل في التقاط الإصبع الثاني"); ) else Serial.println("فشل في التقاط الإصبع الأول"); ) حلقة باطلة ()) (تأخير (100000)؛) ملفات

الخطوة 7: برمجة ATtiny85


ATtiny85 يشبه Arduino رخيص الثمن الذي تم تجميعه في شريحة واحدة. يمكن برمجة ATtiny85 بواسطة Arduinos أخرى، بما في ذلك ATmega328 الموجود في مجموعة LCD الخاصة بنا. يتم استخدامه في المشروع لتشغيل أوامر بسيطة جدًا: التحقق من الإشارة من ATmega وفتح البوابة إذا كانت الإشارة صحيحة.

لبرمجته قم بتوصيل كل شيء حسب الصور المرفقة. ثم قم بتنزيل الملفات الضرورية واتبع هذه التعليمات.

بعد تنزيل الكود، يجب أن يضيء المنفذ 13 الموجود على Arduino (LED المدمج)، للإشارة إلى أنه تم تنزيل الكود.

الكود النهائي:

// يتلقى إشارة قصيرة من الوحدة الرئيسية لإغلاق إعداد باطلة التتابع ()) (pinMode (2، OUTPUT)؛ // إشارة LED من خلال pinMode المقاوم 10K (4، OUTPUT)؛ // دبوس الترانزستور الذي يفتح المرآب pinMode(0,INPUT ); // تأخير الإدخال (500); // امنح الجهاز وقتًا لبدء الكتابة الرقمية (2، HIGH)؛ // إشارة LED ) حلقة باطلة ()) (if(digitalRead(0))( / / نمط بسيط لتبديل تأخير الترانزستور (125)؛ if(digitalRead(0)==false)( تأخير(55); // انتظر، لأن مؤقت ATtiny ليس مثاليًا if(digitalRead(0))( تأخير(55) ); if(digitalRead(0)= =false)( تأخير(55); if(digitalRead(0))( تأخير(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); / / "يضغط" الترانزستور على زر التأخير (1000) ؛ الكتابة الرقمية (4، LOW)؛ الكتابة الرقمية (2، LOW)؛

الخطوة 8: الكود النهائي

يوجد أدناه برنامج Arduino قمت بكتابته باستخدام الماسح الضوئي ومكتبات العرض. ولتوضيح ما يحدث في كل جزء من البرنامج، حاولت التعليق على كل شيء بأفضل طريقة ممكنة. بعد تنزيل هذا الرمز، يجب أن يعمل كل شيء وكل ما يتعين عليك فعله هو دمج النظام في الباب.

تحذير: إذا كانت مكتبة الماسح الضوئي لا تعمل، فحاول استخدامها نسخة قديمةاردوينو بيئة تطوير متكاملة.

رمز ATmega238:

#include "LiquidCrystal.h" // مكتبة العرض #include "FPS_GT511C3.h" // مكتبة fps (ماسح بصمات الأصابع) #include "SoftwareSerial.h" // المستخدمة من قبل مكتبة الماسح الضوئي // تكوين دبابيس العرض والماسح الضوئي LiquidCrystal LCD( 2، 3، 4، 5، 6، 7، 8)؛ // عرض دبوس FPS_GT511C3 fps(10, 11); //RX, TX boolean isFinger = false; // صحيح إذا اكتشفت مكتبة fps الإصبع على الماسح الضوئي // دبابيس الإخراج const int BuzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12؛ const String idNames = ("self"، "Bro"، "Ryan"، "Mom"، "Dad"، "Auntie"، "Grandma"، "Zeide"، "Person"، "person"، "Thumb")؛ إعداد الفراغ ()) (// إعداد المخرجات pinMode (buzzerPin، OUTPUT)؛ pinMode (backlightPin، OUTPUT)؛ pinMode (attinyPin، OUTPUT)؛ // لتصحيح الأخطاء //Serial.begin (9600)؛ fps.UseSerialDebug = خطأ // يصبح صحيحًا لتصحيح أخطاء الإطارات في الثانية عبر منفذ تسلسلي// تهيئة المكتبات LCD.begin(16,2); الكتابة الرقمية (backlightPin، HIGH)؛ // إضاءة خلفية لشاشة LCD fps.Open(); fps.SetLED(true); // LED لـ fps // تحميل الصوت for(int i=0; i<30; i++){ tone(buzzerPin, 50+10*i, 30); delay(30); } tone(buzzerPin, 350); //вывод стартового сообщения lcd.print("Put your finger "); //команда вывода на экран lcd.setCursor(0, 1); //устанавливаем курсор на нулевую колонку первой строки lcd.print(" on the scanner "); delay(150); noTone(buzzerPin); //останавливаем стартовый звук } void loop(){ //сканируем и распознаём отпечаток, когда приложен палец waitForFinger(); lcd.clear(); //очищаем экран и устанавливаем курсов в положение 0,0 fps.CaptureFinger(false); //захватываем отпечаток для идентификации int id = fps.Identify1_N(); //идентифицируем отпечаток и сохраняем id if(id <= 10){ lcd.print(" Access granted "); //сообщение об успехе lcd.setCursor(0,1); //выводим на экран имя когда дверь открывается String message = " Hey " + idNames + "!"; lcd.print(message); tone(buzzerPin, 262, 1000); delay(1500); //отправляем сигнал для открытия двери digitalWrite(attinyPin, HIGH); //первый импульс синхронизирует задержку (10ms) delay(5); digitalWrite(attinyPin, LOW); delay(3); digitalWrite(attinyPin, HIGH); //следующие два - открывают дверь delay(15); digitalWrite(attinyPin, LOW); delay(5); digitalWrite(attinyPin, HIGH); delay(10); digitalWrite(attinyPin, LOW); delay(1000); lcd.clear(); lcd.print("Don"t forget to "); lcd.setCursor(0,1); lcd.print(" shut me off! "); delay(2000); waitForFinger(); //нажмите чтобы продолжить запись while(true){ //сохраняет новый отпечаток //выводит сообщение на экран lcd.clear(); lcd.print(centerText("So you want to")); lcd.setCursor(0,1); lcd.print(centerText("scan a new one?")); delay(2000); //Скопировано и слегка модифицировано из примера регистрации данных: int enrollid = 11; //выбираете какой id переписать\создать //отпустите палец, когда хотите записать id/имя, напечатанное на экране waitForFinger(); //ждёт, когда будет нажат fps while(enrollid==11){ for (int i = 1; i1){ lcd.print(i); enrollid = i-1; break; } } } //предупреждение, если в данном слоте уже есть данные if(fps.CheckEnrolled(enrollid)){ lcd.clear(); lcd.print(" Warning! ID #"); lcd.print(enrollid); lcd.setCursor(0,1); lcd.print(" has data. OK? "); delay(2500); waitForFinger(); //ждёт, когда будет нажат fps fps.DeleteID(enrollid); //удаляет данные delay(100); } //Enroll fps.EnrollStart(enrollid); lcd.clear(); lcd.print("Place finger to "); lcd.setCursor(0,1); lcd.print("enroll #"); lcd.print(enrollid); //выводит id, который был добавлен waitForFinger(); //ждёт, когда будет нажат fps //захватывает отпечаток и сохраняет его в память трижды для точности данных bool bret = fps.CaptureFinger(true); //картинка высокого качества для записи int iret = 0; //в случае ошибки if (bret != false){ //первая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); //ждёт пока уберут палец lcd.clear(); lcd.print(" Press again "); waitForFinger(); //ждёт, когда будет нажат fps bret = fps.CaptureFinger(true); if (bret != false){ //вторая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); lcd.clear(); lcd.print("Press yet again "); waitForFinger(); bret = fps.CaptureFinger(true); if (bret != false){ //третья регистрация iret = fps.Enroll3(); if (iret == 0){ //проверяет, были ли какие-нибудь ошибки lcd.clear(); lcd.print(" Success! "); delay(2000); beep(); //выключает Ардуино } else{ //запускает этот код в случае любой ошибки lcd.clear(); lcd.print("Fail. Try again "); delay(1000); } } lcd.clear(); lcd.print(" Failed 3rd "); //ошибка на третьей записи delay(1000); } lcd.clear(); lcd.print(" Failed 2nd "); //ошибка на второй записи delay(1000); } lcd.clear(); lcd.print(" Failed 1st "); //ошибка на первой записи delay(1000); } } else{ lcd.print("Fingerprint is"); //если отпечаток не распознан lcd.setCursor(0,1); lcd.print(" unverified "); delay(2000); lcd.clear(); lcd.print("Please try again"); lcd.setCursor(0,1); lcd.print("Use your pointer"); //pointer - указательный палец (можете использовать любой и заменить это слово) delay(500); } delay(250); } void beep(){ //издаёт звуки, чтобы кто-нибудь закрыл кейс lcd.clear(); lcd.print("Please close the"); lcd.setCursor(0,1); lcd.print(" case! "); for(int i=0;i=80 && !fps.IsPressFinger()){ beep(); } } timer = 0; //обнуляет таймер как только функция завершится } String centerText(String s) { //центрует текст на дисплее, чтобы он лучше смотрелся while(16-s.length()>1)( // إذا كان النص يحتاج إلى توسيط s = " " + s + " "؛ // يضيف مسافات بالتساوي على كلا الجانبين) return s; ) الملفات


لإنشاء مثل هذا المشروع، كان على المؤلف تعديل نظام البداية لسيارته. الاتصال الرئيسي هو موصل IG من مفتاح الإشعال، والذي من خلاله يتم توفير جهد الإمداد إلى منظم الجهد، ثم إلى Arduino نفسه لتشغيله، وكذلك تشغيل مستشعر مسح الإصبع. إذا نجح فحص الإصبع، يقوم النظام بتنشيط وحدة الترحيل، ويتحكم في مرحل البداية. الآن يمكنك تشغيل السيارة. يعمل المستشعر لمدة 10 ثوانٍ، ويمكن إعادة تشغيله بتكرار دورة بدء الإشعال. إذا لم يكتشف المستشعر بصمة الإصبع خلال الوقت المخصص أو أنه لا يتطابق مع البصمة المحددة، فسيتم تعطيل نظام التشغيل ولن يبدأ المحرك.

نظرًا لأن كل سيارة لديها نظام تشغيل خاص بها، فمن الضروري إلقاء نظرة على المخطط الكهربائي قبل تعديل نظام تشغيل المحرك.

توضح هذه المقالة كيفية توصيل جهاز مضاد للسرقة بسيارة Mitsubishi Lancer 2000 كوبيه ذات البابين.

مواد:
- اردوينو أونو.
- ماسح البصمات.
- مزود الطاقة.
- وحدة التتابع.
- الترانزستور NPN BC547B
- المقاوم 1 كيلو أوم










مخطط الاتصال:
يتم تعديل الدائرة قليلاً وفقاً للمكونات المستخدمة. يرجى تذكر أنه صالح فقط لطراز السيارة هذا.

الخطوة الأولى: تحضير مكونات البرنامج:
في Arduino IDE، يتم تحميل المكتبة وإضافتها.
يتم تحميل ملف من مكتبة plain.ino إلى Arduino، والذي سيكون بمثابة واجهة بين المستشعر ووحدة التحكم الدقيقة.
تم تثبيت البرنامج وتوصيل المستشعر بالاردوينو كما هو موضح في الرسم التخطيطي. وبعد ذلك يتم تحميل البصمة من خلال البرنامج المثبت.


الآن تم توصيل المستشعر كما هو موضح في الرسم البياني التالي. وبعد ذلك يشرع المؤلف في تنزيل البرنامج الرئيسي. يتم توصيل LED مع المقاوم إلى دبوس 12.

سيعمل البرنامج بشكل أساسي بناءً على المواد التدريبية الخاصة بـ Adafruit Fingerprint. الشيء الوحيد الذي تمت إضافته إلى كود البرنامج هو مؤقت إيقاف تشغيل المستشعر لمدة 10 ثوانٍ. يمكنك تحميل الكود أسفل المقال.

الخطوة 3 التجميع:
الجزء 1:

أولاً، قم بفك البراغي الموجودة أسفل لوحة القيادة. تتم إزالة الجزء السفلي من اللوحة، ويمكن وضع المستشعر في المساحة الحرة.



الجزء 2:
في الموقع المحدد للمستشعر، يتم قطع منطقة لتثبيته الموثوق.





الجزء 3:
يتم تثبيت لوحة Arduino خلف مستشعر بصمة الإصبع. تم شحذ مكان تثبيت Arduino قليلاً حتى تتمكن اللوحة من اتخاذ الموضع الصحيح.



الجزء 4:
يتم تركيب مصدر الطاقة المنظم خلف لوحة القيادة على جانب السائق.

الجزء 5:
يتم توصيل مكونات المعدات المتبقية وفقًا للمخطط الموجود في بداية المقالة.







الخطوة 4 التثبيت:
يتم توصيل الأسلاك اللازمة ويتم تثبيت الجهاز أسفل لوحة القيادة. يتأكد المؤلف من عدم وجود ماس كهربائي.

لإنشاء نظام أمان بيومتري بسيط لحماية سيارتك من الوصول غير المصرح به، سنحتاج إلى مستشعر بصمات الأصابع ووحدة التحكم الدقيقة Arduino. يستخدم هذا المشروع مواد تدريب Adafruit. لتسهيل التكرار، يتم استخدام رمز البرنامج الكامل من هذه المادة، مع تغييرات طفيفة.

أولاً، نقوم بتعديل نظام تشغيل السيارة. الاتصال الرئيسي هو موصل IG من مفتاح الإشعال، والذي يزود منظم الجهد بالطاقة، ثم إلى متحكم Arduino لتشغيله وإيقافه ومسح الإصبع على المستشعر لمدة 10 ثوانٍ. إذا تمت مطابقة بصمة الإصبع، يقوم النظام بتنشيط صندوق الترحيل، الذي يتحكم في مرحل البداية. يمكنك الآن تشغيل المحرك. بعد مرور 10 ثوانٍ، يتم إيقاف تشغيل مستشعر بصمة الإصبع. يمكنك تشغيله مرة أخرى عن طريق تكرار دورة الإشعال. إذا لم يكتشف المستشعر بصمة الإصبع خلال 10 ثوانٍ أو إذا كانت بصمة الإصبع لا تتطابق مع البصمة المرجعية، فسيتم إيقاف تشغيل نظام التشغيل ولا يبدأ المحرك.

نظرًا لأن كل مركبة لديها نظام تكوين بدء مختلف، فسوف تحتاج إلى استشارة كهربائي حول النظام الكهربائي للمركبة أو مراجعة مخطط الأسلاك قبل تعديل نظام التشغيل.

يرجى ملاحظة أن مستشعر بصمة الإصبع لا يقوم بتشغيل المحرك. فهو ببساطة يقوم بتنشيط وإلغاء تنشيط مرحل بداية التشغيل، مما يمنع المحرك أو يسمح له بالبدء.

تم في هذا المشروع تركيب جهاز مضاد للسرقة على سيارة ميتسوبيشي لانسر 2000 كوبيه ذات البابين.

الخطوة 1: المكونات المستخدمة

الخطوة 4: تحميل البرنامج الرئيسي

قم بتوصيل مستشعر بصمة الإصبع كما هو موضح في الرسم التخطيطي وقم بتحميل البرنامج الرئيسي. قم بتوصيل مؤشر LED ومقاوم بالطرف 12 لمراقبة التشغيل الصحيح.

يعمل البرنامج على مبدأ المادة التعليمية Adafruit Fingerprint. ومع ذلك، قمت بتعديل الكود قليلاً وأضفت مؤقتًا لإيقاف تشغيل المستشعر بعد 10 ثوانٍ لتجنب تشتيت الانتباه عن مؤشر LED الوامض للمستشعر.

الخطوة 5: جزء التجميع 1

قم بإزالة المسامير الموجودة أسفل لوحة القيادة. قم بفك ذراع تحرير غطاء المحرك. قم بإزالة الجزء السفلي من لوحة القيادة. ضع المستشعر في المساحة الحرة.

الخطوة 6: التجميع، الجزء 2

قم بقياس المسافة المطلوبة وقطع مساحة صغيرة لتثبيت المستشعر بشكل آمن.

الخطوة 7: التجميع، الجزء 3

من الأفضل تثبيت لوحة Arduino Uno خلف مستشعر بصمة الإصبع. لقد قمت بشحذ المقعد قليلاً لوضع لوحة Arduino Uno في الموضع الصحيح.

لإنشاء اتصال بمستشعر بصمة الإصبع، تم استخدام تعليمات جوش هاولي (تنزيل مباشر للتعليمات).

لتصحيح أخطاء تشغيل الماسح الضوئي لبصمات الأصابع مع شاشة عرض الحروف، تكون المزامنة ضرورية.

يحتوي مستشعر بصمة الإصبع على ذاكرة خاصة به لتخزين الصور الممسوحة ضوئيًا. لذا، بعد أن يبدأ المستشعر في العمل، قم بتنزيله عن طريق إضافته إلى قاعدة بيانات بصمات الأصابع على العنوان 0. افتح وحدة التحكم الإدارية على جهاز الكمبيوتر الخاص بك واتبع المطالبات المنبثقة.

الرموز - مثال وميض:

/* مثال مكتبة للتحكم في ماسح بصمات الأصابع (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" // إعداد الأجهزة - FPS متصل بـ: //digital pin 10(arduino rx, fps tx) // الدبوس الرقمي 11 (اردوينو tx - مقاوم 560 أوم fps tx - مقاوم 1000 أوم - أرضي) // يؤدي هذا إلى خفض خط 5 فولت tx إلى حوالي 3.2 فولت لذلك لا نقوم بقلي الإطارات في الثانية FPS_GT511C3 fps(10, 11); إعداد باطلة ()) (Serial.begin (9600)؛ fps.UseSerialDebug = صحيح؛ // حتى تتمكن من رؤية الرسائل في شاشة التصحيح التسلسلي fps.Open ()؛) حلقة باطلة ()) (/ FPS Blink LED اختبار الإطارات في الثانية .SetLED(true); // قم بتشغيل مؤشر LED داخل تأخير الإطارات في الثانية (1000);

الرموز – مثال التسجيل:

/* FPS_Enroll.ino - مثال مكتبة للتحكم في ماسح بصمات الأصابع GT-511C3 (FPS) */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" // إعداد الأجهزة - FPS متصل بـ: // الرقم الرقمي 10 (arduino rx، fps tx) // الدبوس الرقمي 11 (arduino tx - مقاوم 560ohm fps tx - مقاوم 1000ohm - أرضي) // يؤدي هذا إلى خفض خط 5v tx إلى حوالي 3.2v لذلك لا نقوم بقلي الإطارات في الثانية FPS_GT511C3 fps(10, أحد عشر)؛ إعداد باطلة())( Serial.begin(9600); تأخير(100); fps.Open(); fps.SetLED(true); Enroll(); ) باطلة Enroll())( // اختبار التسجيل // ابحث عن مفتوح معرف التسجيل int enrollid = 0; fps.EnrollStart(enrollid); // enroll Serial.print("اضغط بإصبعك للتسجيل #"); .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("إزالة الإصبع"); fps.Enroll1(); while(fps.IsPressFinger() == true) تأخير(100) Serial.println("اضغط على نفس الإصبع مرة أخرى"); while(fps.IsPressFinger() == false) تأخير(100); IsPressFinger() == true) تأخير(100); Serial.println("اضغط على نفس الإصبع مرة أخرى"); while(fps.IsPressFinger() == false) تأخير(100); if (bret != false) ( Serial.println("إزالة الإصبع"); iret = fps.Enroll3(); if (iret == 0) (Serial.println("التسجيل الناجح"); ) else ( Serial.print("فشل التسجيل مع رمز الخطأ:"); Serial.println(iret); ) ) else Serial.println("فشل في التقاط الإصبع الثالث"); ) else Serial.println("فشل في التقاط الإصبع الثاني"); ) else Serial.println("فشل في التقاط الإصبع الأول"); ) حلقة باطلة ()) (تأخير (100000)؛)

ملف المزامنة:

رسم ملف التسجيل:

المرحلة السابعة: برمجة المعالج ATtiny85

تعتبر شريحة ATtiny85 رخيصة الثمن ومتوافقة تمامًا مع لوحة Arduino، وربما تكون أفضل جزء كهربائي تم إنشاؤه على الإطلاق!

هناك حاجة أيضًا إلى مبرمج Arduino لإعادة تحميل شريحة ATmega328، التي تتحكم في تشغيل شاشة LCD.

في الجهاز المجمع، سيقوم معالج ATtiny بتنفيذ أوامر بسيطة للغاية: تحقق من وجود إشارة من ATmega وافتح باب المرآب عند تأكيد الإشارة.

لبرمجة المعالج يجب توصيله باستخدام اللوح بالمبرمج مع مكثف 10 فائق التوهج، كما هو موضح في الصورة أدناه.

ومن ثم تحميل الكود النهائيواتبع التوصيات تعليمات من High-Low Tech.

بعد ذلك، يجب تحويل المخرج 13 على لوحة Arduino، المتصلة بمصباح LED، إلى الحالة العالية لمراقبة العملية باستخدام المؤشر الضوئي.

الكود النهائي ل أتيني :

// fpsAttiny by Nodcah // يتلقى إشارة مختصرة من الوحدة الرئيسية لإغلاق إعداد باطلة التتابع ()) (pinMode (2، OUTPUT)؛ // مؤشر يقود من خلال 10K المقاوم pinMode (4، OUTPUT)؛ // دبوس التراسيستور الذي يفتح المرآب pinMode (0، INPUT)؛ // تأخير الإدخال (500)؛ // امنح الأشياء وقتًا لبدء الكتابة الرقمية (2، HIGH)؛ // مؤشر LED حلقة فارغة ()) (if (digitalRead (0) ) ( // نمط بسيط لتشغيل تأخير الترانزستور (125)؛ إذا (digitalRead (0) == خطأ) ( تأخير (55)؛ // التوقيتات متوقفة لأن مؤقت ATtiny ليس مثاليًا if (digitalRead ( 0))( تأخير(55); إذا(digitalRead(0)==خطأ)( تأخير(55); إذا(digitalRead(0))( تأخير(55); إذا(digitalRead(0)==خطأ)( الكتابة الرقمية (4، عالية)؛ // "يضغط" الترانزستور على زر التأخير (1000)؛ الكتابة الرقمية (2، منخفضة)؛

القفل البيومتري - الرمز النهائي، قطع الغطاء، إعداد المرآبساعة GPS على اردوينو قفل البيومترية - رسم تخطيطي لشاشة LCD وتجميعها