close

前一陣子終於把家裡的門鎖改成可以使用手機控制開門,這個計劃的開端始於20188月份,一個沒記性的人為什麼記得那麼清楚,因為淘寶上記錄呀。因為這個計劃一直沒實現,所以當我跟某人說我想做什麼新的事情,某人就會酸我之前也說要弄自動開門呀,弄到哪去了……2018年的時候搞了一陣子,然後就放棄了。但這件事一直在我心中,所以在某一天就GOOGLE了一下,找到了一篇教學,跟著做就實現了。

undefinedRaspberry Pi 是一種單片機,就是電腦主機所需的基本零件都焊在一起的主機,底板上有CPU RAMHDMI接口、LAN接口、WI-FI晶片等等,再插上一張SD就是一台可以運作像手掌大小電腦。除了尺寸外,它和一般家用電腦的區別是它所採用的CPU 架構是ARM,而一般PC是使用X86架構,如果你有下載過作業系統(OS)的安裝檔案,會見過x86(i386)86_x64 AMD64 等字眼,x86也是我們常說的32bit OSx64就是64bit OS32bit 64bit 指的是CPU 的通用寄存器的長度,32bit 的長度就是 232次方。在某個年代,我們的Windows xp 32bit OS 最多只能記得2^32/1024/1024/1024=4Gb的地址,但硬體RAM可能會超過4Gb,多出來的就RAM就不能當RAM使用,其中一個方法就把它當做硬盤使用(Ram Disk),這個Ram Disk 就會比一般的Disk 飛快了許多,缺點就是儲存在RAM Disk 上的重新開機就沒了,所以必須把RAM Disk 的資料同步到真正的硬盤上,或者可以把虛擬記憶體放到RAM Disk 裡。越說越遠了……

 

然而,基於x86 架構的OS是不能在ARM 硬體上運行的,所以Raspberry Pi 必須安裝支持ARM的作業系統。Raspberry Pi 有官方基於 Linux 的作業系統,安裝也十分方便,官網都有詳細的教學,很適合我們這種小白學習。

ARM其中一個優點是功耗低很多,所以我們大多數手機也是使用ARM CPU,所以Raspberry Pi 的優點就是功耗低囉?是沒錯,但它還有另外一個強大的Function 啦,就是上圖無名指和尾指旁邊的兩排針,它們叫做GPIOGeneral Purpose Input Out,它是可以用來給其他裝置供電或控制其他裝置,比例控制門鎖,傳感器,淘寶上有一大堆Raspberry Pi 的傳感器,例如溫度、濕度、紅外線、人體感應,都很便宜。供電的電壓有5v 3.3 V,也可以與裝置互動,進行傳送和接收資料。也可以使用繼電器來控制220 V電器,讓220V的電器通電或不通電。還有就是Raspberry Pi 價格300塊人民幣就可以買到了。

第一次嘗試

一開始的想法是買個電鎖和Raspberry PiRaspberry Pi 控制電鎖開門。要準備的東西有:

  1. 電鎖
  2. 電鎖專用電源
  3. Raspberry Pi 
  4. 繼電器

繼電器 Relay

undefined

繼電器可以使小電流控制大電源的開關,並且將兩段電路隔離。Raspberry Pi GPIO 輸出電壓最大是5V,而電鎖是使用12V,用Raspberry Pi GPIO 不能直接控制電鎖,所以我們使用繼電器。購買繼電器需要注意參數,右圖最上面標示的12VDC是繼電器工作電壓,給Rasphberry Pi 用要買5V。下面三個電壓是繼電器可以控制的電壓,DC 沒有標示,這款是30VDC。光耦繼電器反應比較慢,跳轉開合需要一兩秒時間,可以選用固態繼電器,購買要留意能否控制DC 電流,淘寶沒能找到可以控制DC的,只有控制AC

電鎖專用電源接線圖

undefined

電鎖專用電源也內置了一個繼電器,用來控制電鎖,所以整個聯動控制是 Raspbery Pi -> 繼電器-> 電鎖專用電源(繼電器)->電鎖。繼電器一般都會有三個接口

  • NC(Normal Close) 繼電器在收到觸發訊號前NC COM是接通的,觸發後就是斷開的。
  • NO(Normal Open)繼電器在收到觸發訊號前NOCOM是斷開的,觸發後就是接通的。
  • COM(Common) NC NO 的共同觸點
  • 觸發訊號在樹莓派連接的繼電器可以使用高電平(1),或者低電平(0)。電鎖專用電源,我們使用PUSH GND,只要PUSH GND 接通了(開關按鈕原理),電鎖專用電源的繼電器就會被觸發。

電鎖接線

undefined

這裡選用了A方法接線。B方法看不明白該怎麼接。

整體接線圖

undefined

Raspberry Pi  5V GND 接繼電器DC+、DC- 給繼電器提供電源(電力),GPIO(隨便找一個就可以,這裡使GPIO 17 物理編號PIN 11)INGPIO發送低電平訊號給IN,就會觸發繼電器吸合,使NOCOM接通,然後電鎖專用電源的Push GND就會接通,再觸發電源繼電器吸合,使NOGND接通(010秒可調,有延時功能)並輸出電壓訊號至電鎖L+ GND,使電鎖開門。電源+12GND連接電鎖12VGND給電鎖提供工作電壓(電力)。

最後附上python 代碼

#!/usr/bin/env python

import RPi.GPIO as GPIO

import time

RelayPin = 11

GPIO.setmode(GPIO.BOARD)

GPIO.setup(RelayPin, GPIO.OUT)

time.sleep(1)

GPIO.output(RelayPin, GPIO.LOW)

time.sleep(1)

GPIO.output(RelayPin, GPIO.HIGH)

time.sleep(1)

GPIO.cleanup()

實際上我並沒有使用這個方案,因為家裡的門要改用上電鎖,不太合適,難度太高放棄了。最後使用的是本文開頭提及GOOGLE找到的一個方案。

arrow
arrow
    文章標籤
    raspberrypi教學 智能家居DIY
    全站熱搜

    Felix 發表在 痞客邦 留言(0) 人氣()