上一篇文章《Python+树莓派 实现微信拍照、摄相机器人》中简单的实现了由手机微信控制树莓派摄像头拍摄照片及录像,并将拍摄文件回传至微信的功能,程序比较简单,
今天要和大家分享的是在上一个微信拍照机器人的基础上增加一个人体红外该应模块,实现有人经过探测区域,将自动拍摄照片传至手机微信。
1.准备材料
在上次材料的基础上增加了一个人体红外感应模块 HC-SR501 和三根母对母的杜邦线
2.模块链接说明
分别将红外感应模块的正极(+)、负极(-)和输出(out)用杜邦线链接raspberry pi 3b 的GPIO 针脚1(3.3V)、针脚6和针脚12(这种链接方式亲自测试,安全,不用外加电阻即可用)
3. Python源码(python3.x版本)
from wxpy import *
import picamera
import time
import RPi.GPIO as GPIO
#初始化
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12,GPIO.IN)
bot = Bot()
my_friend = bot.friends().search('高杆')[0]
tuling = Tuling(api_key='8edce3ce905a4c1dbb965e6b35c3834d')
# 自动回复
@bot.register(msg_types=TEXT)
def auto_reply_all(msg):
if GPIO.input(12) == True:
#初始化照相机
camera = picamera.PiCamera()
camera.led = True
try:
#捕获图像
camera.vflip = True
camera.capture('image.jpg')
except:
my_friend.send('PiCamera Error')
else:
my_friend.send_image('image.jpg')
finally:
camera.close()
else:
tuling.do_reply(msg)
time.sleep(5)
# 开始运行
time.sleep(5)
bot.join()
4.代码分析
代码依然比较简单,与上次不同的是这里应用了一个Python控制树莓派GPIO接口的类库RPi.GPIO ,当检测到GPIO12有输入时,触发树莓派摄像头进行拍照,并将照片传至微信,程序里设定每五秒执行一次检测,与上次相同拍摄的照片文件在反复覆盖,不会增加占用树莓派的内存。
网友评论