|
有兴趣的朋友可以访问我的博客: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/ 里面都是些个人总结的教程 |
|