資料介紹
描述
Arduino 懷舊之情
我十一歲的時候開始玩 Arduino,我的第一個項目在這里發(fā)布(它現(xiàn)在突然消失了嗎?)是在我十三歲的時候——但現(xiàn)在我十八歲了。時間過去了,但幾天前我決定重新打開“Arduino 盒子”,在燒焦的組件和死昆蟲之間,我拿起了我的 Arduino UNO 和一個在 Aliexpress 上購買的 Ethernet Shield 仿制品。我不得不說,這是一個“懷舊項目”,我決定不為這個項目買任何東西,只使用那個盒子里的東西——而且,以太網(wǎng)電纜是免費的,因為我在學(xué)校偷了它。
我決定做一個 HomeKit 相關(guān)的項目,主要有兩個原因:
開始之前:安裝 HomeBridge
由于 Ethernet Shield 不是連接家庭自動化配件的最可能方式(在大多數(shù)情況下首選 Wi-Fi),因此沒有一種“官方且經(jīng)過測試”的方式可以直接連接到 HomeKit 而無需中間設(shè)置。相反,對于 ESP 系列,有一個庫可以讓 HomeKit 直接訪問開發(fā)板,當然配置和設(shè)置起來相當復(fù)雜。
在這個項目中,Arduino 開發(fā)板和 HomeKit 之間的通信由 HomeBridge 管理。HomeBridge 是一個服務(wù)器,可以托管在 LAN 上的計算機上,并充當本地網(wǎng)絡(luò)設(shè)備和互聯(lián)網(wǎng)之間的“橋梁”(顧名思義)。這可能是一個缺點,因為需要一臺托管服務(wù)器的計算機,但它對于像我們將要制作的簡單編碼設(shè)備來說更實用。
就我而言,這不是我實際會使用的設(shè)備,它更像是一個演示。所以我在我的 iMac 上托管了 HomeBridge。在本教程中,我不會向您展示如何安裝它,而是為您提供一個有用的鏈接,向您展示正確的安裝方法,請查看此鏈接以在 macOS 上安裝 HomeBridge 。
在那之后,你可能會看到類似這樣的東西
將 HomeBridge 添加到您的家庭應(yīng)用
安裝 HomeBridge 后,您必須將所謂的“HomeBridge Hub”添加到 iPhone 上的家庭應(yīng)用程序。為此,請按照下列步驟操作:
- 打開家庭應(yīng)用
- 單擊屏幕右上角的“+”圖標,然后單擊“添加附件”
- 掃描 HomeBridge 儀表板上顯示的二維碼
- 點擊“添加到主頁”
- 該應(yīng)用程序會說該橋未經(jīng)過認證,無論如何都要添加它
- 選擇橋梁在您家中的位置
- 為橋選擇一個名字
完成后,橋?qū)⑻砑拥侥?Home 應(yīng)用程序中
安裝 HomeBridge 插件
整個項目依賴于兩個插件,homebridge-http-rgb-push和homebridge-http-notification-server 。對我們來說幸運的是,按照以下步驟安裝這些插件非常容易:
- 轉(zhuǎn)到 HomeBridge 的“插件”部分
- 在搜索欄中輸入兩個庫的名稱
- 通過單擊“安裝”按鈕安裝庫
通常這個過程很快,應(yīng)該不會出錯,如果你運氣好,我們就可以進行下一步了。
HomeBridge 配置文件
HomeBridge 配置和定制的核心是一個 JSON 文件。HomeBridge 通過將其加載到瀏覽器內(nèi)的編輯器中,可以輕松訪問和修改它,該編輯器可以在“配置”面板中輕松訪問。
在這里,您必須做出第一個重要決定,即要為 Arduino 設(shè)置的 IP 地址。如果需要,您以后可以隨時更改它。您最有可能希望用于該附件的配置如下。
將其粘貼到“附件”括號內(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è)置附件名稱,請編輯“名稱”字段。如果你想保留我使用的 IP 地址,那沒問題。最后,您應(yīng)該會看到這樣的屏幕。
要應(yīng)用這些更改,您必須通過單擊橙色保存按鈕來保存文件,然后通過單擊右上角的關(guān)閉圖標重新啟動 HomeBridge(保存文件后它將開始閃爍)
通過打開 Home 應(yīng)用程序,您現(xiàn)在應(yīng)該會看到自動添加的配件。
阿杜諾,終于
是的,我們終于回來了。同樣對于 LED 設(shè)置,我使用了我已經(jīng)擁有的,這就是我使用的:
- 便宜且通用的 12V LED 燈條
- 一些MOSFET
- 一些1k歐姆的電阻
如果你愿意,你可以附加一個簡單的按鈕并將其用作“手動開關(guān)”,這也會通過向服務(wù)器發(fā)送通知來更改 HomeKit 上的狀態(tài)。附加一個按鈕不應(yīng)該那么難,但是有一個關(guān)于如何做的很好的教程:)
說到代碼,它并沒有那么復(fù)雜。如果您迫不及待地想對此進行測試,則可以直接將其上傳到您的板上,而無需花時間觀看它。但是停下!首先,您應(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!)
您要重點更改的主要地址是 HomeBridge 服務(wù)器地址,如果您托管 HomeBridge 的機器具有靜態(tài) IP 地址(例如 Pi),則可以立即設(shè)置。就我而言,我的電腦在局域網(wǎng)內(nèi)沒有靜態(tài) IP 地址,我不想只為這個項目設(shè)置靜態(tài)地址。如果你的情況和我一樣,你可以使用大多數(shù)路由器提供給每個主機的.local mDNS地址(在我的例子中,我設(shè)置的地址是“myMacExample.local”,你的路由器的mDNS服務(wù)器將自動解析此地址并提示請求到正確的 IP 地址)。
您始終可以在 HomeBridge 儀表板中查看您的 HomeBridge 服務(wù)器地址,就在二維碼圖像下方。如果你打算每天使用 HomeBridge,我真的建議你為托管它的機器分配一個靜態(tài) IP 地址。
最后但同樣重要的是,檢查草圖中設(shè)置的 Arduino 的 IP 地址是否等于 HomeBridge 配置文件中設(shè)置的 IP 地址。
完成所有這些后,您現(xiàn)在可以將以太網(wǎng)擴展板粘貼到 Arduino 上,插入以太網(wǎng)電纜并加載草圖。
解釋代碼
為了確保正確處理以太網(wǎng)設(shè)置,我從官方 WebServer 和 WebClient 示例開始構(gòu)建我的草圖。使用 Arduino 以太網(wǎng)庫發(fā)出請求很粗糙,但很容易。
這是在 Home 應(yīng)用程序中進行更改時系統(tǒng)執(zhí)行的流程:
- HomeKit 向 HomeBridge 服務(wù)器發(fā)送一個事件
- HomeBridge 服務(wù)器然后將其發(fā)送到 Arduino
- Arduino 讓這一切成為現(xiàn)實
- 為了確認請求已得到滿足,需要一個確認響應(yīng),因此 Arduino 在執(zhí)行操作后向 HomeBridge 發(fā)送確認
- 然后 HomeBridge 確認該操作發(fā)生在 HomeKit 上
- 最后 HomeKit 在 Home 應(yīng)用程序上顯示更改
處理動作的 GET/SET 的代碼如下。本例為“on”動作的接收-執(zhí)行-確認流程。
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)的按鈕,實現(xiàn)了以下流程
- Arduino 向 HomeBridge 發(fā)送 POST 請求
- HomeBridge 驗證設(shè)備的狀態(tài),驗證是否與 Arduino 發(fā)送的相匹配
- HomeBridge 通知 HomeKit 狀態(tài)改變
- HomeKit 在 Home 應(yīng)用程序上顯示更改
這是 Arduino 構(gòu)建和發(fā)送的通知請求,其余由 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 請求組成,如果你問我,它不是那么安全,但 HomeBridge 將確保互聯(lián)網(wǎng)連接的安全性。
……有效果嗎?
我真的希望如此!為了確保這一點,請始終注意串行監(jiān)視器,因為那里會記錄非常有用的調(diào)試信息
在串行監(jiān)視器上,您將看到收到的每個請求、完成的請求操作和處理的信息。您還將看到,當按鈕被觸發(fā)時,通知請求被發(fā)送到服務(wù)器
此外,始終檢查 HomeBridge 上的日志,顯示服務(wù)器發(fā)送或接收的每個請求
嘿 Siri,就這樣(幾乎)
是的,僅此而已。我希望這對你來說很容易設(shè)置,因為我很難讓它工作。我遇到了一些問題,例如家庭應(yīng)用程序上的附件“丟失”,可能是由于 HomeBridge 對 Arduino 的非連續(xù)輪詢造成的。要重新獲得對配件的控制,只需在 Home 應(yīng)用程序上點擊它,這將喚醒 HomeBridge 并將配件重新連接到網(wǎng)絡(luò)。
我已經(jīng)很長時間沒有測試過這個項目了,因此我不建議依賴這種設(shè)置作為 DIY 家庭自動化的永久解決方案,肯定有更好的。但是,嘿,這是一個學(xué)習的機會,無論是對我還是(我希望?。δ銇碚f,了解這個復(fù)雜的東西 - 如 HomeKit - 是如何工作的。
對于任何問題,請不要猶豫寫評論。在這里,我將在 Apple 生態(tài)系統(tǒng)內(nèi)的 Home 應(yīng)用程序中留下一些最終外觀的屏幕截圖。
?
?
- APA102 RGB LED - FPGA視頻控制器
- RGB LED控制器開源分享
- 用于家居裝飾的簡單RGB控制器
- 如何制作RC控制器
- RGB LED燈控制器開源分享
- ESP8266單股RGB LED控制器板
- 遠程Wifi RGB LED控制器開源項目
- 液位控制器設(shè)計與制作解析 19次下載
- 電梯控制器設(shè)計與制作 18次下載
- 基于PAC的電機控制器快速控制原型研究 50次下載
- 燈光控制集成電路與燈光控制器制作 0次下載
- 家電自動控制器的制作及電路圖
- 電風扇加裝陣風控制器電路及制作
- 電磁水閥自動控制器電路及制作
- 水箱自動上水控制器電路及制作
- 微控制器與運動控制器的區(qū)別 377次閱讀
- PID控制器與PWM控制器的區(qū)別 1661次閱讀
- PID控制器與開關(guān)控制器的區(qū)別 398次閱讀
- 矩陣LED調(diào)光器可在RGBW LED中實現(xiàn)精確的色彩控制和圖案制作 2141次閱讀
- PID控制器概述與制作實例 5313次閱讀
- 如何使用Arduino Leonardo和MPU6050制作一個有線的手勢控制器 2625次閱讀
- 用單運放制作的控制器電路 3070次閱讀
- 如何制作簡易降壓控制器 2379次閱讀
- dfrobotuHex微型低功耗控制器簡介 1407次閱讀
- 電話遠程控制器的設(shè)計與制作 2187次閱讀
- 什么是運動控制器_運動控制器的工作原理及應(yīng)用 3.6w次閱讀
- HomeKit是如何實現(xiàn)真正的智能家居的? 6490次閱讀
- homekit怎么設(shè)置,homekit用戶界面指南 1.5w次閱讀
- 自制紅外線自動門控制器電路制作方案 4414次閱讀
- 用MAX6641制作的智能溫度控制器電路圖 4262次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多