极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9221|回复: 0

Arduino Yun项目--家居安防2.Arduino端物体检测+发送邮件

[复制链接]
发表于 2015-10-18 13:34:30 | 显示全部楼层 |阅读模式
有兴趣的朋友可以访问我的博客:http://51arduino.sinaapp.com/ 里面都是些个人总结的教程
原创文章,请勿转载!欢迎联系作者:QQ:569411680;微信:PEC_CQU;可以加群:482330203一起讨论
教程内容及目的:
在本教程中,你将学会使用PIR红外移动传感器检测移动,Arduino和python通信,以及使用python发送邮件当检测到有移动物体时。

所需材料:
        1、Arduino 一块(本文使用Arduino UNO) 2、PIR传感器3.面包板一块(当然也可以直接飞线连接)4、导线若干
        3、Arduino yun需连接WIFI,并且电脑和Arduino yun处于同一无线网络下
硬件连接:PIR传感器的输出接数字口7


步骤:
        1、测试Arduino:下载如下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);
}
2、上传代码后,打开串口监视器可以看到如下输出

3、安装python和pyserial
如果是LInux和MAC用户,python已经在电脑里面安装了。如果是windows用户的话,需要安装Python以及Arduino与       python通信的Pyserial库。
a)到官网:http://www.python.org/getit/ 下载Python,安装
安装完成后,需要配置Python的环境变量,才可以在windows的命令行(cmd)运行,在环境变量的path/PATH后加上;C:\Python27  不要忘记“;”哦
安装完成后,就可在cmd输入python,如果输出如下,就表示安装正确

b)到网站:https://pypi.python.org/pypi/pyserial下载Pyserial(这里下载的是pyserial-2.6.tar.gz)
先将文件解压,再在命令行输入:cd 你的Pyserial解压文件夹
切换到你的pyserial文件夹,再输入python setup.py install 即可安装

4、新建python代码movement.py
新建python文件movement.py,代码如下:
# -*- coding: cp936 -*-
from email.Header import Header
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
import smtplib, datetime
import serial
#修改为自己的Arduino IDE上的串口(Windows的话就是COM口)
ser = serial.Serial('你的串口', 9600)
def send_email() :
print('Sedning email')
msg = MIMEMultipart()
#构造附件,这里读取的是d盘的1.docx文档
att = MIMEText(open('d:\\1.docx', 'rb').read(), 'base64', 'gb2312')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="1.doc"'
msg.attach(att)
#加邮件头修改为自己的接收邮箱,发送邮箱,
msg['to'] = '[email protected]'
msg['from'] = '[email protected]'
msg['subject'] = Header('移动物体来袭!! (' + str(datetime.date.today()) + ')','gb2312')
#发送邮件,发送邮箱是QQ的话,服务器就是smtp.qq.com
server = smtplib.SMTP('smtp.qq.com')
#登录邮箱用的用户名及密码
server.login('qq号','密码')
error=server.sendmail(msg['from'], msg['to'],msg.as_string())
server.close
print error
#打印输出Arduino输出的数据while True:
message = ser.readline()
print(message)
#如果数据的开始是M也即输出为"Movement"则发送邮件
if message[0] == 'M' :
send_email()
print('fasong')
#time.sleep(0.5)
5、在cmd命令行输入:python movement.py   如果有移动物体移动的话,就可以收到邮件了:

原创文章,请勿转载!欢迎联系作者:QQ:569411680;微信:PEC_CQU;可以加群:482330203一起讨论
有兴趣的朋友可以访问我的博客:http://51arduino.sinaapp.com/ 里面都是些个人总结的教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 22:25 , Processed in 0.041741 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表