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

    文章

    924

    浏览量

    49658
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195974
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ‌基于STEVAL-BLUEPIRV1的蓝牙低功耗运动检测技术解析

    STMicroelectronics STEVAL-BLUEPIRV1无线运动检测器基于无源红外 (PIR) 传感,具有蓝牙®低功耗无线连接功能。得益于低功耗和低成本
    的头像 发表于 10-30 09:32 276次阅读
    ‌基于STEVAL-BLUEPIRV1的蓝牙低功耗<b class='flag-5'>运动检测</b>技术解析

    国产汽车冲压产线应用案例-料重叠检测解决方案-9000S双张检测器

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2025年08月26日 15:01:55

    何在 M55M1 系列微控制以低功耗模式使用运动检测功能?

    何在 M55M1 系列微控制以低功耗模式使用运动检测功能。根据物体检测结果,系统将动态启用或禁用
    发表于 08-19 06:56

    双张检测器检测瓶盖垫片

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2025年08月08日 16:13:39

    G-sensor运动检测功能开源:解锁硬件创新的无限可能!

    G-sensor(重力传感)作为感知加速度变化的核心技术,如今其运动检测功能的完整源码全面开放。开发者可深入内核算法,定制灵敏度和检测模型,从智能设备到工业监测,这项开源技术为硬件创新提供了
    的头像 发表于 07-07 10:13 846次阅读
    G-sensor<b class='flag-5'>运动检测</b>功能开源:解锁硬件创新的无限可能!

    用树莓派实现自动感应照明:PIR传感教程!

    PIR运动传感能够检测物体(包括人类和动物)的任何移动。它们大多被用于自动激活的照明系统和防盗报警系统中。任何温度高于绝对零度的物体都会以红外辐射的形式散发
    的头像 发表于 06-21 20:32 1084次阅读
    用树莓派实现自动感应照明:<b class='flag-5'>PIR</b>传感<b class='flag-5'>器</b>教程!

    带功率检测器的 5 GHz 前端模块 skyworksinc

    电子发烧友网为你提供()带功率检测器的 5 GHz 前端模块相关产品参数、数据手册,更有带功率检测器的 5 GHz 前端模块的引脚图、接线图、封装手册、中文资料、英文资料,带功率检测器的 5 GHz 前端模块真值表,带功率
    发表于 06-19 18:35
    带功率<b class='flag-5'>检测器</b>的 5 GHz 前端模块 skyworksinc

    变频动检测功能的详解

    变频的自动检测功能,也被称为“自学习”功能,是矢量控制变频的一个重要特性。这一功能主要用于自动检测并设定被控制电动机的相关参数,从而确保变频
    的头像 发表于 05-11 17:08 1080次阅读
    变频<b class='flag-5'>器</b>自<b class='flag-5'>动检测</b>功能的详解

    LPV801 单路、5.5V、8kHz、超低静态电流 (450nA)、1.6V 最小电源电压、RRO 运算放大器技术手册

    ,可最大限度降低运行电池寿命至关重要的设备(如 CO 检测器、烟雾检测器PIR 运动检测器)消耗的功率。
    的头像 发表于 05-01 16:00 713次阅读
    LPV801 单路、5.5V、8kHz、超低静态电流 (450nA)、1.6V 最小电源电压、RRO 运算放大器技术手册

    LPV802 双路、5.5V、8kHz、超低静态电流 (320nA)、1.6V 最小电源电压、RRO 运算放大器技术手册

    ,可最大限度降低运行电池寿命至关重要的设备(如 CO 检测器、烟雾检测器PIR 运动检测器)消耗的功率。
    的头像 发表于 04-24 14:10 718次阅读
    LPV802 双路、5.5V、8kHz、超低静态电流 (320nA)、1.6V 最小电源电压、RRO 运算放大器技术手册

    树莓派制成的 — 带运动检测和摄像头的安防系统

    自动布防/撤防、运动检测、带图片的移动通知项目所用物品硬件组件RaspberryPi1ModelA+一个:任何支持摄像头模块的RaspberryPi均可RaspberryPi摄像头模块一个
    的头像 发表于 03-25 09:45 574次阅读
    树莓派制成的 — 带<b class='flag-5'>运动检测</b>和摄像头的安防系统

    运行SCRFD人脸检测器,在CPU输出错误是怎么回事?

    试图运行 SCRFD 人脸检测器 在 CPU 获得错误输出,但 GPU 正确无误
    发表于 03-07 07:55

    阿童木双料检测器助力汽车零部件冲压料重叠检测

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2025年02月20日 16:58:24

    小家电部件冲压叠料检测应用案例-阿童木金属双张检测器# 家电# 冲压# 传感# 金属双张检测器

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2025年02月17日 15:28:29

    压力检测器有哪些优势

    在现代工业与基础设施管理中,压力检测器作为监测与控制系统的关键组件,扮演着重要的角色。压力检测器集高精度、高稳定性与便捷操作于一体,在供水、排水、消防水系统、输油管道、输气管道等多个领域,为设备的稳定运行与工业安全提供有力保障。
    的头像 发表于 01-07 17:09 1124次阅读