0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Arduino上使用PIR运动检测器

454398 来源:网络整理 作者:网络整理 2019-12-02 16:57 次阅读

概述

在本课程中,您将学习如何在Arduino上使用PIR运动检测器,以及让Arduino与计算机上运行的Python程序进行通信,以便在检测到运动时发送电子邮件thesensor

Arduino是该项目的核心。它“侦听” PIR传感器,并在检测到运动时通过USB端口指示计算机发送电子邮件。

如何在Arduino上使用PIR运动检测器

零件

要构建本课中描述的项目,您将需要以下零件。

您还需要一台具有Internet连接的计算机(因此您可以通过它发送电子邮件)!

Part 数量

PIR传感器 1

Arduino Uno R3

1

半面包板 1

跳线束

电路板布局

您要连接到Arduino的唯一东西是PIR传感器,因此,如果您愿意,只需将连接到PIR传感器的电线直接推入Arduino,就可以了。但是,来自传感器的电线在Arduino插座中有点松动,因此最好使用下面的面包板布局。

Arduino代码

只要检测到运动,Arduino就会通过USB串行连接发送一条消息。但是,这可能会产生大量电子邮件。因此,如果Arduino太早就无法发送另一个电子邮件,则它会发送不同的消息。

下载:文件

复制代码

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”更改为您认为合理的值。此处设置为60秒,因此不会以超过一分钟的速度发送电子邮件。

为跟踪上次发送电子邮件发送请求的时间,使用了变量“ lastSend” 。初始化为负数,该负数等于“ minSecsBetweenEmails”变量中指定的毫秒数的负数。这确保了可以在Arduino草图启动后立即触发PIR。

在循环中,函数“ millis()”用于获取自Arduino启动以来的毫秒数,并将其与上次触发警报的时间进行比较,并且仅在自上次启动以来超过指定的秒数时才结束消息“ MOVEMENT”。否则,即使已检测到运动,它也只会发送消息“太早了”。

在将内容链接到Python程序之前,只需在Arduino IDE上打开串行监视器即可测试Arduino设置。

安装Python和PySerial

如果您使用的是Macor Linux计算机,则已经安装了Python。如果您使用的是Windows,则需要安装它。无论哪种情况,您都还需要安装PySerial库以允许与Arduino通信。

在Windows上安装Python

要在Windows上安装Python,请从http://www.python.org/getit/下载安装程序。

此项目是使用Python 2.7.3构建的

在Windows上,使用Python 3的PySerial存在一些已报告的问题,因此请坚持使用Python 2。

一旦安装了Python,您会在“开始”菜单上找到一个新的程序组。但是,我们将对Windows进行更改,以允许您使用命令提示符中的Python。您将需要此文件才能安装PySerial。

我们将向PATH环境变量中添加一些内容。

为此,您需要转到Windows“控制”面板并找到“系统属性”控件。然后单击标记为“环境变量”的按钮,然后在弹出的窗口的底部选择“路径”(系统变量)。单击“编辑”,然后在“变量值”末尾而不删除已有的任何文本,添加文本:; C: Python27

Don不要忘记“;”在新位之前!

要测试其是否正常,请启动新的命令提示符(DOS Prompt)并输入命令“ python”。您应该会看到类似这样的内容:

安装PySerial

无论您使用什么操作系统,请从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计算机,然后在下载pyserial-2.6.tar.gz的任何地方打开终端会话“ cd”,然后发出以下命令来解压缩安装文件夹。

下载:文件

复制代码

$ tar -xzf pyserial-2.6.tar.gz $ tar -xzf pyserial-2.6.tar.gz

无论您使用什么操作系统,其余过程均相同。使用您的ComamndPrompt/Terminal会话并“ cd”进入pyserial-2.6文件夹,然后运行命令:

下载:文件

复制代码

sudo python setup.py install sudo python setup.py install

Python代码

现在,您需要创建Python程序。为此,请将下面的代码复制到一个名为“ movement.py”的文件中。在Mac/Linux上,您可以使用“ nano”编辑器,在Windows上,使用Python编辑器“ IDLE”来创建文件可能是最简单的,该编辑器可从开始菜单的Python程序组中获得。

下载:文件

复制代码

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)

在运行Python程序之前,需要进行一些配置更改。这些都位于文件顶部附近。

程序假定电子邮件是通过gmail帐户设置的。因此,如果您没有一个,则即使您只为这个项目,也可能要自己做一个。

将“ TO”旁边的电子邮件地址更改为要接收通知的电子邮件。

这不必是您的电子邮件地址。

将“ GMAIL_USER”旁边的电子邮件地址更改为您的gmailaddress电子邮件地址,并将下一行的密码更改为该密码

如果需要,还可以在随后的几行上更改要发送的邮件的主题行和文本。

您还需要设置通过编辑以下行来更改Arduino的串行端口:

下载:文件

复制代码

ser = serial.Serial(‘COM4’, 9600) ser = serial.Serial(‘COM4’, 9600)

对于Windows,这将类似于Mac和Linux上的“ COM4”,而类似于“/dev/tty”。 usbmodem621”。您可以通过打开Arduino IDE并在右下角找到它,它会向您显示连接到Arduino的端口。

进行这些更改后,可以使用以下命令从命令提示符/终端运行程序:

下载:文件

复制代码

python movement.py python movement.py

触发运动后,您应该会得到这样的跟踪,并且在anemail到达收件箱后不久。

也请注意“ Toosoon”消息。

其他要做的事情

现在,您可以从Arduino发送电子邮件,这开辟了各种各样的可能性,您可以添加不同类型的传感器,也许每小时发送一次通过电子邮件发送温度报告。

PIR传感器可以直接与Arduino一起使用,以发出警告音或打开LED

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测器
    +关注

    关注

    1

    文章

    808

    浏览量

    47277
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184750
收藏 人收藏

    评论

    相关推荐

    微功率磁感应检测技术的库门异动检测器检测原理

    仓门开关检测基于MP-AMR(微功率磁感应检测)技术的库门异动检测器, 5G/NB-IoT网络仓门开关检测是可在粮库监测场景下,在设定ROI区域内,通过
    的头像 发表于 01-08 09:50 142次阅读
    微功率磁感应<b class='flag-5'>检测</b>技术的库门异<b class='flag-5'>动检测器</b><b class='flag-5'>检测</b>原理

    使用Arduino的带有语音警报的运动传感器

    运动传感器警报在市场上很容易获得,但是价格昂贵。这是带有语音警报的基于Arduino的简单,廉价的运动传感器警报。它可以用于安全目的。   通常,对于户外监视,运动传感器警报由一
    的头像 发表于 10-15 16:13 571次阅读
    使用<b class='flag-5'>Arduino</b>的带有语音警报的<b class='flag-5'>运动</b>传感器

    基于物联网的LPG气体泄漏检测器

    使用MQ-5传感、ESP8266和Arduino构建一个基于物联网的LPG气体泄漏检测器
    发表于 09-22 06:06

    采用tinyAVR 2系列实现高性价比的低功耗PIR运动检测

    电子发烧友网站提供《采用tinyAVR 2系列实现高性价比的低功耗PIR运动检测.pdf》资料免费下载
    发表于 09-19 17:09 1次下载
    采用tinyAVR 2系列实现高性价比的低功耗<b class='flag-5'>PIR</b><b class='flag-5'>运动检测</b>

    单双张检测器-叠料检测器-铜片检测-阿童木科技

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2023年09月08日 11:29:32

    PIR运动激活图像捕捉系统

    电子发烧友网站提供《PIR运动激活图像捕捉系统.zip》资料免费下载
    发表于 07-11 09:16 0次下载
    <b class='flag-5'>PIR</b><b class='flag-5'>运动</b>激活图像捕捉系统

    使用Raspberry Pi的Motioneyeos网络摄像头运动检测

    电子发烧友网站提供《使用Raspberry Pi的Motioneyeos网络摄像头运动检测.zip》资料免费下载
    发表于 07-05 10:40 1次下载
    使用Raspberry Pi的Motioneyeos网络摄像头<b class='flag-5'>运动检测</b>

    带LCD的Arduino EMF鬼检测器

    电子发烧友网站提供《带LCD的Arduino EMF鬼检测器.zip》资料免费下载
    发表于 07-05 09:12 0次下载
    带LCD的<b class='flag-5'>Arduino</b> EMF鬼<b class='flag-5'>检测器</b>

    PIR传感器-使用IFTTT的电子邮件发送运动检测器

    电子发烧友网站提供《PIR传感器-使用IFTTT的电子邮件发送运动检测器 .zip》资料免费下载
    发表于 07-04 14:27 1次下载
    <b class='flag-5'>PIR</b>传感器-使用IFTTT的电子邮件发送<b class='flag-5'>运动检测器</b>

    使用Arduino和雨滴传感器的雨量检测器

    电子发烧友网站提供《使用Arduino和雨滴传感器的雨量检测器.zip》资料免费下载
    发表于 06-28 16:07 0次下载
    使用<b class='flag-5'>Arduino</b>和雨滴传感器的雨量<b class='flag-5'>检测器</b>

    Arduino音乐:音符和和弦检测器

    电子发烧友网站提供《Arduino音乐:音符和和弦检测器.zip》资料免费下载
    发表于 06-26 10:11 0次下载
    <b class='flag-5'>Arduino</b>音乐:音符和和弦<b class='flag-5'>检测器</b>

    具有NodeMCU和Blynk的物联网运动检测器

    电子发烧友网站提供《具有NodeMCU和Blynk的物联网运动检测器.zip》资料免费下载
    发表于 06-15 14:33 0次下载
    具有NodeMCU和Blynk的物联网<b class='flag-5'>运动检测器</b>

    基于ArduinoPIR运动传感器的自动多灯控制系统

    电子发烧友网站提供《基于ArduinoPIR运动传感器的自动多灯控制系统.zip》资料免费下载
    发表于 06-12 09:56 0次下载
    基于<b class='flag-5'>Arduino</b>和<b class='flag-5'>PIR</b><b class='flag-5'>运动</b>传感器的自动多灯控制系统

    使用ArduinoPIR传感器的自动房间灯

    在这个项目中,我们将看到使用ArduinoPIR传感器的自动房间灯,通过检测人的存在,房间里的灯将自动打开和关闭。
    的头像 发表于 05-12 09:05 985次阅读
    使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>PIR</b>传感器的自动房间灯

    基于多普勒效应的运动检测器电路

    本文中介绍的运动传感器电路的工作原理是利用多普勒频移原理,通过从运动物体反射的连续变化的频率来检测运动目标。
    的头像 发表于 04-29 09:43 962次阅读
    基于多普勒效应的<b class='flag-5'>运动检测器</b>电路