資料介紹
描述
注意:如果您不想自己構(gòu)建這個麻煩,您可以在 Tindie 上向我購買完整的電路。
介紹
我住在一個有門的小區(qū)里,所以每次有朋友來拜訪我都必須遠程為他們開門。不幸的是,我的無線開門遙控器只能在我家某個窗戶前的一個遙遠角落工作。
我很懶,所以我決定破解一個開門器遙控器并將其連接到樹莓派,這樣我就可以把 Pi/開門器留在那個房間里。
現(xiàn)在,當一個朋友想進來時,我只需在我的智能手機上打開一個網(wǎng)頁,然后用它打開大門!我使用的是 Raspberry Pi Zero W,但您也可以輕松地使用不同的 Raspberry Pi、Arduino 或 ESP8266——您只需進行一些小的修改。
本教程使用300 MHz 鑰匙鏈遙控開門器,但您也可以使用不同的開門器遙控器,稍作修改——原理相同。
讓我們開始吧!
0. 先決條件
本教程假設(shè)您對電子有基本的了解(什么是二極管/晶體管/電阻器/繼電器,以及一些基本的焊接技能)。
1. 破解開門機
第一步是打開開門機遙控器。我使用的模型背面有一個螺絲,側(cè)面有一個凹口。卸下螺絲,將硬幣插入槽口,然后擰開塑料外殼。
當你打開它時,設(shè)置 10 個 DIP 開關(guān)以匹配你的開門器的代碼。
接下來我們需要確定四點:
- 電池正極端子,
- 電池負極端子,
- 用于激活遙控器的按鈕的兩個端子。
我們需要移除這些部件,因為我們要將我們自己的部件焊接到它們的位置。使用烙鐵,您可以加熱每個部件的焊接連接,然后用鉗子輕輕地將它們拉出。幫助工具在這里有很大幫助,耐心也是如此。您也可以嘗試使用一些焊錫芯去除一些焊料。
如果您遇到困難,請嘗試搜索有關(guān)如何拆焊組件的教程。
卸下零件后,使用焊料泵清除通孔中剩余的焊料。完成后,它應(yīng)該如下所示:
2.控制器電路
控制器電路有兩個用途:
- 它為開門遙控器供電(因為我們移除了電池端子),并且
- 它通過使用繼電器代替我們在步驟 1 中移除的按鈕來觸發(fā)開門器遙控器。
這個特殊遙控器的電池是 12V,所以我們使用 5V 至 12V DC-DC 轉(zhuǎn)換器供電。根據(jù)轉(zhuǎn)換器的數(shù)據(jù)表,我們在任一側(cè)添加了幾個電容器以穩(wěn)定事物。
注意:如果您的遙控器使用不同電壓的電池,您應(yīng)該更換一個能夠提供適當電壓的 DC-DC 轉(zhuǎn)換器。此外,如果您想將該電路與 Arduino 或 ESP8266 一起使用,您可能必須根據(jù)型號切換到具有 3.3V 輸入的 DC-DC 轉(zhuǎn)換器(而不是 Raspberry Pi 提供的 5V)。
由于 Raspberry Pi 不能直接驅(qū)動繼電器(它需要的電流比 Raspberry Pi 的 GPIO 引腳所能提供的更多),我們改為將 Raspberry Pi 連接到晶體管,從而驅(qū)動繼電器。為了使這一切正常工作,我們還在 Raspberry Pi 的 GPIO 引腳和晶體管之間添加了一個電阻器,以及一個與繼電器并聯(lián)的二極管,以確保電流僅以我們想要的方式流動。
注意:如果您想將電路與只有 3.3V 電源的 Arduino 或 ESP8266 一起使用,您應(yīng)該切換到 3.3V 繼電器而不是列出的 5V 繼電器。
3.組裝控制器電路
對于實際構(gòu)建控制器電路,您有三個選擇:
- 使用穿孔板并將組件連接在一起,如上圖所示,
- 獲取我設(shè)計的 PCB 副本并將其發(fā)送給您最喜歡的 PCB 制造服務(wù),或
- 在 Tindie 上直接從我這里購買 PCB (我有一些備件)。
組裝控制器電路只需要基本的焊接技能,因為我設(shè)計的 PCB 沒有任何表面貼裝部件。只需將組件插入正確的位置,將電路板翻轉(zhuǎn)過來,焊接并夾住剩余的引線。
如果您使用我的 PCB,我建議您從中間的組件開始,然后向外工作。
如果您使用的是 perf 板,您仍然可以使用 PCB 來指導(dǎo)您如何布置電路——它的設(shè)計使走線非常短,幾乎所有需要連接的引線都非常靠近。
完成組件(無連接器)的接線后,它應(yīng)該看起來像這樣。
4. 將控制器電路連接到開門器遙控板
現(xiàn)在我們將連接器連接到開門器遠程板。
PCB 的設(shè)計是這樣的,如果您將單個公頭引腳焊接到 PCB 任一角標記為 12V 和 GND 的通孔,它將與門開啟器遠程板上的通孔精確對齊。將這些插頭引腳焊接到控制器電路 PCB 上,但不要連接開門器遙控板。
或者,如果您使用的是 perf board 或不同的開門器遙控器,您可以將一些連接線焊接到 12V 電源和控制器電路電源的接地端。我們很快將把它連接到開門器遙控板。
接下來切割 4-5 厘米的連接線并從兩端剝?nèi)?3-4 毫米。將一端焊接到標有“繼電器”的通孔之一,另一端懸空。用第二根連接線和另一個標記為“繼電器”的通孔重復(fù)該過程。
現(xiàn)在,將懸掛在空中的繼電器連接線的一端通過開門器遙控板上的孔焊接到一個按鈕上,我們在第一步中確定了這一點。對另一個繼電器連接線和另一個按鈕通孔重復(fù)該過程。
最后將開門器遙控板與控制器電路 PCB 對齊,使 12V 引腳滑過電池正極端子通孔,接地引腳滑過電池負極端子通孔。焊接兩個連接以使它們保持不變,我們完成了開門器遙控板的連接!
同樣,如果您使用的是 perf 板或不同的開門器遙控器,只需將連接線從控制器電路電源的輸出連接到正極電池端子位于開門器上的位置,同樣連接接地和負極電池端子.
5. 將控制器電路連接到樹莓派
最后但同樣重要的是,我們需要將控制器電路連接到 Raspberry Pi。最簡單的方法是取三根母-母跳線(一根紅色、一根黑色和一根任何其他顏色)并將它們剪成兩半,如圖 9 所示。從每根線的切割端剝?nèi)?3-4mm ,然后焊接:
- 紅線連接到控制器電路PCB上標記為5V的通孔,
- 通孔的黑線標記為 GND,
- 通孔的另一根電線標記為 GPIO。
現(xiàn)在您所要做的就是將每根電線的母插座插入Raspberry Pi 上相應(yīng)的插頭引腳!我將引腳 2 用于 5V 電源,將 6 用于接地,將 11 (GPIO 17) 用于 GPIO,但您可以使用任何可用的引腳。
6.控制門!
現(xiàn)在我們已經(jīng)完成了控制門的所有艱苦工作。只需確保您在 Raspberry Pi 上安裝了RPi.GPIO ,您可以通過將連接到高電平的 GPIO 引腳短暫切換來打開門。這是一些示例 Python 代碼:
from RPi.GPIO import GPIO
import time
GPIO.setmode(GPIO.BOARD)
# I used GPIO 17, which is pin 11 on the Raspberry Pi header per https://pinout.xyz/
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, GPIO.HIGH) # Simulate pressing the button on the gate opener remote...
time.sleep(0.25) # Leaving it pressed for a quarter of a second...
GPIO.output(11, GPIO.LOW) # And then releasing it
如果您使用 Home Assistant,請繼續(xù)閱讀以了解如何配置開門器以通過 MQTT 與 Home Assistant 交談。否則,您可以使用任何您喜歡的軟件——您所要做的就是確保它最終在您想打開門時切換 GPIO 引腳。
7. 獎勵:通過 MQTT 和 Home Assistant 控制閘機!
注意:本部分假設(shè)您已經(jīng)有Home Assistant和在某處運行的 MQTT 服務(wù)器。(它可以是您用來控制開門器的同一個 Raspberry Pi,但不一定非要如此。只要開門器 Raspberry Pi 可以與 MQTT 服務(wù)器通信,您應(yīng)該沒問題。)如果您需要弄清楚如何設(shè)置 Home Assistant 和 MQTT 服務(wù)器,還有許多其他教程將引導(dǎo)您完成該過程。
在高層次上,我們需要三個組件來通過 MQTT 和 Home Assistant 控制門(當然除了 Home Assistant 和 MQTT 服務(wù)器):
- 連接到 MQTT 服務(wù)器的 Python 腳本,偵聽“打開”消息,并在收到這些消息時使用RPi.GPIO來切換遠程開門器。
- 一個systemd 服務(wù),它會在 Raspberry Pi 啟動時自動啟動 Python 腳本。
- 觸發(fā)時通過 MQTT 向 Python 腳本發(fā)送“打開”消息的Home Assistant 腳本。
幸運的是,我已經(jīng)編寫了所有三個組件并將它們打包到我的 Github 存儲庫中!
要開始克隆 Github 存儲庫,請在連接到開門器遙控器的 Raspberry Pi 上執(zhí)行以下操作:
git clone https://github.com/jgillula/rpi-gate-opener.git
cd rpi-gate-opener
連接到 MQTT 服務(wù)器并控制開門器遙控器的 Python 腳本位于src/mqtt-gate-opener.py
. 它已經(jīng)設(shè)置好了,所以我們真的不需要觸摸它(但如果您想了解它是如何工作的,歡迎您查看它)。
現(xiàn)在我們有了腳本,我們需要安裝它并設(shè)置 systemd 服務(wù)以在 Raspberry Pi 啟動時運行它。
為此,我們將首先使用configure
git repo 中的腳本配置我們的安裝。該configure
腳本有幾個選項。如果你不理解這些選項,你可以運行下面的腳本,它會為你使用健全的默認值。
-
--with-virtualenv
— 開門器遠程代碼使用RPi.GPIO和paho.mqtt Python 包。如果您已經(jīng)在全球范圍內(nèi)安裝了這些,那么您可以省略--with-virtualenv
并且開門器遠程代碼將在全局 Python 環(huán)境中運行。否則,保留它,安裝腳本將創(chuàng)建一個虛擬環(huán)境,將RPi.GPIO和paho.mqtt安裝到其中,并確保 Python 腳本在其中運行。 -
--prefix=PREFIX
— 默認情況下,安裝腳本會將文件安裝到/usr/local/etc/
和/usr/local/lib/
. 如果您想在 之外的某個地方安裝開門器遠程代碼/usr/local/
,您可以使用此選項指定不同的目錄前綴。 -
SERVICE_USER=user
— 如果該用戶存在,則開門器遠程服務(wù)將以用戶 'pi' 身份運行,如果不存在,則以 root 身份運行。如果您想以不同的用戶身份運行,您可以通過將SERVICE_USER
環(huán)境變量設(shè)置為您想要的用戶來指定哪個用戶。
同樣,如果您不知道這些選項指的是什么,您可以忽略它們并執(zhí)行以下操作:
./configure --with-virtualenv
并且您將獲得適用于任何系統(tǒng)的合理默認值。
接下來,通過執(zhí)行以下操作在 Raspberry Pi 上安裝開門器遠程代碼:
make
sudo make install
最后,我們需要配置開門器遠程代碼以使用正確的 MQTT 服務(wù)器和 GPIO 引腳。為此,請編輯/usr/local/etc/mqtt-gate-opener.conf
. (如果您通過configure
腳本更改了安裝前綴,那么您的mqtt-gate-opener.conf
文件將位于PREFIX/etc/mqtt-gate-opener.conf
.)它看起來像:
[Gate Opener]
GPIO_PIN = 11
mqtt_server = localhost
mqtt_server_port = 1883
以下是每個變量的含義:
-
GPIO_PIN
- 無論您將開門器控制器電路連接到哪個引腳(使用電路板引腳號) -
mqtt_server
— MQTT 服務(wù)器的主機名或 IP 地址。如果 MQTT 服務(wù)器在連接到開門器遙控器的同一個 Raspberry Pi 上運行,您可以將其保留為localhost
. 如果您的 MQTT 服務(wù)器在您的 Home Assistant 機器上運行,這應(yīng)該是您的 Home Assistant 機器的主機名或 IP 地址。 -
mqtt_server_port
— 如果您使用 MQTT 服務(wù)器的非默認端口,您可以在此處進行更改。
編輯這些值以適合您的設(shè)置,然后mqtt-gate-opener
通過調(diào)用重新啟動服務(wù)
sudo systemctl restart mqtt-gate-opener.service
然后,您可以通過執(zhí)行來驗證服務(wù)是否正在運行
systemctl status mqtt-gate-opener.service
如果服務(wù)運行正常,您應(yīng)該Active: active (running)
在第三行看到。(如果您看到Active: failed
,請仔細檢查您輸入mqtt_server
的內(nèi)容mqtt_server_port
是否正確mqtt-gate-opener.conf
,然后嘗試重新啟動服務(wù)。)
現(xiàn)在我們已經(jīng)在 Raspberry Pi 上運行了 Python 腳本,最后一步是設(shè)置 Home Assistant 腳本,它將 MQTT 消息發(fā)送到該 Python 腳本。
在 git repo 中有一個這樣的 Home Assistant 腳本的簡單示例src/home_assistant_script.yaml
。看起來像:
open_gate
alias: Open the gate
sequence:
- service: mqtt.publish
data:
topic: "gate-opener/open"
payload: "home-assistant"
這個簡單的 Home Assistant 腳本只做一件事:它通過 MQTT 在“gate-opener/open”主題上發(fā)布一條帶有有效負載“home-assistant”的消息。
要將此腳本添加到 Home Assistant,您需要將上面的行復(fù)制并粘貼到運行 Home Assistant 的任何機器上scripts.yaml
的文件中。如果您在查找文件時需要幫助,請參閱Home Assistant 文檔。scripts.yaml
將這些行添加到 后scripts.yaml
,重新啟動 Home Assistant 以確保它檢測到新腳本。根據(jù)您配置 Home Assistant UI 的方式,您可能還需要在Home Assistant 儀表板上為其顯式添加卡片。
就是這樣!要打開您的大門,只需從 Home Assistant 執(zhí)行“打開大門”腳本,然后觀看奇跡發(fā)生!
8.雙重獎勵:無需家庭助理控制大門!
注意:本節(jié)假設(shè)您已經(jīng)在某處運行了 MQTT 代理。(它可以是你用來控制開門器的同一個樹莓派,但它不是必須的。只要開門器樹莓派可以與 MQTT 服務(wù)器通信,你應(yīng)該沒問題。)
它還假設(shè)您可以從 Internet 訪問該 MQTT 代理。如果您在設(shè)置方面需要幫助,您可以在此處查看我的教程,了解如何使用來自 Let's Encrypt 的證書使用來自 DuckDNS 的動態(tài) DNS 域名、用戶名/密碼身份驗證、訪問控制和 TLS 設(shè)置 mosquitto。
要從任何地方訪問開門器,您可以使用我放在一起的 Docker 映像,該 docker 容器使用運行Flask和paho-mqtt的 Python 腳本來托管一個網(wǎng)站,該網(wǎng)站允許您通過 Web 觸發(fā)開門器。
只需在您最喜歡的服務(wù)上托管 docker 映像即可。Google Cloud Run 提供了一個免費層,它不僅僅涵蓋運行這個簡單的 docker 容器。有關(guān)如何執(zhí)行此操作的說明,請參見此處。
要配置 docker 容器,請設(shè)置以下環(huán)境變量:
-
PORT
— (必需)您的 docker 容器應(yīng)偵聽網(wǎng)絡(luò)流量的端口 -
MQTT_SERVER_HOSTNAME
—(必需)您的 MQTT 代理的主機名 -
MQTT_SERVER_PORT
— (可選)您的 MQTT 代理的端口。默認為8883
. -
MQTT_SERVER_USERNAME
— (可選)用于登錄 MQTT 代理的用戶名。如果沒有給出,MQTT 客戶端將不會使用用戶名/密碼。 -
MQTT_SERVER_PASSWORD
— (可選)用于登錄 MQTT 代理的密碼。如果沒有給出,MQTT 客戶端將不會使用用戶名/密碼。 -
MQTT_USE_TLS
— (可選)是否使用加密的 TLS 連接連接到 MQTT 代理,包括驗證其是否具有有效證書。默認為true
. 設(shè)置false
為禁用加密。 -
MQTT_COMMAND_TOPIC
— (可選)用于觸發(fā)開門器的主題。默認為gate-opener/open
. -
MQTT_RESPONSE_TOPIC
— (可選)要監(jiān)聽以接收來自開門者的確認消息的主題。默認為gate-opener/opened
. -
ACCESS_TOKENS_LIST
—(必需)用于訪問 Web 上的服務(wù)的訪問令牌的 json 列表。這些令牌是唯一可以保護您的開門器不被任何人訪問的東西,因此它們應(yīng)該是長且隨機的,這樣它們就不會被猜測或暴力破解,例如['token1-I2JJVsEV5LCfbDqMMM1iL5rCh3VaNiqKNN2RQZrkZv7BjV7MShEmwxFXsx1210J6', 'token2-H3udRjyhuXKOUi2OU8E6PGpST5S78Fc79lDeftVurht6QKIbyqxZHsftIp8NMvfE']
一旦你的容器運行起來,你可以通過網(wǎng)絡(luò)訪問它,方法是訪問
哪里ACCESS_TOKEN
是來自 的訪問令牌之一ACCESS_TOKENS_LIST
。
如您所見,網(wǎng)站的安全性取決于您選擇的訪問令牌的唯一性和長度,而不是需要用戶名或密碼。缺點是您必須使用非常長(我建議大于 64 個字符)和隨機(即由您的計算機生成)的令牌。您可以使用簡單的 Python 腳本生成這樣的令牌:
import secrets, string
''.join(secrets.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(64))
雖然生成的訪問 URL 不會令人難忘,但它們是持久的、可收藏的和可共享的,因此您可以,例如,為您的每個朋友和家人提供一個唯一的訪問令牌/URL,他們所要做的就是為該 URL 添加書簽?zāi)軌蛟谒麄冃枰臅r候回來打開你的大門。
9. 問題、疑問和評論
如果您對上述說明有任何問題或疑問,請在下面的評論部分給我留言。我很樂意幫忙!
如果您對代碼有任何問題,請隨時在 Github 上打開一個問題。
感謝您的閱讀,我希望您發(fā)現(xiàn)本教程對您有用!
- Blynk通用遙控器開源分享
- SONOS遙控器開源
- 物聯(lián)網(wǎng)遙控器控制車庫門開源
- 重新利用舊遙控器開源分享
- 揚聲器電視遙控器IR Translator開源
- Alpha V1:開源Arduino基礎(chǔ)遙控器
- 四軸遙控器開源分享
- 迷你遙控器開源項目
- 萬能遙控器開源設(shè)計
- 紅外遙控器編碼大全 84次下載
- 風神遙控器正確拆卸方法步驟 15次下載
- 空調(diào)遙控器維修資料下載 18次下載
- 無線遙控器資料 9次下載
- 微型遙控器電路圖
- 簡易實用的遙控器電路圖
- 萬能遙控器的設(shè)置和使用方法 1.2w次閱讀
- 如何構(gòu)建一個簡單的基于紅外的車門遙控器 1145次閱讀
- 如何創(chuàng)建基于MAXQ的“學(xué)習(xí)”遙控器 922次閱讀
- 遙控器的組成 9432次閱讀
- 同欣智能科技HCS301滾碼遙控器簡介 9598次閱讀
- fireflyAIO-3288J紅外遙控器介紹 1617次閱讀
- fireflyAIO-3288C主板紅外遙控器簡介 1567次閱讀
- 同欣智能科技LPRX315遙控器 1885次閱讀
- Firefly關(guān)于RK3288的紅外遙控器簡介 2557次閱讀
- 一文弄懂工業(yè)無線遙控器是什么 1.4w次閱讀
- 無線遙控器常見的五個故障及處理辦法 2.7w次閱讀
- 帶你了解遙控器的發(fā)展歷史 1.6w次閱讀
- 一文弄懂無線遙控器 8883次閱讀
- 遙控器集成檢測系統(tǒng)檢測CAN總線遙控器操作過程簡介 7039次閱讀
- 簡單實用的遙控器檢測儀電路圖 1.7w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多