資料介紹
描述
這種可視對講在日本只有一個共用入口的典型公寓中很常見。大多數(shù)型號沒有任何物聯(lián)網(wǎng)功能,并且由于它們已集成到樓宇安全系統(tǒng)中,因此幾乎不可能用智能門鈴代替它們。因此,有些人使用 ADC、光傳感器或音頻傳感器來檢測呼叫并使用伺服電機來執(zhí)行解鎖按鈕按下,從而入侵了他們公寓中的對講機。但是,由于我喜歡人們無法僅從外面看就知道是否添加了 IoT 功能的 hack,所以這次我在家中破解了一個(松下的 SHVT18612WK),其方式是
- 它的原始功能完好無損,從外部看不到破解。
- 呼叫檢測和解鎖操作 100% 以電子方式執(zhí)行。
- 它安全地連接到 AWS 云。
- 它播放預(yù)先錄制的消息。
工作原理
我使用了帶有Mongoose OS的ESP32微控制器,因為我相信這是物聯(lián)網(wǎng)項目的最佳組合之一。我使用光電耦合器以電子方式檢測呼叫并解鎖入口門,并使用 DFPlayerMini播放預(yù)先錄制的消息。

以電子方式檢測呼叫
當(dāng)從入口發(fā)起視頻通話時,可視對講機上的鑰匙形綠色 LED 開始閃爍。因此,通過將光耦合器的初級側(cè)與該 LED 并聯(lián),將次級側(cè)連接到 GPIO 和 GND,并檢查 GPIO 的狀態(tài),您可以檢測到呼叫。
當(dāng)檢測到呼叫時,ESP32 會向 AWS IoT Core 發(fā)布消息。然后自動執(zhí)行 AWS Lambda 以發(fā)送 Slack 消息。

以電子方式執(zhí)行解鎖按鈕按下
通過將光耦的初級端連接到 GPIO 和 GND,次級端與對講電路板上的解鎖按鈕并聯(lián),并將 GPIO 從 L 設(shè)置為 H,然后再設(shè)置為 L,中間有輕微的延遲,您無需物理按下解鎖按鈕即可執(zhí)行解鎖操作。通話按鈕也是如此。
AWS Amplify Web 應(yīng)用程序和 Alexa 技能向 AWS IoT Core 發(fā)布消息,ESP32 接收消息并完成工作。

步驟 1. 暴露主 PCB 并尋找 hack 點
首先,拆下可視對講機的側(cè)蓋并擰松螺絲。

在卸下電線束之前,請務(wù)必關(guān)閉電源開關(guān)。大多數(shù)型號都帶有內(nèi)置火災(zāi)警報器,當(dāng)這些電線在電源開關(guān)打開的情況下被移除、切斷或燒毀時,它就會關(guān)閉。

?
尋找容易被黑客入侵的地點。

將帶狀電纜焊接到黑客點。(電纜顏色)
- 解鎖待機 LED +(橙色)
- 解鎖待機 LED –(紅色)
- 解鎖按鈕(藍(lán)色)
- 通話按鈕(綠色)
- 解鎖/通話按鈕共用 GND(黃色)

步驟 2. 構(gòu)建電路
在迷你面包板上,放置 ESP32-DevKitC、光耦合器和 DFPayerMini。為盡可能避免穩(wěn)定性問題,請使用實心跳線而不是柔性跳線。
我發(fā)現(xiàn)視頻對講面板上的鑰匙形 LED 上的電壓約為。3.0V,所以我使用 IF=7.5mA (and R=250ohm) 作為光耦進(jìn)行呼叫檢測,根據(jù)其數(shù)據(jù)表,這是在 VF=1.17V 下運行的推薦值。如果這個IF太大,鑰匙形LED不閃爍,如果太小,光耦將不起作用。我使用 IF=15mA(和 R=120ohm)作為光耦合器,用于通話和解鎖按鈕按下。
對于 DFPlayerMini,只連接 Rx,因為對于這個 hack,ESP32 不需要知道它何時完成播放音頻文件,因此不需要 Tx。使用 Amazon Polly 生成 mp3 格式的音頻消息并將其保存到 microSD。

實際電路如下所示。你可以為此設(shè)計一個PCB。

步驟 3. 為 ESP32 編寫代碼并為 AWS IoT 預(yù)置它
對于這個項目,我使用了Mongoose OS ,一個非常強大的物聯(lián)網(wǎng)固件開發(fā)框架,因此應(yīng)用程序代碼(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 設(shè)置 UART。
// UART Setup
UART.setConfig(uartNo, {
baudRate: 9600,
esp32: {
gpio: {
rx: 25,
tx: 26,
},
},
});
設(shè)置 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);
以下代碼塊檢測調(diào)用并向 topic1 發(fā)布消息。Mongoose OS 帶有一個有用的按鈕處理程序,用于檢測按鈕按下。ledPin 是內(nèi)部上拉的,所以它通常是 H 并在發(fā)起呼叫時變?yōu)?L。Timer.set() 使 callState 在 15 秒后恢復(fù)正常。
// 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 發(fā)送通知,您可以使用發(fā)布到 topic1 和Incoming Hooks 的消息。創(chuàng)建一個將消息發(fā)送到 Slack 通道并配置 AWS IoT 規(guī)則以觸發(fā)此 Lambda 的 Lambda 函數(shù)。
當(dāng)從 AWS IoT Core 接收到消息時,以下代碼塊依次執(zhí)行通話按鈕按下、音頻播放、解鎖按鈕按下和通話按鈕按下。我在這里使用了 3 個定時器,因為在 Mongoose OS 中,對于這種用例,建議使用 Timer.set() 而不是 Sys.usleep() 來穩(wěn)定運行。
// 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 設(shè)置為 H,然后將 Sys.usleep() 設(shè)置回 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 設(shè)備開發(fā)工具包并執(zhí)行將 ESP32 連接到 AWS IoT Core 所需的一切操作,因此您需要執(zhí)行以下命令。確保您準(zhǔn)備好您的訪問密鑰 ID 和秘密訪問密鑰對,并事先在您的計算機上進(jìn)行設(shè)置。
$ mos aws-iot-setup --aws-region AWS_REGION
對于 Alexa 技能,創(chuàng)建一個具有向主題 2 發(fā)布消息的歡迎意圖,對講/解鎖。如果你使用 python,這樣的東西會起作用。
client = boto3.client('iot-data', region_name='es-east-1')
response = client.publish(
topic='intercom/unlock',
qos=1,
payload=json.dumps({ })
)
網(wǎng)上有很多如何創(chuàng)建 Alexa Skill 和 Amplify web 應(yīng)用程序,所以請參考那些創(chuàng)建自己的 Skill 和應(yīng)用程序的方法。
第 4 步:做電氣工作,把所有東西都藏在墻上
從墻上拆下可視對講機的底座。

拆下交流電源線,并在交流電源線上做一個分支。將帶有 USB 充電端口的壁式插座連接到分支,并將交流電源線連接到基本單元。

?
使用微型 USB 電纜為 ESP32 供電并將所有東西隱藏在墻上。確保將揚聲器放置在靠近麥克風(fēng)的位置,否則客人無法聽到音頻消息。

現(xiàn)在破解完成了!

未來發(fā)展方向
我想為這個項目制作一個PCB。我還想分析視頻信號,將其從板上取出,然后發(fā)送到 AWS 云來做一些有趣的事情。
- 對講機原理、使用及縱圖集 99次下載
- DMR828數(shù)字對講機模塊資料下載
- 對講機寫頻軟件 43次下載
- 基于光子的對講機
- 對講機業(yè)務(wù)頻率規(guī)劃 11次下載
- ICOM對講機寫頻編程軟件CSF33G下載 12次下載
- ICOM對講機寫頻編程軟件CS-36FI下載 3次下載
- 如何使用ARM內(nèi)核實現(xiàn)民用數(shù)字對講機系統(tǒng)的設(shè)計 25次下載
- 關(guān)于DSP的數(shù)字對講機語音處理方案的研究 15次下載
- 基于MPPSK數(shù)字對講機系統(tǒng) 1次下載
- 對講機維修資料 0次下載
- 藍(lán)牙對講手機APP藍(lán)牙對講對講機PTT對講方案 61次下載
- 簡易對講機 72次下載
- 數(shù)字對講機與模擬對講機的比較 250次下載
- 基于ARM內(nèi)核的民用數(shù)字對講機系統(tǒng)的設(shè)計
- 防爆的對講機有哪些 防爆的對講機怎么選 1492次閱讀
- 如何才能讓不同品牌的對講機之間互通信號 2.4w次閱讀
- 為什么藍(lán)牙對講機要加一根PTT線與普通對講機連接 1.4w次閱讀
- 淺析模擬對講機和數(shù)字對講機的區(qū)別 2.5w次閱讀
- 防爆對講機與普通對講機如何區(qū)別? 1.3w次閱讀
- 對講機和微信的區(qū)別在哪里?為什么微信,手機不能取代對講機? 1w次閱讀
- 什么是全國對講機_全國對講機的原理_全國對講機怎么用 5.2w次閱讀
- 新買的對講機怎么用_怎么知道對講機的頻率_對講機頻率設(shè)置 8.1w次閱讀
- 公網(wǎng)對講相關(guān)的幾個時延指標(biāo)定義以及常用對講機與集群對講機之分 9058次閱讀
- 對講機是怎么分類的_對講機分類大全_對講機的工作原理介紹 1.5w次閱讀
- 關(guān)于對講機基礎(chǔ)知識的解答 7378次閱讀
- 對講機按鍵功能圖解 19w次閱讀
- 對講機調(diào)頻的4個步驟 4.4w次閱讀
- 深度剖析門禁對講機 6176次閱讀
- 基于防爆對講機的使用詳細(xì)說明 5016次閱讀
下載排行
本周
- 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元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 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次下載 | 免費
評論