貌似已經(jīng)好久沒有鼓弄樹莓派啦,這么有意思的東西愧驱,不能讓它就這么吃灰了慰技!
今天要和大家分享一個利用樹莓派實(shí)現(xiàn)開門監(jiān)控的DIY小設(shè)備,直接上圖组砚。
1.準(zhǔn)備材料
1.樹莓派(Raspberry Pi 3B)
2.樹莓派攝像頭
3.電磁感應(yīng)門控磁條(我用的是常開常閉型)
4.面包板
5.樹莓派T型擴(kuò)展板
2.模塊鏈接說明
將紅外感應(yīng)模塊的兩條不相鄰的鏈接線(一共三根線)分別鏈接raspberry pi 3b 的GPIO 針腳2(5V)和針腳23(反過來鏈接也可以)
3. Python源碼(python2.x版本)
之前一直使用python3.x版本寫程序的吻商,但是不知道為什么在這塊樹莓派上安裝python3操作mysql數(shù)據(jù)庫模塊pymysql一直報錯,而在python2環(huán)境下安裝MySQLdb模塊非常順利糟红,所以在這里改用了python2.7.9進(jìn)行本次程序的測試艾帐。在這里說明一下乌叶,因?yàn)橐涗浺幌麻_門和關(guān)門的時間和門當(dāng)前的狀態(tài),所以將這些數(shù)據(jù)存入MySQL數(shù)據(jù)庫柒爸,方便統(tǒng)計(jì)管理准浴。下面是程序源碼。
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 數(shù)據(jù)庫名稱")
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數(shù)據(jù)庫的IP地址',
user='數(shù)據(jù)庫的用戶名',
passwd='數(shù)據(jù)庫的密碼',
db='使用的數(shù)據(jù)庫名稱',
port=3306,
charset='utf8'
)
cursor = connect.cursor()
init()
while True:
if GPIO.input(23) == True:
print "門的狀態(tài):關(guān)閉"
else:
send_data()
take_picture()
print "門的狀態(tài):打開"
time.sleep(3)
GPIO.cleanup()
4.代碼分析
首先實(shí)例化 樹莓派攝像頭picamera.PiCamera()捎稚,并連接通過MySQLdb庫連接MySQL數(shù)據(jù)庫乐横,之后利用while True:循環(huán)每隔三秒檢測樹莓派GPIO23號針腳第電流變化情況,當(dāng)無電流說明今野,門控電磁感應(yīng)模塊處于分離狀態(tài)晰奖,門是打開狀態(tài),調(diào)用send_data()函數(shù)腥泥,將開門狀態(tài)和開門時間插入數(shù)據(jù)庫,之后調(diào)用take_picture()函數(shù)拍攝照片存至python文件的同一目錄下啃匿。拍攝照片后可以參考之前的文章《Python+樹莓派 實(shí)現(xiàn)微信拍照蛔外、攝相機(jī)器人》和《Python+樹莓派+人體紅外感應(yīng)模塊 實(shí)現(xiàn)微信監(jiān)控》中利用微信機(jī)器人將拍攝照片傳到制定微信當(dāng)中,也可以在樹莓派段建立web服務(wù)便可直接訪問到拍攝的照片溯乒。