Python+树莓派 是谁在开门?

作者: 高杆python | 来源:发表于2017-10-09 16:00 被阅读1871次

    貌似已经好久没有鼓弄树莓派啦,这么有意思的东西,不能让它就这么吃灰了!
    今天要和大家分享一个利用树莓派实现开门监控的DIY小设备,直接上图。


    树莓派链接图

    1.准备材料
    1.树莓派(Raspberry Pi 3B)
    2.树莓派摄像头
    3.电磁感应门控磁条(我用的是常开常闭型)
    4.面包板
    5.树莓派T型扩展板

    2.模块链接说明
    将红外感应模块的两条不相邻的链接线(一共三根线)分别链接raspberry pi 3b 的GPIO 针脚2(5V)和针脚23(反过来链接也可以)

    3. Python源码(python2.x版本)
    之前一直使用python3.x版本写程序的,但是不知道为什么在这块树莓派上安装python3操作mysql数据库模块pymysql一直报错,而在python2环境下安装MySQLdb模块非常顺利,所以在这里改用了python2.7.9进行本次程序的测试。在这里说明一下,因为要记录一下开门和关门的时间和门当前的状态,所以将这些数据存入MySQL数据库,方便统计管理。下面是程序源码。

    import  RPi.GPIO as GPIO
    import MySQLdb
    import time
    import picamera
    def init():
        GPIO.setwarnings(False)
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(23,GPIO.OUT)
    def send_data():
        cursor.execute("use 数据库名称")
        cursor.execute("insert into door_tbl (door_num,zhuangtai) values(%s,%s)",('1号门','打开')) 
        connect.commit()
        #connect.close()
    def take_picture():
        camera.vflip = True
        camera.capture('image.jpg')  
    if __name__ == '__main__':
        camera = picamera.PiCamera()
        connect = MySQLdb.connect(
            host='MySQL数据库的IP地址', 
            user='数据库的用户名', 
            passwd='数据库的密码',  
            db='使用的数据库名称',  
            port=3306,  
            charset='utf8'
            )
        cursor = connect.cursor()
        init()
        while True:
            if GPIO.input(23) == True:
                print "门的状态:关闭"
            else:
                send_data()
                take_picture()
                print "门的状态:打开"
            time.sleep(3)
        GPIO.cleanup()
    

    4.代码分析
    首先实例化 树莓派摄像头picamera.PiCamera(),并连接通过MySQLdb库连接MySQL数据库,之后利用while True:循环每隔三秒检测树莓派GPIO23号针脚第电流变化情况,当无电流说明,门控电磁感应模块处于分离状态,门是打开状态,调用send_data()函数,将开门状态和开门时间插入数据库,之后调用take_picture()函数拍摄照片存至python文件的同一目录下。拍摄照片后可以参考之前的文章《Python+树莓派 实现微信拍照、摄相机器人》《Python+树莓派+人体红外感应模块 实现微信监控》中利用微信机器人将拍摄照片传到制定微信当中,也可以在树莓派段建立web服务便可直接访问到拍摄的照片。

    相关文章

      网友评论

      本文标题:Python+树莓派 是谁在开门?

      本文链接:https://www.haomeiwen.com/subject/uccpyxtx.html