با عرض سلام خدمت دوستان عزیز
امروز قسمت دوم از آموزش ساخت قفل هوشمند کنترل از راه دور رو براتون میزاریم.
آموزش کامل ساخت این پروژه رو می تونید در سایت کافه ربات مشاهده فرمایید.
آموزش ساخت قفل هوشمند از راه دور با استفاده از آردوینو | پروژه آردوینو
گام دوم: راه اندازی سنسور اثر انگشت
در ابتدا باید سنسور اثر انگشت را راه اندازی کنید. از آنجایی که کتابخانه سنسور اثر انگشت برای آردوینو طراحی شده است، به همین دلیل از آردوینو Uno برای این پروژه استفاده شده است. برای اتصال به شبکه، از یک بورد CC3000 استفاده شده است.
با اتصال منبع تغذیه آغاز کنید:
- پین 5V آردوینو را به ریل ولتاژ قرمز روی برد بورد وصل کنید.
- پین GND آردوینو را به ریل ولتاژ آبی روی بردبورد وصل کنید.
اتصال سنسور اثر انگشت:
- در ابتدا ولتاژ را با اتصال کابل های سنسور به رنگ های متناظرشان روی بردبورد بر قرار کنید: قرمز به ریل +5V ، آبی به ریل زمین
- سپس سیم سفید را از سنسور به پین 4 آردوینو متصل کنید.
- بعد از آن سیم سبز را از سنسور به پین 3 آردوینو متصل کنید.
اتصال ماژول CC3000
- پین IRQ از بورد CC3000 را پین شماره 2 آردوینو وصل کنید.
- VBAT را به پین 5 وصل کنید.
- CS را به پین 10 وصل کنید.
- حالا باید پین های SPI بورد آردوینو را متصل کنید: MOSI ، MISO و CLK به ترتیب به پین های 11 ، 12 و 13 متصل شوند.
- در نهایت، مراقب منبع تغذیه باشید: Vin به 5V آردوینو می رود (ریل ولتاژ قرمز) و زمین به زمین (ریل ولتاژ آبی).
تصویر زیر، مونتاژ کامل پروژه را نشان می دهد.
قبل از ساخت اسکچ برای آپلود داده ها روی پلتفرم IO ، باید اثر انگشت تان را روی سنسور ثبت کنید تا بعدا قابل تشخیص باشد. پیشنهاد می شود که این کار را با بورد آردوینو انجام دهید که روند کلی آن را می توانید از این جا مشاهده کنید.
بعد از انجام این مراحل، می توانید به گام بعدی بروید. گام بعدی، ایجاد یک اسکچ برای ارسال داده ها به IO است. از آنجایی که اسکچ خیلی طولانی ست، در اینجا فقط قسمت های مهم آن آورده شده است کدها را به صورت کامل می توانید از لینک های زیر دانلود نمایید.
fingerprint sensor
lock control
کتابخانه های مورد نیاز:
#include "Adafruit_SleepyDog.h"
#include "Adafruit_CC3000.h"
#include " SPI.h "
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_CC3000.h"
#include " Adafruit_Fingerprint.h "
#include "SoftwareSerial.h"
سپس اسکچ را با وارد کردن SSID و پسورد شبکه وای فای تان تغییر داده و اصلاح کنید:
#define WLAN_SSID "your_wifi_ssid"
#define WLAN_PASS "your_wifi_password"
#define WLAN_SECURITY WLAN_SEC_WPA2
سپس نام کاربری IO و کلید AIO را وارد کنید:
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "adafruit_io_username"
#define AIO_KEY "adafruit_io_key"
سپس یک فید(feed) خاص برای سنسور اثر انگشت تعریف کنید. اگر سنسور با اثر انگشت معتبر فعال شود، '1' را نشان خواهد داد.
const char FINGERPRINT_FEED[] PROGMEM = AIO_USERNAME "/feeds/fingerprint";
Adafruit_MQTT_Publish fingerprint = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);
باید برای سنسور اثر انگشت، یک سریال نرم افزار (SoftwareSerial) ایجاد کنید:
SoftwareSerial mySerial(3, 4);
پس از آن، در واقع می توانید نمونه ای را برای سنسور ایجاد کنید:
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
در داخل اسکچ می توانید مشخص کنید که کدام شناسه اثر انگشت (fingerID) قفل را باز کند. در اینجا از 0 برای شناسه (ID) اثر انگشت اول که قبلا در سنسور ثبت شده است، استفاده شده است.
int fingerID = 0;
پس از آن، باید یک شمارنده و یک تاخیردهنده برای پروژه تعریف کنید. اساسا مطلوب است که در بعد از باز شدن، به صورت خودکار قفل شود. در اینجا از 10 ثانیه برای زمان تاخیر استفاده شده است، که می توانید این زمان را به سلیقه خود تغییر دهید.
int activationCounter = 0;
int lastActivation = 0;
int activationTime = 10 * 1000;
در مرحله ی بعد، در تابع setup() اسکچ، به سنسور مقداردهی اولیه کنید (سنسور را راه اندازی کنید) و تراشه CC3000 را به شبکه وای فای تان وصل کنید.
سپس در تابع loop() اسکچ، با استفاده از کد زیر به IO متصل شوید:
MQTT_connect();
بعد از اینکه مطمین شدید که به پلتفرم IO متصل شده اید، برای آخرین بار اثر انگشت ثبت شده را بررسی کنید. اگر مطابقت داشت و همچنان قفل فعال نشده بود، پیام '1' را به feed روی IO بفرستید.
if (fingerprintID == fingerID && lockState == false) {
Serial.println(F("Access granted!"));
lockState = true;
state = 1;
if (! fingerprint.publish(state)) {
Serial.println(F("Failed"));
} else {
Serial.println(F("OK!"));
}
lastActivation = millis();
}
همچنان در تابع loop() اسکچ، اگر قفل فعال است و تاخیر تعریف شده به پایان رسیده است، یک پیام '0' را برای IO بفرستید:
if ((activationCounter - lastActivation > activationTime) && lockState == true) {
lockState = false;
state = 0;
if (! fingerprint.publish(state)) {
Serial.println(F("Failed"));
} else {
Serial.println(F("OK!"));
}
}
آخرین نسخه این کد را می توانید از لینک های زیر دریافت کنید.
fingerprint sensor
lock control
برای دانلود همه کتابخانه های لازم برای این پروژه از مدیریت کتابخانه آردوینو استفاده کنید.
مطمئن شوید که کد را بر اساس تنظیمات خود تغییر داده اید و سپس آن را روی آردوینو آپلود کنید. سریال مانیتور (Serial monitor) را باز کنید.
سپس، هنگامیکه بورد آردوینو به شبکه وای فای متصل شد، سنسور اثر انگشت باید با نور قرمز چشمک بزند. اثر انگشت شما قبلا روی سنسور ثبت شده است. شما باید روی سریال مانیتور، عدد ID اثر انگشت را ببینید و اگر منطبق بود ، پیام 'OK' را مشاهده کنید. این پیام به معنی ارسال اطلاعات به IO است.
سپس می توانید IO را بررسی کنید، مطمین شوید که فیدهای تان با اطلاعات صحیح به روز شده است. سپس، بعد از تاخیر تعریف شده در کد، این فید باید به صورت اتوماتیک به '0' بازگردد.
ادامه ی آموزش رو هفته ی بعد براتون خواهیم گذاشت.
آموزش کامل ساخت رو می تونید در سایت کافه ربات مشاهده فرمایید.