資料介紹
描述
Arduino 懷舊之情
我十一歲的時(shí)候開始玩 Arduino,我的第一個(gè)項(xiàng)目在這里發(fā)布(它現(xiàn)在突然消失了嗎?)是在我十三歲的時(shí)候——但現(xiàn)在我十八歲了。時(shí)間過去了,但幾天前我決定重新打開“Arduino 盒子”,在燒焦的組件和死昆蟲之間,我拿起了我的 Arduino UNO 和一個(gè)在 Aliexpress 上購(gòu)買的 Ethernet Shield 仿制品。我不得不說,這是一個(gè)“懷舊項(xiàng)目”,我決定不為這個(gè)項(xiàng)目買任何東西,只使用那個(gè)盒子里的東西——而且,以太網(wǎng)電纜是免費(fèi)的,因?yàn)槲以趯W(xué)校偷了它。
我決定做一個(gè) HomeKit 相關(guān)的項(xiàng)目,主要有兩個(gè)原因:
開始之前:安裝 HomeBridge
由于 Ethernet Shield 不是連接家庭自動(dòng)化配件的最可能方式(在大多數(shù)情況下首選 Wi-Fi),因此沒有一種“官方且經(jīng)過測(cè)試”的方式可以直接連接到 HomeKit 而無需中間設(shè)置。相反,對(duì)于 ESP 系列,有一個(gè)庫(kù)可以讓 HomeKit 直接訪問開發(fā)板,當(dāng)然配置和設(shè)置起來相當(dāng)復(fù)雜。
在這個(gè)項(xiàng)目中,Arduino 開發(fā)板和 HomeKit 之間的通信由 HomeBridge 管理。HomeBridge 是一個(gè)服務(wù)器,可以托管在 LAN 上的計(jì)算機(jī)上,并充當(dāng)本地網(wǎng)絡(luò)設(shè)備和互聯(lián)網(wǎng)之間的“橋梁”(顧名思義)。這可能是一個(gè)缺點(diǎn),因?yàn)樾枰慌_(tái)托管服務(wù)器的計(jì)算機(jī),但它對(duì)于像我們將要制作的簡(jiǎn)單編碼設(shè)備來說更實(shí)用。
就我而言,這不是我實(shí)際會(huì)使用的設(shè)備,它更像是一個(gè)演示。所以我在我的 iMac 上托管了 HomeBridge。在本教程中,我不會(huì)向您展示如何安裝它,而是為您提供一個(gè)有用的鏈接,向您展示正確的安裝方法,請(qǐng)查看此鏈接以在 macOS 上安裝 HomeBridge 。
在那之后,你可能會(huì)看到類似這樣的東西
將 HomeBridge 添加到您的家庭應(yīng)用
安裝 HomeBridge 后,您必須將所謂的“HomeBridge Hub”添加到 iPhone 上的家庭應(yīng)用程序。為此,請(qǐng)按照下列步驟操作:
- 打開家庭應(yīng)用
- 單擊屏幕右上角的“+”圖標(biāo),然后單擊“添加附件”
- 掃描 HomeBridge 儀表板上顯示的二維碼
- 點(diǎn)擊“添加到主頁(yè)”
- 該應(yīng)用程序會(huì)說該橋未經(jīng)過認(rèn)證,無論如何都要添加它
- 選擇橋梁在您家中的位置
- 為橋選擇一個(gè)名字
完成后,橋?qū)⑻砑拥侥?Home 應(yīng)用程序中
安裝 HomeBridge 插件
整個(gè)項(xiàng)目依賴于兩個(gè)插件,homebridge-http-rgb-push和homebridge-http-notification-server 。對(duì)我們來說幸運(yùn)的是,按照以下步驟安裝這些插件非常容易:
- 轉(zhuǎn)到 HomeBridge 的“插件”部分
- 在搜索欄中輸入兩個(gè)庫(kù)的名稱
- 通過單擊“安裝”按鈕安裝庫(kù)
通常這個(gè)過程很快,應(yīng)該不會(huì)出錯(cuò),如果你運(yùn)氣好,我們就可以進(jìn)行下一步了。
HomeBridge 配置文件
HomeBridge 配置和定制的核心是一個(gè) JSON 文件。HomeBridge 通過將其加載到瀏覽器內(nèi)的編輯器中,可以輕松訪問和修改它,該編輯器可以在“配置”面板中輕松訪問。
在這里,您必須做出第一個(gè)重要決定,即要為 Arduino 設(shè)置的 IP 地址。如果需要,您以后可以隨時(shí)更改它。您最有可能希望用于該附件的配置如下。
將其粘貼到“附件”括號(hào)內(nèi)
{
"accessory": "HttpPushRgb",
"name": "Arduino RGB",
"service": "Light",
"timeout": 3000,
"switch": {
"notificationID": "47110815",
"status": "http://192.168.1.177/statuspower",
"powerOn": "http://192.168.1.177/on",
"powerOff": "http://192.168.1.177/off"
},
"brightness": {
"status": "http://192.168.1.177/statusbrightness",
"url": "http://192.168.1.177/brightness/%s"
},
"color": {
"status": "http://192.168.1.177/statuscolor",
"url": "http://192.168.1.177/set/%s"
}
}
要設(shè)置附件名稱,請(qǐng)編輯“名稱”字段。如果你想保留我使用的 IP 地址,那沒問題。最后,您應(yīng)該會(huì)看到這樣的屏幕。
要應(yīng)用這些更改,您必須通過單擊橙色保存按鈕來保存文件,然后通過單擊右上角的關(guān)閉圖標(biāo)重新啟動(dòng) HomeBridge(保存文件后它將開始閃爍)
通過打開 Home 應(yīng)用程序,您現(xiàn)在應(yīng)該會(huì)看到自動(dòng)添加的配件。
阿杜諾,終于
是的,我們終于回來了。同樣對(duì)于 LED 設(shè)置,我使用了我已經(jīng)擁有的,這就是我使用的:
- 便宜且通用的 12V LED 燈條
- 一些MOSFET
- 一些1k歐姆的電阻
如果你愿意,你可以附加一個(gè)簡(jiǎn)單的按鈕并將其用作“手動(dòng)開關(guān)”,這也會(huì)通過向服務(wù)器發(fā)送通知來更改 HomeKit 上的狀態(tài)。附加一個(gè)按鈕不應(yīng)該那么難,但是有一個(gè)關(guān)于如何做的很好的教程:)
說到代碼,它并沒有那么復(fù)雜。如果您迫不及待地想對(duì)此進(jìn)行測(cè)試,則可以直接將其上傳到您的板上,而無需花時(shí)間觀看它。但是停下!首先,您應(yīng)該檢查為 RGB 通道和按鈕定義的引腳分配,然后設(shè)置正確的 HomeBridge 服務(wù)器 IP 地址和為您的電路板選擇的地址。
// connections of the three LED outputs and the button input
#define outRed 3
#define outGreen 5
#define outBlue 6
#define switchButton 7
// network properties
char homebridgeServer[] = "xxx.xxx.xxx.xxx"; // your HomeBridge server IP address
int homebridgePort = 8581;
IPAddress ip(192, 168, 1, 177); // IP address of Arduino (must be equal to the one set on homebridge!)
您要重點(diǎn)更改的主要地址是 HomeBridge 服務(wù)器地址,如果您托管 HomeBridge 的機(jī)器具有靜態(tài) IP 地址(例如 Pi),則可以立即設(shè)置。就我而言,我的電腦在局域網(wǎng)內(nèi)沒有靜態(tài) IP 地址,我不想只為這個(gè)項(xiàng)目設(shè)置靜態(tài)地址。如果你的情況和我一樣,你可以使用大多數(shù)路由器提供給每個(gè)主機(jī)的.local mDNS地址(在我的例子中,我設(shè)置的地址是“myMacExample.local”,你的路由器的mDNS服務(wù)器將自動(dòng)解析此地址并提示請(qǐng)求到正確的 IP 地址)。
您始終可以在 HomeBridge 儀表板中查看您的 HomeBridge 服務(wù)器地址,就在二維碼圖像下方。如果你打算每天使用 HomeBridge,我真的建議你為托管它的機(jī)器分配一個(gè)靜態(tài) IP 地址。
最后但同樣重要的是,檢查草圖中設(shè)置的 Arduino 的 IP 地址是否等于 HomeBridge 配置文件中設(shè)置的 IP 地址。
完成所有這些后,您現(xiàn)在可以將以太網(wǎng)擴(kuò)展板粘貼到 Arduino 上,插入以太網(wǎng)電纜并加載草圖。
解釋代碼
為了確保正確處理以太網(wǎng)設(shè)置,我從官方 WebServer 和 WebClient 示例開始構(gòu)建我的草圖。使用 Arduino 以太網(wǎng)庫(kù)發(fā)出請(qǐng)求很粗糙,但很容易。
這是在 Home 應(yīng)用程序中進(jìn)行更改時(shí)系統(tǒng)執(zhí)行的流程:
- HomeKit 向 HomeBridge 服務(wù)器發(fā)送一個(gè)事件
- HomeBridge 服務(wù)器然后將其發(fā)送到 Arduino
- Arduino 讓這一切成為現(xiàn)實(shí)
- 為了確認(rèn)請(qǐng)求已得到滿足,需要一個(gè)確認(rèn)響應(yīng),因此 Arduino 在執(zhí)行操作后向 HomeBridge 發(fā)送確認(rèn)
- 然后 HomeBridge 確認(rèn)該操作發(fā)生在 HomeKit 上
- 最后 HomeKit 在 Home 應(yīng)用程序上顯示更改
處理動(dòng)作的 GET/SET 的代碼如下。本例為“on”動(dòng)作的接收-執(zhí)行-確認(rèn)流程。
if (firstLine.indexOf("on") != -1) { // action is received
Serial.println("Turning ON");
// action is executed
powerStatus = 1;
analogWrite(outRed, colorR);
analogWrite(outGreen, colorG);
analogWrite(outBlue, colorB);
// action in confirmed back to the server
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println(powerStatus);
}
為了通知服務(wù)器狀態(tài)的變化,例如通過改變開關(guān)狀態(tài)的按鈕,實(shí)現(xiàn)了以下流程
- Arduino 向 HomeBridge 發(fā)送 POST 請(qǐng)求
- HomeBridge 驗(yàn)證設(shè)備的狀態(tài),驗(yàn)證是否與 Arduino 發(fā)送的相匹配
- HomeBridge 通知 HomeKit 狀態(tài)改變
- HomeKit 在 Home 應(yīng)用程序上顯示更改
這是 Arduino 構(gòu)建和發(fā)送的通知請(qǐng)求,其余由 HomeBridge 完成
Serial.println("==========");
Serial.println("Button changed the state, sending a notification to HomeBridge");
if (notificationClient.connect(homebridgeServer, homebridgePort)) {
if (powerStatus == 0) {
powerStatus = 1;
} else {
powerStatus = 0;
}
Serial.print("Successfully connected to: ");
Serial.println(notificationClient.remoteIP());
notificationClient.println("POST /47110815 HTTP/1.1");
notificationClient.print("Host: ");
notificationClient.print(homebridgeServer);
notificationClient.print(":");
notificationClient.println(homebridgePort);
notificationClient.println("User-Agent: Arduino/1.0");
if (powerStatus == 0) {
notificationClient.println("Content-Length: 41");
} else {
notificationClient.println("Content-Length: 40");
}
notificationClient.println("Content-Type: application/json");
notificationClient.println();
if (powerStatus == 0) {
notificationClient.println("{"characteristic": "On","value": "false"}");
} else {
notificationClient.println("{"characteristic": "On","value": "true"}");
}
delay(1);
notificationClient.stop();
Serial.println("Notification sent");
Serial.println("==========");
} else {
Serial.println("Connection failed");
Serial.println("==========");
}
理解了這些流程概念后,代碼就很容易理解了。它由基本的 HTTP 請(qǐng)求組成,如果你問我,它不是那么安全,但 HomeBridge 將確?;ヂ?lián)網(wǎng)連接的安全性。
……有效果嗎?
我真的希望如此!為了確保這一點(diǎn),請(qǐng)始終注意串行監(jiān)視器,因?yàn)槟抢飼?huì)記錄非常有用的調(diào)試信息
在串行監(jiān)視器上,您將看到收到的每個(gè)請(qǐng)求、完成的請(qǐng)求操作和處理的信息。您還將看到,當(dāng)按鈕被觸發(fā)時(shí),通知請(qǐng)求被發(fā)送到服務(wù)器
此外,始終檢查 HomeBridge 上的日志,顯示服務(wù)器發(fā)送或接收的每個(gè)請(qǐng)求
嘿 Siri,就這樣(幾乎)
是的,僅此而已。我希望這對(duì)你來說很容易設(shè)置,因?yàn)槲液茈y讓它工作。我遇到了一些問題,例如家庭應(yīng)用程序上的附件“丟失”,可能是由于 HomeBridge 對(duì) Arduino 的非連續(xù)輪詢?cè)斐傻摹?/font>要重新獲得對(duì)配件的控制,只需在 Home 應(yīng)用程序上點(diǎn)擊它,這將喚醒 HomeBridge 并將配件重新連接到網(wǎng)絡(luò)。
我已經(jīng)很長(zhǎng)時(shí)間沒有測(cè)試過這個(gè)項(xiàng)目了,因此我不建議依賴這種設(shè)置作為 DIY 家庭自動(dòng)化的永久解決方案,肯定有更好的。但是,嘿,這是一個(gè)學(xué)習(xí)的機(jī)會(huì),無論是對(duì)我還是(我希望!)對(duì)你來說,了解這個(gè)復(fù)雜的東西 - 如 HomeKit - 是如何工作的。
對(duì)于任何問題,請(qǐng)不要猶豫寫評(píng)論。在這里,我將在 Apple 生態(tài)系統(tǒng)內(nèi)的 Home 應(yīng)用程序中留下一些最終外觀的屏幕截圖。
?
?
- APA102 RGB LED - FPGA視頻控制器
- RGB LED控制器開源分享
- 用于家居裝飾的簡(jiǎn)單RGB控制器
- 如何制作RC控制器
- RGB LED燈控制器開源分享
- ESP8266單股RGB LED控制器板
- 遠(yuǎn)程Wifi RGB LED控制器開源項(xiàng)目
- 液位控制器設(shè)計(jì)與制作解析 19次下載
- 電梯控制器設(shè)計(jì)與制作 18次下載
- 基于PAC的電機(jī)控制器快速控制原型研究 50次下載
- 燈光控制集成電路與燈光控制器制作 0次下載
- 家電自動(dòng)控制器的制作及電路圖
- 電風(fēng)扇加裝陣風(fēng)控制器電路及制作
- 電磁水閥自動(dòng)控制器電路及制作
- 水箱自動(dòng)上水控制器電路及制作
- 微控制器與運(yùn)動(dòng)控制器的區(qū)別 377次閱讀
- PID控制器與PWM控制器的區(qū)別 1661次閱讀
- PID控制器與開關(guān)控制器的區(qū)別 398次閱讀
- 矩陣LED調(diào)光器可在RGBW LED中實(shí)現(xiàn)精確的色彩控制和圖案制作 2141次閱讀
- PID控制器概述與制作實(shí)例 5313次閱讀
- 如何使用Arduino Leonardo和MPU6050制作一個(gè)有線的手勢(shì)控制器 2625次閱讀
- 用單運(yùn)放制作的控制器電路 3070次閱讀
- 如何制作簡(jiǎn)易降壓控制器 2379次閱讀
- dfrobotuHex微型低功耗控制器簡(jiǎn)介 1407次閱讀
- 電話遠(yuǎn)程控制器的設(shè)計(jì)與制作 2187次閱讀
- 什么是運(yùn)動(dòng)控制器_運(yùn)動(dòng)控制器的工作原理及應(yīng)用 3.6w次閱讀
- HomeKit是如何實(shí)現(xiàn)真正的智能家居的? 6490次閱讀
- homekit怎么設(shè)置,homekit用戶界面指南 1.5w次閱讀
- 自制紅外線自動(dòng)門控制器電路制作方案 4414次閱讀
- 用MAX6641制作的智能溫度控制器電路圖 4262次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多