سبد (0)

کامل کردن دزدگیر در آردوینو

 

ابتدا مدار زیر را طراحی کنید:

مدار آردوینو

اتصالات از PIR به آردوینو به ترتیب  به صورت زیر هستند:

  • GND به GND
  • OUT به D02
  • VCC به 5V

اتصالات از HC-06 به آردوینو به ترتیب به صورت زیر هستند:

  • VCC به 3.3V
  • GND به GND
  • TXD به D10
  • RXD به D11

 یک کتابخانه ی دیگر نیز وجود دارد که باید آن را نصب کنیم تا آردوینو بتواند با پایتون ارتباط برقرار کند. نام آن کتابخانه pySerial است. به این آدرس بروید و pyserial-2.7.win32.exe را دانلود کنید و آن را مانند نرم افزارهای معمولی نصب کنید. حالا آماده هستیم تا آردوینو را باز کنیم و فایل alarm_bluetooth.ino را که در داخل فایل های دانلودی این فصل از این کتاب قرار دارد بارگذاری کنیم. توصیه می شود که قبل از ادامه ی کار، نرم افزار آردوینوی خود را آپدیت کنید.

#include <SoftwareSerial.h> // کتابخانه ی سریال که برای ارتباط استفاده می شود
SoftwareSerial burg_alarm(10, 11); 
// به ترتیب با پین های دیجیتال 10 و 11 ارتباط می یابد RX و TX از طریق پایانه های
int ledPin = 13; // in built LED to show status changes
int pirPIN = 2; // به داخل پین 2 می رود PIR سیگنال 
int pirState = LOW; // یعنی حرکتی درکار نیست LOW به PIR تنظیم 
int pirVal = 0; // PIR متغیر برای نگه داشتن وضعیت

void setup() {
 burg_alarm.begin(9600); // ارتباط از 9600 علامت در ثانیه آغاز می شود
 pinMode(ledPin, OUTPUT); // تنظیم پین ال ای دی بعنوان خروجی
 delay(5000); // پنج ثانیه صبر می کند تا حرکات از بین بروند 
}

void loop(){
 pirVal = digitalRead(pirPIN); // ورودی را از سنسور می خواند
 if (pirVal == HIGH) { // است و حرکتی تشخیص داده شد HIGH اگر ورودی
  digitalWrite(ledPin, HIGH); // ال ای دی را روشن کن
  delay(150); // کمی وقفه کن
  if (pirState == LOW) { 
// است High است در حالی که ورودی ما LOW به صورت  PIR بررسی می کند که اگر حالت 
// این یعنی قبلا هیچ حرکتی نبوده اما اکنون دارد حرکت اتفاق می افتد
   Serial.println("Motion detected!"); // هشداری را چاپ می کند
   burg_alarm.println('1'); 
// مقدار 1 را وقتی که حرکتی تشخیص داده شد از طریق بلوتوث به پایتون ارسال می کند
   pirState = HIGH; // می کند یعنی حرکت تشخیص داده شد HIGH را برابر با pirState مقدار
  }
 } else { // اگر حرکتی تشخیص داده نشد
    digitalWrite(ledPin, LOW); // ال ای دی را خاموش کن
    delay(300); // یک وقفه کوتاه
    if (pirState == HIGH){ // اگر قبلا حرکتی بود اما الان حرکتی نیست
      Serial.println("Motion ended!");
      burg_alarm.println('0'); // وقتی که حرکت پایان یافت مقدار 0 را ارسال می کند
      pirState = LOW; // تنظیم می کند یعنی حرکتی نیست LOW حالت را به 
    }
  }
} //پایان حلقه

 مطمئن شوید که قبل از آپلود کردن کدها در آردوینو، سیم های TX و RX را جدا کنید و پس از آپلود شدن آنها را به سر جای خود برگردانید. اکنون که می خواهیم یک اسکریپت پایتون را ایجاد کنیم، به آردوینو نیازی نیست و آن را جدا کنید. حالا اکلیپس را باز کنید و فایل alarm_bluetooth.py را در آن لود کنید و یا اینکه کدهای زیر را در آن کپی کنید:

import serial
import pyimgur
import urllib
import time
from pushover import init, Client
print("Burglar Alarm Program Initializing")
init("< your push overtoken>")
CLIENT_ID = "<your client ID>"
PATH = "C:\\<your python folder>\\mug_shot.jpg"
im = pyimgur.Imgur(CLIENT_ID)
mug_shot_ctr = 0
serial_status = 0
camera_status = 0
try:
print("\nAttempting to connect to Bluetooth module...")
ser = serial.Serial('COM36', 9600) #Tried with and without the
last 3 parameters, and also at 1Mbps, same happens.
time.sleep(3)
serial_status = 1
print('Bluetooth connection successful!')
except:
print('Bluetooth Connection Error! \nPlease check if bluetooth is connected.')
mug_shot_ctr = 4
try:
print("\nChecking IP Camera Status...")
urllib.urlretrieve("http://<your ip>/snapshot.
cgi?user=admin&pwd=<your password>", "mug_shot.jpg")
time.sleep(2)
print("Camera Status OK")
camera_status = 1
except:
print("Camera not connected!\nPlease check if camera is connected.")
mug_shot_ctr = 4
if((serial_status==1)&(camera_status==1)):
print("\nBurglar Alarm armed!")
while mug_shot_ctr < 3:
line = ser.readline()
if(line[0]=='1'):
print('\nMotion Detected!')
print('Capturing Mug Shot')
urllib.urlretrieve("http://<your ip>/snapshot.
cgi?user=admin&pwd=<your password>", "mug_shot.jpg")
time.sleep(2)
print('Uploading image to Imgur')
uploaded_image = im.upload_image(PATH, title="Uploaded with PyImgur - Mugshot")
print(uploaded_image.link)
print('Sending notification to device.')
Client("<your imgur ID>").send_message("Mug Shot: "+ uploaded_image.link, title="Intruder Alert!")
print('Notification sent!')
mug_shot_ctr = mug_shot_ctr + 1
if(serial_status ==1):
ser.close()
print('\nProgram Ended')

 به یاد داشته باشید که باید موارد زیر را با مقادیر مورد نظر در کدها جایگزین کنید:

  • tokenها
  • keyها
  • portها
  • pathها
  • IP دوربین
  • client ID

این کدها بررسی می کنند که آیا دوربین و بلوتوث به خوبی کار می کنند یا نه. اگر به درستی کار نکنند، یک خطا ایجاد می کنند که با آن می توانیم متوجه شویم که مشکل از کجاست. توجه کنید که اگر آدرس IP دوربین خود را ندارید، به ابزار IP Camera Search Tool که در سایت www.netcam360.com قرار دارد مراجعه کنید و آی پی دوربین خود را پیدا کنید. زیرا گاهی اوقات وقتی که دوربین را ریستارت می کنیم، آی پی آن تغییر می کند.

 


کدهای بالا کارهای زیادی را انجام می دهند. ابتدا چند کتابخانه را که قبلا هم با آنها آشنا شدیم را مورد استفاده قرار می دهند.سپس بررسی می کند و ماژول بلوتوث را متصل می کند. سپس صبر می کند تا آردوینو یک پیغام  مبنی بر اینکه حرکتی تشخیص داده شد را ارسال کند. سپس بلافاصله اسکریپت ما یک تصویر از دوربین می گیرد و آن را در Imgur آپلود می کند. سپس از Pushover  استفاده می کند و یک پیام هشدار به کاربر ارسال می کند مبنی بر اینکه حرکتی تشخیص داده شد. و URL تصویر گرفته شده را نیز به او می دهد که می تواند آن را باز کند و سارق را مشاهده کند. این اسکریپت سه تصویر همزمان از سارق می گیرد.این تعداد تصویر را می توانید با تغییر دادن متغیر mug_shot_ctr در کدها مشخص کنید. اکنون اجازه دهید برنامه ی خود را تست کنیم و آن را اجرا کنیم. پس دست خود را در جلوی سنسور PIR بگیرید تا یک خروجی شبیه زیر را دریافت کنید:

پیام های دریافت شده

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

پیام های روی گوشی

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

توصیه می شود که از یک آداپتور 2.1 میلی متری 9تا 12 ولت برای قدرت دادن به آردوینو استفاده کنید، درست مثل تصویر زیر:

آداپتور برای آردوینو

 حالا که کدهای ما آماده  شده است، می توانید به جای اکلیپس، به آدرس پروژه ی خود در درایو C بروید و بر روی alarm_bluetooth.py دابل-کلیک کنید تا مستقیما اجرا شود. پس از اجرا به صورت زیر خواهد بود:

اجرای کدهای مستقیم

 بالاخره کار تمام شد. اکنون ما یک سیستم دزدگیر به وسیله ی آردوینو و بلوتوث و PIR  و پایتون و Imgur و Pushover ایجاد کردیم.

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