مستشعر بصمة الاصبع من اردوينو. قفل البيومترية - إعداد الماسح وبرمجة متحكم. قطع الاتصال بمنفذ com

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

بالتقاليد ، نبدأ بمكونات درسنا.

تفاصيل

  • وحدة بصمة الإصبع FPM10A
  • اردوينو اونو

المكتبات والبرمجيات

  • اردوينو IDE
  • مكتبة بصمات Adafruit

مخطط الاتصال

يجب توصيل مخطط توصيل الوحدة النمطية FPM10A و Arduino Uno معًا كما في الشكل أعلاه. سنخوض في مزيد من التفاصيل في الخطوة التالية.

نقوم بتوصيل المكونات

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

كابل الشريط الذي يأتي مع الوحدة النمطية FPM10A ليس صديقًا للهواية حيث أن الأسلاك مثبتة في العلبة عند مسافة 1.27 مم ، لذلك قمنا بقطع جانب واحد ثم توصيل الأسلاك بالقوابس.

تركيب واستخدام المكتبة

تتمثل الخطوة الأولى في استخدام FPM10A في تثبيت مكتبة Adafruit Fingerprint ، والتي يمكن إجراؤها باستخدام Library Manager. افتح Arduino IDE وانتقل إلى:

Sketch → Include Library → Manage Libraries

عندما يقوم مدير المكتبة بتحميل بحث "Fingerprint" ، يجب أن تكون النتيجة الأولى هي مكتبة Adafruit Fingerprint Library. قم بتثبيته.

بعد تثبيت المكتبة ، حان وقت الإنشاء مشروع جديداردوينو. انقر ملف → جديد ، ثم احفظ المشروع في المجلد الخاص بك. في هذه المرحلة ، افتح مجلد المشروع وانسخ ملف "fingerprint.h" فيه.

هذه ملف خاصالذي تمت كتابته لتسهيل استخدام مكتبة بصمات الأصابع. يحتوي ملف الرأس على ثلاث وظائف فقط:

  • fingerprint_setup () - تكوين المنفذ التسلسلي لـ 9600 باود ويتصل بالوحدة ؛
  • readFingerprint () - وظيفة الاستقصاء التي ترجع -1 إذا حدث خطأ ما ، أو تُرجع معلومات تم العثور على بصمة إصبع ناجحة
  • تسجيل بصمة الإصبع (معرف int) - يضيف بصمة إلى النظام بالمعرف المخصص "id".

لتضمين هذا الملف في مشروعك ، ما عليك سوى استخدام الأمر include كما هو موضح أدناه:

# تضمين "بصمة الإصبع. h"

الوظيفة الأولى التي يجب استدعاؤها في الإعداد () هي fingerprint_setup () ، والتي تتصل تلقائيًا بالوحدة وتؤكد أن كل شيء يعمل.

إعداد باطل () (fingerprint_setup () ؛)

لإضافة بصمة إصبع جديدة ، اتصل بوظيفة تسجيل بصمة الإصبع (المعرف).

سيؤدي هذا إلى إرجاع -1 إذا فشل. بخلاف ذلك ، تشير القيم إلى التسجيل الناجح لبصمة الإصبع. تم تمرير المعرف إلى هذه الوظيفة كمرجع إلى بصمة الإصبع الممسوحة ضوئيًا ، وكان لكل بصمة رقم تعريف فريد.

تسجيل بصمة الإصبع (0x01) ؛

كود اردوينو

يمكنك نسخ المخطط النهائي للوحة Arduino أدناه:

#include "fingerprint.h" void setup () (fingerprint_setup ()؛) حلقة فارغة () (// إنشاء إدخال جديد لبصمة الإصبع (0x01) ؛ تأخير (1000) ؛ // طلب إدخال Serial.println ("\ nUSER طلب تسجيل الدخول ... ضع الإصبع على المستشعر \ n ")؛ while (readFingerprint () == -1)؛ Serial.println (" \ nACCESS GRANTED \ n ")؛ Serial.println (" \ n ثقة بصمة الإصبع: "+ سلسلة (ثقة) + "\ n") ؛ تأخير (3000) ؛)

مبدأ التشغيل

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

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

لإنشاء رابط باستخدام مستشعر بصمات الأصابع ، استخدمت التعليمات من Josh Hawley (تعليمات التنزيل المباشر).

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

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

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

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

الرموز - مثال على التسجيل:

/ * FPS_Enroll.ino - مثال مكتبة للتحكم في ماسح بصمة الإصبع GT-511C3 (FPS) * / # تضمين "FPS_GT511C3.h" # تضمين "SoftwareSerial.h" // إعداد الأجهزة - FPS متصل بـ: // digital pin 10 (arduino rx ، fps tx) // digital pin 11 (arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground) // يؤدي هذا إلى خفض خط الإرسال 5 فولت إلى حوالي 3.2 فولت ، لذلك لا نقوم بقلي fps FPS_GT511C3 fps (10 ، أحد عشر)؛ إعداد باطل () (Serial.begin (9600)؛ int registerid = 0 ؛ fps.EnrollStart (إنجيد) ؛ // تسجيل Serial.print ("اضغط على الإصبع للتسجيل #") ؛ Serial.println (إنجيد) ؛ بينما (fps.IsPressFinger () == false) تأخير (100) ؛ bool bret = fps.CaptureFinger (true)؛ int iret = 0؛ if (bret! = false) (Serial.println ("Remove finger")؛ fps.Enroll1 ()؛ while (fps.IsPressFinger () == true ) تأخير (100) ؛ Serial.println ("اضغط على نفس الإصبع مرة أخرى") ؛ بينما (fps.IsPressFinger () == خطأ) تأخير (100) ؛ bret = fps.CaptureFinger (صواب) ؛ إذا (bret! = خطأ) (Serial.println ("إزالة الإصبع") ؛ fps.Enroll2 () ؛ while (fps.IsPressFinger () == true) تأخير (100) ؛ Serial.println ("اضغط على نفس الإصبع مرة أخرى") ؛ بينما (fps. IsPressFinger () == false) delay (100) ؛ bret = fps.CaptureFinger (صحيح) ؛ إذا (bret! = false) (Serial.println ("إزالة الإصبع") ؛ iret = fps.Enroll3 () ؛ إذا (iret == 0) (Serial.println ("Enrollin g Successfull ") ؛ ) else ("فشل التسجيل مع رمز الخطأ:") ؛ Serial.println (iret) ؛)) آخر Serial.println ("فشل في التقاط الإصبع الثالث") ؛ ) آخر Serial.println ("فشل في التقاط الإصبع الثاني")؛ ) آخر Serial.println ("فشل في التقاط الإصبع الأول")؛ ) حلقة باطلة () (تأخير (100000) ؛)

ملف التزامن:

ملف تسجيل الصورة المصغرة:

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

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

مطلوب أيضًا مبرمج Arduino لفلاش شريحة ATmega328 التي تتحكم في تشغيل شاشة LCD.

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

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

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

بعد ذلك ، يجب ضبط الإخراج 13 الموجود على لوحة Arduino ، المتصل بمصباح LED ، على الحالة HIGH من أجل تتبع العمل على مؤشر الضوء.

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

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

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

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

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

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


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

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

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

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

أداة:

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

الخطوة 2: جهاز التخطيط






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

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

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

Pinout LCD:

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

ATtiny85 pinout:

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

الخطوة 3: تجميع المكونات من مجموعة LCD

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

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




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

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

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

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

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

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

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

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

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

الخطوة 6: قم بإعداد قارئ بصمات الأصابع

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

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

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

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

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

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

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

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


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

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

بمجرد تحميل الكود ، يجب أن يضيء الرقم 13 على Arduino (LED المدمج) ، مشيرًا إلى أنه تم تحميل الكود.

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

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

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

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

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

كود ATmega238:

# تضمين "LiquidCrystal.h" // مكتبة العرض # تتضمن مكتبة "FPS_GT511C3.h" // fps (ماسح بصمات الأصابع) # تتضمن "SoftwareSerial.h" // المستخدمة بواسطة مكتبة الماسح الضوئي // تكوين العرض ودبابيس الماسح LiquidCrystal LCD (2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8) ؛ // عرض pinout FPS_GT511C3 إطارًا في الثانية (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 ، الإخراج) ؛ pinMode (backlightPin ، الإخراج) ؛ pinMode (attinyPin ، الإخراج) ؛ // لتصحيح الأخطاء //Serial.begin (9600) ؛ fps.UseSerialDebug = false ؛ / / يصبح صحيحًا لتصحيح أخطاء fps عبر المنفذ التسلسلي // تهيئة المكتبات lcd.begin (16،2) ؛ الكتابة الرقمية (backlightPin ، HIGH) ؛ // اضاءه خلفيه ال سى دى fps.pen () ، Fps SetLED (صحيح) ؛ // LED on fps // تحميل الصوت لـ (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 + "" ؛ // يضيف مسافات بالتساوي على كلا الجانبين) إرجاع s ؛ ) الملفات

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

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

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

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

في هذا المشروع ، يتم تثبيت جهاز الحماية من السرقة على سيارة Mitsubishi Lancer 2000 كوبيه ذات البابين.

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

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

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

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

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

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

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

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

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

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


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

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

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

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










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

الخطوة 1 تحضير مكونات البرنامج:
يقوم Arduino IDE بتنزيل وإضافة ملف.
يتم تحميل الملف من مكتبة blank.ino في Arduino ، والذي سيكون بمثابة واجهة بين المستشعر والميكروكونترولر.
البرنامج مُثبّت ، والمستشعر متصل بـ Arduino كما هو موضح في الرسم التخطيطي. ثم يتم تحميل البصمة من خلال البرنامج المثبت.


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

سيعمل البرنامج بشكل أساسي على البرنامج التعليمي Adafruit Fingerprint. تمت إضافة مؤقت إيقاف تشغيل مستشعر مدته 10 ثوان فقط إلى رمز البرنامج. يمكنك تحميل الكود أدناه المقال.

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

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



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





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



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

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







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