这里要和大家分享的是在上一个微信拍照机器人的基础上增加一个人体红外该应模块,实现有人经过探测区域,将自动拍摄照片传至手机微信。 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和树莓派的微信拍摄机器人不同的是这里应用了一个Python控制树莓派GPIO接口的类库RPi.GPIO ,当检测到GPIO12有输入时,触发树莓派摄像头进行拍照,并将照片传至微信,程序里设定每五秒执行一次检测,与上次相同拍摄的照片文件在反复覆盖,不会增加占用树莓派的内存。
|