• برچسب ها: آردوینو | سنسور
  • 0.0/5 rating (0 votes)
  • شنبه, 17 بهمن 1394

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

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

گام اول : قطعات مورد نیاز

سنسور اثر انگشت × 1  
ماژول CC3000 × 1  
بورد آردوینو Uno × 1  
ماژول ESP8266 × 1  
منبع تغذیه 12V × 1  
LED × 1  
ترانزیستور تغذیه اختیاری (MOSFET یا ترانزیستور دو قطبی TIP102) × 1  
مقاومت 1K اهمی (در صورت استفاده از TIP102) × 1  
دیود یک سو کننده (در صورت استفاده از TIP102) × 1  

گام دوم: راه اندازی سنسور اثر انگشت

در ابتدا باید سنسور اثر انگشت را راه اندازی کنید. از آنجایی که کتابخانه سنسور اثر انگشت برای آردوینو طراحی شده است، به همین دلیل از آردوینو Uno برای این پروژه استفاده شده است. برای اتصال به شبکه، از یک بورد CC3000 استفاده شده است.
با اتصال منبع تغذیه آغاز کنید:
- پین 5V آردوینو را به ریل ولتاژ قرمز روی برد بورد وصل کنید.
- پین GND آردوینو را به ریل ولتاژ آبی روی بردبورد وصل کنید.
اتصال سنسور اثر انگشت:
- در ابتدا ولتاژ را با اتصال کابل های سنسور به رنگ های متناظرشان روی بردبورد بر قرار کنید: قرمز به ریل +5V ، آبی به ریل زمین
- سپس سیم سفید را از سنسور به پین 4 آردوینو متصل کنید.
- بعد از آن سیم سبز را از سنسور به پین 3 آردوینو متصل کنید.
اتصال ماژول CC3000
- پین IRQ از بورد CC3000 را پین شماره 2 آردوینو وصل کنید.
- VBAT را به پین 5 وصل کنید.
- CS را به پین 10 وصل کنید.
- حالا باید پین های SPI بورد آردوینو را متصل کنید: MOSI ، MISO و CLK به ترتیب به پین های 11 ، 12 و 13 متصل شوند.
- در نهایت، مراقب منبع تغذیه باشید: Vin به 5V آردوینو می رود (ریل ولتاژ قرمز) و زمین به زمین (ریل ولتاژ آبی).
تصویر زیر، مونتاژ کامل پروژه را نشان می دهد.

academy 941117 remote controlled door lock 01 1

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


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


#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!"));
  }
}


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

برای دانلود همه کتابخانه های لازم برای این پروژه از مدیریت کتابخانه آردوینو استفاده کنید.
مطمئن شوید که کد را بر اساس تنظیمات خود تغییر داده اید و سپس آن را روی آردوینو آپلود کنید. سریال مانیتور (Serial monitor) را باز کنید.
سپس، هنگامیکه بورد آردوینو به شبکه وای فای متصل شد، سنسور اثر انگشت باید با نور قرمز چشمک بزند. اثر انگشت شما قبلا روی سنسور ثبت شده است. شما باید روی سریال مانیتور، عدد ID اثر انگشت را ببینید و اگر منطبق بود ، پیام 'OK' را مشاهده کنید. این پیام به معنی ارسال اطلاعات به IO است.
سپس می توانید IO را بررسی کنید، مطمین شوید که فیدهای تان با اطلاعات صحیح به روز شده است. سپس، بعد از تاخیر تعریف شده در کد، این فید باید به صورت اتوماتیک به '0' بازگردد.

گام سوم : راه اندازی قفل در

تا اینجا قسمتی از پروژه که می توان با استفاده از آن قفل در کنترل کرد را ، راه اندازی کردید. در اینجا از یک برد ESP8266 برای اتصال به شبکه وای فای و فعال یا غیرفعال کردن قفل استفاده کنید. همچنین این نشان میدهد که با استفاده از IO، برقراری ارتباط بین دو پلتفرم (آردوینو و ESP8266) با یکدیگر ساده خواهد بود.
در این بخش، قصد استفاده از قفل های از راه دور را نداریم چون ساخت سخت افزار آنها بسیار پیچیده است. در عوض از یک روش ساده استفاده میکنیم و آن اتصال یک LED به پینی است که بعدا روی قفل قرار خواهیم داد. این کار به ما اجازه می دهد که بدون نیاز به پیچیدگی های سخت افزاری ، کد را تست کنیم.
گرد آوردن این قسمت از پروژه واقعا ساده است، فقط باید در ابتدا ESP8266 را روی بردبورد قرار دهید. سپس LED را روی بردبورد قرار دهید به گونه ای که پایه بلندتر LED در ردیف مقاومت ها قرار بگیرد. پس از آن، سمت دیگر مقاومت را به پین 5 بورد ESP8266 و پایه ی دیگر LED را به پین GND بورد ESP8266 متصل کنید.

تصویر زیر، مونتاژ این قسمت را نشان می دهد.

academy 941117 remote controlled door lock 02

حالا بیایید اسکچی را که برای این بخش از پروژه استفاده خواهد شد را ببینیم. مجددا اسکچ پیچیده است و در این جا فقط قسمت های مهم را نشان داده شده است.

با کتابخانه ها شروع می کنیم:


#include "ESP8266WiFi.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"


سپس باید تنظیمات وای فای را قراردهید:


#define WLAN_SSID       "your_wifi_ssid"
#define WLAN_PASS       "your_wifi_password"
#define WLAN_SECURITY   WLAN_SEC_WPA2


و بعد از آن، تنظیمات IO خواهد بود که دقیقا مشابه پروژه های قبلی است:


#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883
#define AIO_USERNAME    "adafruit_io_username"
#define AIO_KEY         "adafruit_io_key"


همچنین پینی که به LED (و بعد از آن قفل یا رله به عنوان مثال) متصل خواهد شد را تعریف کنید:


int relayPin = 5;


معمولا یک فید(feed) جدید برای قفل تعریف می شود:


const char LOCK_FEED[] PROGMEM = AIO_USERNAME "/feeds/lock";
Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);


در تابع setup() اسکچ، پین LED را به عنوان خروجی تنظیم کنید:


pinMode(relayPin, OUTPUT);


همچنین فید(feed) قفل را که قبلا تعریف شده بود ، تایید کنید:


mqtt.subscribe(&lock);


در تابع loop() اسکچ، برای اولین بار اتصال به IO را بررسی کنید:


MQTT_connect();


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


Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(1000))) {
  if (subscription == &lock) {
    Serial.print(F("Got: "));
    Serial.println((char *)lock.lastread);
 
    // Save command to String
    String command = String((char *)lock.lastread);
    command.trim();
      
    if (command == "0") {
      digitalWrite(relayPin, LOW);
    }
    if (command == "1") {
      digitalWrite(relayPin, HIGH);
    }
  }
}


از مدیریت کتابخانه آردوینو برای دانلود همه ی کتابخانه های مورد نیاز برای این پروژه استفاده کنید.
مطمین شوید که کدتان با تنظیماتی مانند تنظیمات IO و یا شبکه وای فای، اصلاح شده است.
برای برنامه ریزی تراشه ESP8266، از بورد USB-FTDI استفاده کنید. برای اطلاعات بیشتر در مورد برنامه ریزی ESP8266 این آموزش مفید را مطالعه کنید.
در آخر کد را روی بورد آپلود کنید. سپس سریال مانیتور را باز کنید. در این مرحله فقط باید بررسی کنید که آیا پروژه می تواند به IO متصل شود. موارد دیگر در قسمت بعد بررسی خواهند شد.

گام چهارم: تست کردن پروژه

حالا زمان آن رسیده که پروژه خود را تست کنید. در ابتدا به بخش فید(feed) از داشبورد IO بروید. شما باید اثر انگشت و فیدهای قفل را که در اسکچ تان ایجاد کرده اید را بررسی کنید:

academy 941117 remote controlled door lock 03

در صورتی که چنین نیست، باید آنها را ایجاد کنید. ما هنوز هم به راهی برای لینک کردن فید(feed) اثرانگشت و فید قفل نیاز داریم. می خواهیم فید قفل مقدار 1 را بگیرد زمانی که فید اثر انگشت 1 است و برعکس.
برای اینکار از ویژگی قدرتمند IO استفاده کنید، محرک ها. اساسا محرک ها شرایطی هستند که شما بر روی فید تنظیم کنید، برای مثال اتصال دو فید.
از قسمت محرک های IO، یک محرک واکنشی تعریف کنید که اثرانگشت تان را با فید قفل مرتبط می سازد.

academy 941117 remote controlled door lock 04

دو محرک در قسمت داشبورد IO به صورت زیر دیده می شوند:

academy 941117 remote controlled door lock 05

به محض انجام، می توانید پروژه را تست کنید. مطمین شوید که هر دو بخش پروژه به درستی کار می کند. سپس انگشتی که اثر آن را ثبت کرده اید را روی سنسور قرار دهید.
بعد از این کار باید نور ضعیفی روی بورد آردوینو مشاهده کنید، این نور بدان معنی است که اطلاعات به IO منتقل شده اند. پس از مدت کوتاهی باید نور چشمک زنی را روی بورد ESP8266 ببینید، این نور بدان معنی است که اطلاعات توسط MQTT دریافت شده است. LED نیز باید فورا روشن شود.
پس از تاخیری که در کد تنظیم کردید (به عنوان پیش فرض 10 ثانیه)، باید ببینید که LED مجددا خاموش می شود. تبریک ! در حال حاضر شما می توانید LED را از هر نقطه ی دنیا با اثر انگشت خود کنترل کنید.

گام پنجم : راه اندازی قفل الکترونیک

حالا زمان آخرین بخش پروژه رسیده است، که اتصال قفل الکترونیک است. این قسمت تقریبا پیچیده است و شما می توانید از این پروژه به همین شکل به خوبی استفاده کنید، مثلا با استفاده از اتصال رله به جای LED.
برای اتصال قفل در، به اجزای دیگری نیز، احتیاج دارید. در ابتدا به منبع تغذیه 12V و جک آداپتور مادگی DC نیاز دارید.
همچنین به یک ترانزیستور تغذیه نیاز دارید ( در اینجا از IRLB8721 power MOSFET استفاده شده است، اما شما می توانید برای مثال از یک ترانزیستور دو قطبی TIP102 استفاده کنید). همچنین اگر از ترانزیستور دوقطبی استفاده کنید به یک مقاومت 1K اهمی نیز احتیاج دارید و در نهایت به یک دیود یک سو کننده نیاز دارید.
برای اتصال این اجزا به بورد ESP8266، به شماتیک زیر نگاه کنید:

academy 941117 remote controlled door lock 06

دقت کنید که اگر از ترانزیستور MOSFET استفاده کنید، به مقاومت بین پین 5 بورد ESP8266 و ترانزیستور نیازی نیست.
تصویر زیر، مونتاژ نهایی پروژه را نشان میدهد.

academy 941117 remote controlled door lock 07

بعد از مونتاژ کامل پروژه، مجددا ESP8266 را مثلا با ماژول FTDI تغذیه کنید و سپس به منبع تغذیه 12V DC متصل کنید. نیازی به هیچ تغییری در کد نیست، چون با استفاده از همان پینهای قبلی کار خواهد کرد.
حالا انگشت خود را روی سنسور اثرانگشت قرار دهید. باید ببینید که بلافاصله قفل واکنش نشان میدهد.

استفاده های دیگر از پروژه

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

افزودن نظر