這個芝麻開門的構想要從某一晚被鎖在家門外開始說起,當下我第一個想的不是怎麼進去家裡,而是想以後怎麼透過手機來開家裡的門呢?是有多懶惰阿…

為什麼說是芝麻開門2.0呢,因為在一年前我已經先用樹莓派3來實作了芝麻開門1.0,後來因為家裡大門的wifi訊號不穩定,常常導致芝麻開門1.0失效,又覺得這個芝麻開門用樹莓派3真的挺浪費的,所以想換成比較纖細的樹莓派ZeroW,成本也比較低。

麻雀雖小,五臟俱全真的非常適合形容這台樹莓派ZeroW

Raspberry Pi Zero W 的硬體規格:

  • 1GHz,單核CPU
  • 512MB RAM
  • 迷你HDMI端口
  • USB On-The-Go端口
  • HAT兼容的40針頭
  • CSI相機連接器
  • 802.11n 無線網路
  • 藍牙4.0

至於拆下來的樹莓派3呢?當然別有用途,先賣個關子,有空再分享一下拆下來的樹莓派3還可以實作什麼新功能!

回到主題,來說明一下當初設計芝麻開門1.0的架構,主要目的是希望透過手機(App或是Line機器人)可以去控制數莓派,樹莓派收到手機的訊號在去控制電子開關,讓他去推動鐵捲門的開關,達到極簡單的智慧家電功能(IoT)。

所以主要分成兩部分,第一部分就是架設Line機器人的環境,第二部分就是GPIO控制繼電器的部分,在整合起來,就可以實現出芝麻開門1.0。

  • 怎麼架設Line機器人,因為步驟繁多,架設部分可以參考 這裡
  • 透過數莓派控制GPIO我推薦使用GPIO Zero這套件,真的超簡單
  • 電子開關的部分我是使用 歐姆龍 G6K-2P 電子開關

安裝好GPIO Zero就可以透過 pinout指令顯示出樹莓派的GPIO資訊

Python3程式碼如下

from gpiozero import LED
from time import sleep

led = LED(2)
while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

其中要注意的地方是 LED(2) 是對應到 pinout 裡面的GPIO2

電子開關的部分,先來找找歐姆龍這顆IC的規格書,看看PIN的定義

從上圖就可以看出,這顆RELAY不給電的狀態下PIN2-PIN3短路,PIN6-PIN7短路,如果把PIN1接GND,PIN8接+5V,就會變成PIN3-PIN4短路,PIN5-PIN6短路,這樣就可以達到按開關一樣的效果,來控制鐵捲門。

所以結合上面的python程式,把歐姆龍的PIN1接到樹莓派的GPIO(2),讓程式去控制歐姆龍的PIN1,當PIN1 OFF(GND)時候,RELAY就會切換,模擬成按鈕去觸發一次開關,來讓鐵捲門做動一次,達到用手機控制鐵捲門的功能,是不是很神奇呢

最後就可以透過機器人,打入芝麻開門,鐵捲門就會打開了,簡直太方便了,當然機器人還可以加上一些其他的功能,像是油價查詢的功能,想知道最近的油價,就打開機器人跟他問問吧。