資料介紹
描述
這種可視對講在日本只有一個共用入口的典型公寓中很常見。大多數型號沒有任何物聯網功能,并且由于它們已集成到樓宇安全系統中,因此幾乎不可能用智能門鈴代替它們。因此,有些人使用 ADC、光傳感器或音頻傳感器來檢測呼叫并使用伺服電機來執行解鎖按鈕按下,從而入侵了他們公寓中的對講機。但是,由于我喜歡人們無法僅從外面看就知道是否添加了 IoT 功能的 hack,所以這次我在家中破解了一個(松下的 SHVT18612WK),其方式是
- 它的原始功能完好無損,從外部看不到破解。
- 呼叫檢測和解鎖操作 100% 以電子方式執行。
- 它安全地連接到 AWS 云。
- 它播放預先錄制的消息。
工作原理
我使用了帶有Mongoose OS的ESP32微控制器,因為我相信這是物聯網項目的最佳組合之一。我使用光電耦合器以電子方式檢測呼叫并解鎖入口門,并使用 DFPlayerMini播放預先錄制的消息。
以電子方式檢測呼叫
當從入口發起視頻通話時,可視對講機上的鑰匙形綠色 LED 開始閃爍。因此,通過將光耦合器的初級側與該 LED 并聯,將次級側連接到 GPIO 和 GND,并檢查 GPIO 的狀態,您可以檢測到呼叫。
當檢測到呼叫時,ESP32 會向 AWS IoT Core 發布消息。然后自動執行 AWS Lambda 以發送 Slack 消息。
以電子方式執行解鎖按鈕按下
通過將光耦的初級端連接到 GPIO 和 GND,次級端與對講電路板上的解鎖按鈕并聯,并將 GPIO 從 L 設置為 H,然后再設置為 L,中間有輕微的延遲,您無需物理按下解鎖按鈕即可執行解鎖操作。通話按鈕也是如此。
AWS Amplify Web 應用程序和 Alexa 技能向 AWS IoT Core 發布消息,ESP32 接收消息并完成工作。
步驟 1. 暴露主 PCB 并尋找 hack 點
首先,拆下可視對講機的側蓋并擰松螺絲。
在卸下電線束之前,請務必關閉電源開關。大多數型號都帶有內置火災警報器,當這些電線在電源開關打開的情況下被移除、切斷或燒毀時,它就會關閉。
?
尋找容易被黑客入侵的地點。
將帶狀電纜焊接到黑客點。(電纜顏色)
- 解鎖待機 LED +(橙色)
- 解鎖待機 LED –(紅色)
- 解鎖按鈕(藍色)
- 通話按鈕(綠色)
- 解鎖/通話按鈕共用 GND(黃色)
步驟 2. 構建電路
在迷你面包板上,放置 ESP32-DevKitC、光耦合器和 DFPayerMini。為盡可能避免穩定性問題,請使用實心跳線而不是柔性跳線。
我發現視頻對講面板上的鑰匙形 LED 上的電壓約為。3.0V,所以我使用 IF=7.5mA (and R=250ohm) 作為光耦進行呼叫檢測,根據其數據表,這是在 VF=1.17V 下運行的推薦值。如果這個IF太大,鑰匙形LED不閃爍,如果太小,光耦將不起作用。我使用 IF=15mA(和 R=120ohm)作為光耦合器,用于通話和解鎖按鈕按下。
對于 DFPlayerMini,只連接 Rx,因為對于這個 hack,ESP32 不需要知道它何時完成播放音頻文件,因此不需要 Tx。使用 Amazon Polly 生成 mp3 格式的音頻消息并將其保存到 microSD。
實際電路如下所示。你可以為此設計一個PCB。
步驟 3. 為 ESP32 編寫代碼并為 AWS IoT 預置它
對于這個項目,我使用了Mongoose OS ,一個非常強大的物聯網固件開發框架,因此應用程序代碼(init.js)可以用 JavaScript 編寫。完整代碼可在GitHub中找到。
首先,將 Mongoose OS 安裝到 ESP32 并使用以下命令將其連接到 Wi-Fi。
$ mos flash esp32
$ mos wifi SSID PASSWORD
通過加載 Mongoose OS API 開始編寫 init.js,然后聲明變量。
// Load Mongoose OS APIs
load('api_gpio.js');
load('api_mqtt.js');
load('api_sys.js');
load('api_timer.js');
load('api_uart.js');
// Declare variables
let ledPin = 12;
let talkBtn = 13;
let unlockBtn= 14;
let callState = false;
let uartNo =1;
let topic1 = 'intercom/detect';
let topic2 = 'intercom/unlock';
let qos = 1;
為 DFPlayerMini 設置 UART。
// UART Setup
UART.setConfig(uartNo, {
baudRate: 9600,
esp32: {
gpio: {
rx: 25,
tx: 26,
},
},
});
設置 GPIO 模式并初始化 GPIO。
// Set GPIO mode
GPIO.setup_input(ledPin, GPIO.PULL_UP); // iput & internally pulled up
GPIO.set_mode(startTalkingBtn, GPIO.MODE_OUTPUT);
GPIO.set_mode(openSecurityDoorBtn, GPIO.MODE_OUTPUT);
// Initialize GPIOs
GPIO.write(startTalkingBtn, 0);
GPIO.write(openSecurityDoorBtn, 0);
以下代碼塊檢測調用并向 topic1 發布消息。Mongoose OS 帶有一個有用的按鈕處理程序,用于檢測按鈕按下。ledPin 是內部上拉的,所以它通常是 H 并在發起呼叫時變為 L。Timer.set() 使 callState 在 15 秒后恢復正常。
// Detect calls and publish a message to topic1
GPIO.set_button_handler(ledPin, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 20, function(x) {
?
if (!callState) {
?
callState = true;
let message = JSON.stringify({ });
let ok = MQTT.pub(topic1, message, qos);
print(ok);
print("-----Call detected, hopefully published to AWS IoT-----");
?
Timer.set(15000, false, function() {
callState = false;
print("-----Back to normal-----");
}, null);
?
}
?
}, true);
要通過 Slack 發送通知,您可以使用發布到 topic1 和Incoming Hooks 的消息。創建一個將消息發送到 Slack 通道并配置 AWS IoT 規則以觸發此 Lambda 的 Lambda 函數。
當從 AWS IoT Core 接收到消息時,以下代碼塊依次執行通話按鈕按下、音頻播放、解鎖按鈕按下和通話按鈕按下。我在這里使用了 3 個定時器,因為在 Mongoose OS 中,對于這種用例,建議使用 Timer.set() 而不是 Sys.usleep() 來穩定運行。
// Subscribe to topic2 and unlock door when message is received
MQTT.sub(topic2, function(conn, msg) {
print('-----Received message from AWS IoT-----')
talk();
?
Timer.set(2000, false, function() {
play();
}, null);
Timer.set(4500, false, function() {
unlock();
}, null);
?
Timer.set(9500, false, function() {
talk();
}, null);
?
}, true);
talk() 和 unlock() 所做的是將 GPIO 從 L 設置為 H,然后將 Sys.usleep() 設置回 L。這可以模擬實際的按鈕按下。
// Mimic talk button press
function talk(){
GPIO.write(talkBtn, 1);
Sys.usleep(300000);
GPIO.write(talkBtn, 0);
}
// Mimic unlock button press
function unlock(){
GPIO.write(unlockBtn, 1);
Sys.usleep(300000);
GPIO.write(unlockBtn, 0);
}
DFPlayerMini 可以通過 UART 控制。參考在這里。
// Play /01/001.mp3 with DFPlayerMini
function play(){
UART.write(uartNo, '\x7E');
UART.write(uartNo, '\xFF');
UART.write(uartNo, '\x06');
UART.write(uartNo, '\x0F');
UART.write(uartNo, '\x00');
UART.write(uartNo, '\x01');
UART.write(uartNo, '\x01');
UART.write(uartNo, '\xEF');
}
由于 Mongoose OS 包含適用于嵌入式 C 的 AWS IoT 設備開發工具包并執行將 ESP32 連接到 AWS IoT Core 所需的一切操作,因此您需要執行以下命令。確保您準備好您的訪問密鑰 ID 和秘密訪問密鑰對,并事先在您的計算機上進行設置。
$ mos aws-iot-setup --aws-region AWS_REGION
對于 Alexa 技能,創建一個具有向主題 2 發布消息的歡迎意圖,對講/解鎖。如果你使用 python,這樣的東西會起作用。
client = boto3.client('iot-data', region_name='es-east-1')
response = client.publish(
topic='intercom/unlock',
qos=1,
payload=json.dumps({ })
)
網上有很多如何創建 Alexa Skill 和 Amplify web 應用程序,所以請參考那些創建自己的 Skill 和應用程序的方法。
第 4 步:做電氣工作,把所有東西都藏在墻上
從墻上拆下可視對講機的底座。
拆下交流電源線,并在交流電源線上做一個分支。將帶有 USB 充電端口的壁式插座連接到分支,并將交流電源線連接到基本單元。
?
使用微型 USB 電纜為 ESP32 供電并將所有東西隱藏在墻上。確保將揚聲器放置在靠近麥克風的位置,否則客人無法聽到音頻消息。
現在破解完成了!
未來發展方向
我想為這個項目制作一個PCB。我還想分析視頻信號,將其從板上取出,然后發送到 AWS 云來做一些有趣的事情。
- 對講機原理、使用及縱圖集 89次下載
- DMR828數字對講機模塊資料下載
- 對講機寫頻軟件 41次下載
- 基于光子的對講機
- 對講機業務頻率規劃 11次下載
- ICOM對講機寫頻編程軟件CSF33G下載 12次下載
- ICOM對講機寫頻編程軟件CS-36FI下載 3次下載
- 如何使用ARM內核實現民用數字對講機系統的設計 25次下載
- 關于DSP的數字對講機語音處理方案的研究 15次下載
- 基于MPPSK數字對講機系統 1次下載
- 對講機維修資料 0次下載
- 藍牙對講手機APP藍牙對講對講機PTT對講方案 60次下載
- 簡易對講機 72次下載
- 數字對講機與模擬對講機的比較 249次下載
- 基于ARM內核的民用數字對講機系統的設計
- 防爆的對講機有哪些 防爆的對講機怎么選 880次閱讀
- 如何才能讓不同品牌的對講機之間互通信號 2.3w次閱讀
- 為什么藍牙對講機要加一根PTT線與普通對講機連接 1.4w次閱讀
- 淺析模擬對講機和數字對講機的區別 2.5w次閱讀
- 防爆對講機與普通對講機如何區別? 1.2w次閱讀
- 對講機和微信的區別在哪里?為什么微信,手機不能取代對講機? 1w次閱讀
- 什么是全國對講機_全國對講機的原理_全國對講機怎么用 5.1w次閱讀
- 新買的對講機怎么用_怎么知道對講機的頻率_對講機頻率設置 8.1w次閱讀
- 公網對講相關的幾個時延指標定義以及常用對講機與集群對講機之分 8687次閱讀
- 對講機是怎么分類的_對講機分類大全_對講機的工作原理介紹 1.4w次閱讀
- 關于對講機基礎知識的解答 7225次閱讀
- 對講機按鍵功能圖解 18.9w次閱讀
- 對講機調頻的4個步驟 4.3w次閱讀
- 深度剖析門禁對講機 5948次閱讀
- 基于防爆對講機的使用詳細說明 4836次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 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開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多