電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Homematic顯示時鐘開源分享

Homematic顯示時鐘開源分享

2022-10-27 | zip | 1.00 MB | 次下載 | 免費

資料介紹

描述

我曾經(jīng)在我們的客廳里有一個便宜且不準確的時鐘,帶有溫度顯示,我想用可以自行設置時間和日期的東西替換它,就像你今天所期望的那樣。它還應該顯示我可用的 Homematic 智能家居數(shù)據(jù),例如溫度傳感器和其他信息(例如門鈴傳感器)。

由于市場上沒有這樣的設備,我決定自己制作。

我決定在這個項目中使用 Arduino“Mkr Wifi 1010”,主要用于 WiFi 訪問能力和可用資源。有一些有趣的學習,我認為對于從同一個板開始的其他人可能有用(請參閱下面的詳細描述)。

我的 HM 時鐘顯示的特點:

  • 準確的自設置時鐘(訪問 NTP 互聯(lián)網(wǎng)時間服務以設置微控制器的 RTC)
  • 從 Homematic(或類似的智能家居系統(tǒng))接收并顯示 2 個溫度(內部和外部)
  • 在明亮的 7 段 LED 顯示屏上顯示時間、日期和溫度
  • 7 段 LED 將在夜間變暗(可編程
  • 額外的 8x8 雙色點陣顯示器顯示狀態(tài)符號(例如 WiFi、溫度或 NTP 更新等)
  • 可以顯示附加信息(例如,我添加了一個由 Homematic 門鈴傳感器觸發(fā)的可視門鈴)
  • 可以通過網(wǎng)頁控制(使用IP地址或路由器符號名在本地WiFi中訪問)
  • 有備用電池,測量電源電壓和電池電量(剩余百分比)并知道它何時由 USB 供電

使用的零件:

  • Arduino MKR Wifi 1010
  • 4x Adafruit 4 位 7 段顯示器,帶 I2C 背包 - 亮白色
  • 1 個帶 I2C 背包的 Adafruit 雙色 8x8 LED 方形像素矩陣
  • 可選:帶連接器 JST PHR-2 的 LiPo Akku(3、7 V;1200mAh)

說明

1. 要構建自己的 HM 顯示時鐘,我建議從使用 Mkr1010 和通過跳線連接的顯示器的面包板上開始。(這里不包括外殼的設計——也許我稍后會添加一些東西……但隨后會作為 3D 打印版本)。硬件設置非常簡單 - 請參閱提供的示意圖:

  • 將 Mkr1010 板安裝在面包板上并通過(微型)USB 電纜連接到您的 PC
  • 準備 5 個顯示模塊并將它們全部連接到相同的 I2C 總線(Mkr1010 的 SCL、SDA 引腳)和電源(3.3V 和 GND)。確保正確設置每個顯示器的 I2C 地址,以避免地址沖突(請參閱下面的詳細信息)
  • 在“5V pin”和“A1”之間以及“A1”和“GND”之間連接2個相等的電阻,例如2.2k作為簡單的分壓器
  • 可選擇連接鋰聚合物電池(3.7V;1.2Ah typ.);確保連接器的極性正確(詳情見下文)就是這樣。
?
?
?
poYBAGNYqHuARi9jABF1RXTpKYU216.jpg
?
1 / 3 ?我的時鐘的早期原型版本(這里我使用了額外的 16x2 Charactor LCD)
?

2.準備你的Arduino IDE:2.1首先將目標設置為“Boards - Arduino SAMD board - Arduino MKR WiFi 1010”(也許你想先嘗試一些簡單的Mkr WiFi 1010板示例)

poYBAGNYqH6AYT0BAAGjDAZpa7M637.jpg
Arduino IDE 板設置
?

2.2 然后為 I2C 驅動的顯示器下載并安裝必要的 Adafruit-LEDBackpack 庫(請參閱 Adafruit 網(wǎng)站上提供的良好說明:https://learn.adafruit.com/adafruit-led-backpack/downloads)

2.3 獲取我的 Arduino 源代碼(見下文),它包含 3 個文件:

  • HMClockDisplay.ino - 主要源代碼
  • menu_inline_css7.h - HTML 菜單源代碼(用于網(wǎng)站)
  • symbols.h - 8x8 點陣顯示的一些符號

確保它們都在一個文件夾中

2.4 在源代碼開頭的“用戶設置”部分更改您的個人設置:輸入您的家庭 WiFi 網(wǎng)絡 SSID(名稱)和密碼,并根據(jù)需要調整您的時區(qū)和夏令時(DST):

// 用戶設置 : // WIFI 設置char ssid[] = " XXX "; // 你的 WiFi 網(wǎng)絡名稱char pass[] = " YYY "; // 您的 WiFi 密碼// 時區(qū)設置int GMT = 1; // 適應您的時區(qū)(例如德國是 GMT+1 -> 設置為 1 )int DST = 0; // 調整夏令時(默認 = 0:無 DST(冬季)

注意:對于初始測試,我建議使用您的“正?!北镜?WiFi 訪問(沒有像訪客 WLAN 那樣的主要限制)以避免任何問題。

2.5. 編譯并上傳代碼到Arduino板

使用串行監(jiān)視器從設備獲取詳細信息以進行初始測試。會有許多日志輸出,有助于理解 WiFi 連接問題等任何問題。

詳細說明:

1.WiFi妮娜

Mkr Wifi 1010 板基于微控制器 SAMD21,連接到來自 u-blox 的模塊 NINA-W10,這是一種在 2.4GHz WiFi 范圍內運行的低功耗芯片組。要訪問您的本地 WiFi 網(wǎng)絡,提供的 WiFiNINA 庫提供了所有必需的功能。有大量使用 WiFiNina 的示例和現(xiàn)有項目。請參閱以下可用文檔:https ://www.arduino.cc/en/Reference/WiFiNINA

在我的項目中,我使用 WiFi 網(wǎng)絡訪問:

  • 訪問互聯(lián)網(wǎng)時間協(xié)議 NTP 以定期設置實時時鐘
  • 提供一個簡單的配置網(wǎng)頁(基本上它充當一個小服務器)
  • 從我的 Homematic 智能家居系統(tǒng)接收數(shù)據(jù)以顯示(溫度等)
pYYBAGNYqIaAcuoPAAxcCjMgc8U088.jpg
啟動后搜索WiFi
?

筆記:

  • 在 Arduino IDE 中初始設置 Mkr1010 板后,您可能需要更新 Nina 固件。可以在 Arudino IDE 中檢查和更新版本。這個更新過程在上面提到的 WiFiNINA 網(wǎng)頁中有描述。
poYBAGNYqIuAcjx4AAE9q79zrmE102.jpg
Arduino IDE 中的 NINA 固件更新程序
?
  • 要從本地 WiFi 網(wǎng)絡輕松訪問設備,請將網(wǎng)絡路由器配置為始終使用相同的 IP 地址。大多數(shù)路由器還允許您分配設備名稱(因此您無需在瀏覽器中輸入 IP 地址)。我使用了“HMDisplayClock”,它讓我只需輸入http://HMDisplayClock就可以在我的 WiFi 網(wǎng)絡中的任何瀏覽器中訪問控制頁面(或者,使用 Arduino Mkr 1010 板的 IP 地址當然也可以......)
pYYBAGNYqI2AGTFjAAGQNc32ozk160.jpg
一個簡單但有用的網(wǎng)站,用于從本地 WiFi 配置 HM 顯示時鐘
?
  • 如果您想對自己的 WiFi 連接設備進行編程,該設備需要始終可訪問,這里有一個提示:確保定期檢查您是否仍然連接。您的路由器會不時斷開設備與網(wǎng)絡的連接...因此,如果您只建立一次 WiFi(在設置例程中),幾個小時后您將失去連接。就我而言,我在“handleWifiClient”子例程中每秒檢查一次連接。

2. 自調時鐘

Arduino 將從返回“紀元時間”的網(wǎng)絡時間協(xié)議(NTP) 服務獲取準確時間。返回的“紀元時間戳”是自 1970 年 1 月 1 日以來經(jīng)過的秒數(shù)。因此有必要將時間戳轉換為人類可讀的日期和時間信息。此外,必須進行時區(qū)和夏令時校正。調整時區(qū)的子程序基于 Doug Domke 的優(yōu)秀作品“It's about time”(感謝分享?。?/font>https ://www.hackster.io/doug-domke/self-setting-super-accurate-時鐘-5f1162

為此,Doug 的例程 fixTimeZone() 提供了很大幫助,因為調整時區(qū)可能相當復雜。微控制器(SAMD21)的內置實時時鐘將使用此信息定期設置(我每小時更新一次)。一旦接收到成功的 NTP 更新,矩陣顯示屏上的綠色“NTP”符號會亮起幾秒鐘:

poYBAGNYqJSAZUueAAzuUuFrPtU426.jpg
收到成功的網(wǎng)絡時間協(xié)議 (NTP) 更新
?

3. 展示

為了可視化所有信息,我決定使用大而明亮的 LED 顯示屏。它們可以安裝在煙色玻璃蓋后面,并允許時鐘模塊的精美設計。此外,我使用雙色 8x8 矩陣模塊來獲取臨時狀態(tài)信息。

pYYBAGNYqJ6AaY2QABIWUQeIQ_8137.jpg
在前面板上顯示模塊
?

所有顯示模塊均由 Adafruit 制造,文檔齊全并附帶軟件庫。顯示器由 I2C 控制(都連接在同一總線上),可由 3.3V 供電。(注意 Mkr1010 是3.3V設備,所以不要與 5V 部件混合使用?。?。

  • I2C 尋址:使用多個模塊,需要設置每個顯示模塊的 I2C 地址,以避免地址沖突。每個顯示器上有 3 個“地址調整焊接跳線”。確保為每個模塊設置不同的地址。有關詳細信息,請參閱 Adafruit 頁面:https ://learn.adafruit.com/adafruit-led-backpack/changeing-i2c-address在我的情況下,我選擇了以下地址(請參閱設置例程): 時間顯示模塊:0x70 日期顯示模塊:0x71 Temp1 顯示模塊:0x73 Temp2 顯示模塊:0x74 矩陣顯示模塊:0x72
  • 電源預算檢查:所有顯示器都連接到 MKR1010 板 VCC 引腳,這是一個穩(wěn)定的 3.3V 輸出。MKR ZERO 的規(guī)格表明它可以提供高達 600 mA 的電流。MKR WiFi 1010 也是如此,因為它使用相同的穩(wěn)壓器 (AP2112K-3.3)。我的測量結果顯示,由 3.3V 提供的所有 4 個顯示器的總電流不超過 120mA,所以應該沒問題。

4.家常整合

為了可視化來自 Homematic 智能家居系統(tǒng)的溫度值等信息,中央單元 (CCUx) 需要通過本地 WiFi 連接將傳感器數(shù)據(jù)提供給時鐘。為此,CCU 使用參數(shù)訪問時鐘網(wǎng)頁……像這樣:“ http://HMDisplayClock /?tempR=20.5”

使用您自己的時鐘版本,請先嘗試在瀏覽器中手動輸入...如果一切正常,它將將正確的溫度顯示更新為 20.5C,如下所示:

poYBAGNYqKSAXhdZAAoLHtoHoL4108.jpg
已成功接收到溫度值更新(由“T”指示幾秒鐘)
?

然后按照以下步驟自動將數(shù)據(jù)從 Homematic 中央控制單元 (CCUx) 發(fā)送到時鐘:

4.1.在 Homematic CCU 中安裝以下兩個插件:

a) XML-API:提供 xml 請求功能作為可用 HM 設備(例如傳感器)的接口https://github.com/homematic-community/XML-API

b) CUxD Deamon:使用腳本命令 CMD_EXEC 將數(shù)據(jù)發(fā)送到使用 WiFi 訪問的時鐘

pYYBAGNYqKeAGpSZAAIfm6n_AVI942.jpg
需要在 CCU 上安裝 XML-API 和 CUxD 附加組件
?

要在安裝 CUxD 后首次啟用 CMD_EXEC 功能,請輸入設置并使用 CUx 守護程序中的“Exec”功能創(chuàng)建一個類型為“(28) System”的新設備,然后通過您的 CCU 收件箱確認新設備并重新啟動您的CCU(此步驟的說明在這里(

4.2. 要選擇應在 HM 顯示時鐘上顯示的特定家庭傳感器名稱(數(shù)據(jù)點),請執(zhí)行以下步驟:打開 XML-API 菜單:

設置-> 控制面板-> 附加軟件-> XML-API設置->狀態(tài)列表

...將列出所有執(zhí)行器...

找到正確的 并將確切的名稱復制到文本編輯器

例如“HmIP-RF.000ED8A9909BB2:1.ACTUAL_TEMPERATURE”

poYBAGNYqKuAPM0tAAPa41JXFEA474.jpg
如何為您的家庭溫度傳感器找到正確的“數(shù)據(jù)點”值
?

4.3. 創(chuàng)建一個簡單的 CCU 程序來定期發(fā)送數(shù)據(jù)。就我而言,我希望我的室內和室外溫度傳感器每 10 分鐘自動發(fā)送到時鐘。

pYYBAGNYqK6AR2ehAALTMuJZ6Y4207.jpg
使用“時間模塊”簡單地每 10 分鐘左右觸發(fā)一個腳本......
?

為此,我創(chuàng)建了一個時間控制序列作為 CCU 程序,如上所示。此 CCU 程序將每 10 分鐘執(zhí)行一次,然后調用如下腳本:

字符串 Temp1 = dom.GetObject(" BidCos-RF.OEQ0670990:1.TEMPERATURE ").Value().ToString(2); 字符串 Temp2 = dom.GetObject(" HmIP-RF.000ED8A9909BB2:1.ACTUAL_TEMPERATURE ").Value().ToString(2); 字符串 url = " http://HMDisplayClock /?tempL="#Temp1;dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url); 字符串 url = " http://HMDisplayClock /?tempR="#Temp2; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O -"#url);

用您選擇的數(shù)據(jù)點替換上面第 1+2 行中的傳感器對象(參見步驟 4.2)

(也許對您也有用:我使用這個有用的教程來增強我自己對該主題的了解(德語)

當然可以進一步擴展上述方法。就我而言,每次我的家用門鈴傳感器被激活時,我也用它來顯示門鈴符號。

?

pYYBAGNYqLSAZecIAAUpwIXP2wM366.jpg
另一個 Homematic 可視化:激活的門鈴傳感器將顯示一個符號
?

?

最后——為了完整起見——你當然可以使用任何其他本地服務來代替 Homematic 來提供數(shù)據(jù),只要你能以上述 http 訪問格式發(fā)送信息。

5.電池(可選)

您可以選擇使用鋰聚合物充電電池在斷開 USB 電源后保持時鐘運行。Arduino Mkr WiFi 1010 板具有內置充電器 Li-Po 充電電路 (BQ24195),允許 Arduino MKR WiFi 1010 使用電池電源或外部 5 伏電源運行,在使用外部電源運行時為 Li-Po 電池充電.

poYBAGNYqLmACvQxAAq1LzS9bRk071.jpg
斷開 (USB) 電源的時鐘顯示剩余電池容量
?

要在應用中檢測USB-Power(+Charging)電池模式,測量 Mkr1010 板的“5V”輸出引腳是一種合適的方法:如果測量到 5V 引腳上的電壓在 5V 左右,則連接 USB 電源,如果使用電池,則為 3.3V。從 5V 引腳到 A1 和 GND 使用 2:1 分壓器 (2xR) 來監(jiān)控電壓電平(因為沒有 5V 可以提供給 3.3V ADC 輸入?。?/font>有關詳細信息,請參見示意圖。

要測量電池電壓本身,請使用 Mkr1010 板上通過“sensorValue = analogRead(ADC_BATTERY);”提供的輸入信號。

電壓(3.3-4.2V)是剩余容量的一個很好的指標。我正在評估 5 個不同的級別(請參閱源代碼)。

備注:

  • 使用鋰聚合物可充電單節(jié)電池,3.7V,約 1024mAh Arduino 推薦
  • 電池的連接器類型是 JST PHR-2(在 Arduino 端是 JST S2B-PH-SM4-TB)。重要提示:檢查 JST PHR-2 連接器的極性!板子的 USB 連接器在您的左側,+ 應該是左側引腳(朝向 USB 連接器),請參見下圖。一些可用的鋰聚合物電池極性相反!幸運的是,如果需要,很容易改變連接器的極性。
poYBAGNYqL-AJj5jAAmOxSJa3TI453.jpg
確保你的鋰聚合物電池的連接器有這個極性
?
  • 關于切換電源的重要說明- 這沒有很好的記錄:根據(jù) Arduino,從一個電源切換到另一個電源應該自動完成。但是:如果 MKR Wifi 1010 使用鋰聚合物電池運行,然后插入 USB 充電,則電流將受到極大限制!因此,CRG LED 會在一段時間后閃爍,并且電路板會因電量不足而斷電。這是由于以下限制:由于沒有實現(xiàn)TI BQ芯片的USB監(jiān)控功能(D+和D-),因此無法判斷它是哪種電源。因此,BQ24195L 將安全值 0x30 寫入 reg 0x00,從而將輸入功率限制為 100mA。然后充電進入 DPM 模式,電池上的充電電壓下降以限制電流。默認設置。就我而言,我正在使用看門狗重置(請參閱源代碼)。肯定有更優(yōu)雅的方法來解決這個問題(例如重新配置 BQ24195),但對我來說這已經(jīng)足夠了。
pYYBAGNYqMeAK_KVAAy60vvEbjs028.jpg
重新連接USB電源后,需要RESET
?

而已。我希望你喜歡這個項目。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費