概述
在本課程中,您將學(xué)習(xí)如何在Arduino上使用PIR運(yùn)動檢測器,以及讓Arduino與計算機(jī)上運(yùn)行的Python程序進(jìn)行通信,以便在檢測到運(yùn)動時發(fā)送電子郵件thesensor。
Arduino是該項(xiàng)目的核心。它“偵聽” PIR傳感器,并在檢測到運(yùn)動時通過USB端口指示計算機(jī)發(fā)送電子郵件。
零件
要構(gòu)建本課中描述的項(xiàng)目,您將需要以下零件。
您還需要一臺具有Internet連接的計算機(jī)(因此您可以通過它發(fā)送電子郵件)!
Part 數(shù)量
PIR傳感器 1
Arduino Uno R3
1
半面包板 1
跳線束
電路板布局
您要連接到Arduino的唯一東西是PIR傳感器,因此,如果您愿意,只需將連接到PIR傳感器的電線直接推入Arduino,就可以了。但是,來自傳感器的電線在Arduino插座中有點(diǎn)松動,因此最好使用下面的面包板布局。
Arduino代碼
只要檢測到運(yùn)動,Arduino就會通過USB串行連接發(fā)送一條消息。但是,這可能會產(chǎn)生大量電子郵件。因此,如果Arduino太早就無法發(fā)送另一個電子郵件,則它會發(fā)送不同的消息。
下載:文件
復(fù)制代碼
int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000l;
void setup()
{
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop()
{
long now = millis();
if (digitalRead(pirPin) == HIGH)
{
if (now 》 (lastSend + minSecsBetweenEmails * 1000l))
{
Serial.println(“MOVEMENT”);
lastSend = now;
}
else
{
Serial.println(“Too soon”);
}
}
delay(500);
} int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000l;
void setup()
{
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop()
{
long now = millis();
if (digitalRead(pirPin) == HIGH)
{
if (now 》 (lastSend + minSecsBetweenEmails * 1000l))
{
Serial.println(“MOVEMENT”);
lastSend = now;
}
else
{
Serial.println(“Too soon”);
}
}
delay(500);
}
可以將變量“ minSecsBetweenEmails”更改為您認(rèn)為合理的值。此處設(shè)置為60秒,因此不會以超過一分鐘的速度發(fā)送電子郵件。
為跟蹤上次發(fā)送電子郵件發(fā)送請求的時間,使用了變量“ lastSend” 。初始化為負(fù)數(shù),該負(fù)數(shù)等于“ minSecsBetweenEmails”變量中指定的毫秒數(shù)的負(fù)數(shù)。這確保了可以在Arduino草圖啟動后立即觸發(fā)PIR。
在循環(huán)中,函數(shù)“ millis()”用于獲取自Arduino啟動以來的毫秒數(shù),并將其與上次觸發(fā)警報的時間進(jìn)行比較,并且僅在自上次啟動以來超過指定的秒數(shù)時才結(jié)束消息“ MOVEMENT”。否則,即使已檢測到運(yùn)動,它也只會發(fā)送消息“太早了”。
在將內(nèi)容鏈接到Python程序之前,只需在Arduino IDE上打開串行監(jiān)視器即可測試Arduino設(shè)置。
安裝Python和PySerial
如果您使用的是Macor Linux計算機(jī),則已經(jīng)安裝了Python。如果您使用的是Windows,則需要安裝它。無論哪種情況,您都還需要安裝PySerial庫以允許與Arduino通信。
在Windows上安裝Python
要在Windows上安裝Python,請從http://www.python.org/getit/下載安裝程序。
此項(xiàng)目是使用Python 2.7.3構(gòu)建的
在Windows上,使用Python 3的PySerial存在一些已報告的問題,因此請堅(jiān)持使用Python 2。
一旦安裝了Python,您會在“開始”菜單上找到一個新的程序組。但是,我們將對Windows進(jìn)行更改,以允許您使用命令提示符中的Python。您將需要此文件才能安裝PySerial。
我們將向PATH環(huán)境變量中添加一些內(nèi)容。
為此,您需要轉(zhuǎn)到Windows“控制”面板并找到“系統(tǒng)屬性”控件。然后單擊標(biāo)記為“環(huán)境變量”的按鈕,然后在彈出的窗口的底部選擇“路徑”(系統(tǒng)變量)。單擊“編輯”,然后在“變量值”末尾而不刪除已有的任何文本,添加文本:; C: Python27
Don不要忘記“;”在新位之前!
要測試其是否正常,請啟動新的命令提示符(DOS Prompt)并輸入命令“ python”。您應(yīng)該會看到類似這樣的內(nèi)容:
安裝PySerial
無論您使用什么操作系統(tǒng),請從https://pypi.python.org/pypi/pyserial
下載PySerial 2.6的.tar.gz安裝包。這將為您提供一個名為pyserial-2.6.tar.gz
如果使用的是Windows,則需要將其解壓縮到文件夾中。不幸的是,這不是正常的zip文件,因此您可能需要下載7-zip(http://www.7-zip.org/)之類的工具。
如果您使用的是Macor Linux計算機(jī),然后在下載pyserial-2.6.tar.gz的任何地方打開終端會話“ cd”,然后發(fā)出以下命令來解壓縮安裝文件夾。
下載:文件
復(fù)制代碼
$ tar -xzf pyserial-2.6.tar.gz $ tar -xzf pyserial-2.6.tar.gz
無論您使用什么操作系統(tǒng),其余過程均相同。使用您的ComamndPrompt/Terminal會話并“ cd”進(jìn)入pyserial-2.6文件夾,然后運(yùn)行命令:
下載:文件
復(fù)制代碼
sudo python setup.py install sudo python setup.py install
Python代碼
現(xiàn)在,您需要創(chuàng)建Python程序。為此,請將下面的代碼復(fù)制到一個名為“ movement.py”的文件中。在Mac/Linux上,您可以使用“ nano”編輯器,在Windows上,使用Python編輯器“ IDLE”來創(chuàng)建文件可能是最簡單的,該編輯器可從開始菜單的Python程序組中獲得。
下載:文件
復(fù)制代碼
import time
import serial
import smtplib
TO = ‘[email protected]’
GMAIL_USER = ‘[email protected]’
GMAIL_PASS = ‘putyourpasswordhere’
SUBJECT = ‘Intrusion!!’
TEXT = ‘Your PIR sensor detected movement’
ser = serial.Serial(‘COM4’, 9600)
def send_email():
print(“Sending Email”)
smtpserver = smtplib.SMTP(“smtp.gmail.com”,587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = ‘To:’ + TO + ‘ ’ + ‘From: ’ + GMAIL_USER
header = header + ‘ ’ + ‘Subject:’ + SUBJECT + ‘ ’
print header
msg = header + ‘ ’ + TEXT + ‘ ’
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if message[0] == ‘M’ :
send_email()
time.sleep(0.5)
import time
import serial
import smtplib
TO = ‘[email protected]’
GMAIL_USER = ‘[email protected]’
GMAIL_PASS = ‘putyourpasswordhere’
SUBJECT = ‘Intrusion!!’
TEXT = ‘Your PIR sensor detected movement’
ser = serial.Serial(‘COM4’, 9600)
def send_email():
print(“Sending Email”)
smtpserver = smtplib.SMTP(“smtp.gmail.com”,587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = ‘To:’ + TO + ‘ ’ + ‘From: ’ + GMAIL_USER
header = header + ‘ ’ + ‘Subject:’ + SUBJECT + ‘ ’
print header
msg = header + ‘ ’ + TEXT + ‘ ’
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if message[0] == ‘M’ :
send_email()
time.sleep(0.5)
在運(yùn)行Python程序之前,需要進(jìn)行一些配置更改。這些都位于文件頂部附近。
程序假定電子郵件是通過gmail帳戶設(shè)置的。因此,如果您沒有一個,則即使您只為這個項(xiàng)目,也可能要自己做一個。
將“ TO”旁邊的電子郵件地址更改為要接收通知的電子郵件。
這不必是您的電子郵件地址。
將“ GMAIL_USER”旁邊的電子郵件地址更改為您的gmailaddress電子郵件地址,并將下一行的密碼更改為該密碼
如果需要,還可以在隨后的幾行上更改要發(fā)送的郵件的主題行和文本。
您還需要設(shè)置通過編輯以下行來更改Arduino的串行端口:
下載:文件
復(fù)制代碼
ser = serial.Serial(‘COM4’, 9600) ser = serial.Serial(‘COM4’, 9600)
對于Windows,這將類似于Mac和Linux上的“ COM4”,而類似于“/dev/tty”。 usbmodem621”。您可以通過打開Arduino IDE并在右下角找到它,它會向您顯示連接到Arduino的端口。
進(jìn)行這些更改后,可以使用以下命令從命令提示符/終端運(yùn)行程序:
下載:文件
復(fù)制代碼
python movement.py python movement.py
觸發(fā)運(yùn)動后,您應(yīng)該會得到這樣的跟蹤,并且在anemail到達(dá)收件箱后不久。
也請注意“ Toosoon”消息。
其他要做的事情
現(xiàn)在,您可以從Arduino發(fā)送電子郵件,這開辟了各種各樣的可能性,您可以添加不同類型的傳感器,也許每小時發(fā)送一次通過電子郵件發(fā)送溫度報告。
PIR傳感器可以直接與Arduino一起使用,以發(fā)出警告音或打開LED。
責(zé)任編輯:wv
-
檢測器
+關(guān)注
關(guān)注
1文章
897瀏覽量
48786 -
Arduino
+關(guān)注
關(guān)注
190文章
6499瀏覽量
192526
發(fā)布評論請先 登錄
用樹莓派實(shí)現(xiàn)自動感應(yīng)照明:PIR傳感器教程!

帶功率檢測器的 5 GHz 前端模塊 skyworksinc

LPV801 單路、5.5V、8kHz、超低靜態(tài)電流 (450nA)、1.6V 最小電源電壓、RRO 運(yùn)算放大器技術(shù)手冊

LPV802 雙路、5.5V、8kHz、超低靜態(tài)電流 (320nA)、1.6V 最小電源電壓、RRO 運(yùn)算放大器技術(shù)手冊

運(yùn)行SCRFD人臉檢測器,在CPU上輸出錯誤是怎么回事?
開源項(xiàng)目!基于Arduino做的“魷魚游戲”BOSS面具,支持動作檢測
使用MSP430掃描接口和光學(xué)傳感器進(jìn)行旋轉(zhuǎn)和線性運(yùn)動檢測

使用MSP430F2013進(jìn)行超低功耗運(yùn)動檢測

MSP430FR2355上集成智能模擬的PIR運(yùn)動檢測器應(yīng)用說明

采用低于1GHz Simplelink?無線MCU的無線運(yùn)動檢測器

使用MSPM0進(jìn)行PIR運(yùn)動檢測

使用TLV320ADCx120和PCMx120-Q1中的語音活動檢測器(VAD)

評論