کامل کردن دزدگیر در آردوینو
ابتدا مدار زیر را طراحی کنید:
اتصالات از 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 ایجاد کردیم.
- نوشته شده توسط احسان عباسی
- بازدید: 2445