資料介紹
描述
我曾經在我們的客廳里有一個便宜且不準確的時鐘,帶有溫度顯示,我想用可以自行設置時間和日期的東西替換它,就像你今天所期望的那樣。它還應該顯示我可用的 Homematic 智能家居數據,例如溫度傳感器和其他信息(例如門鈴傳感器)。
由于市場上沒有這樣的設備,我決定自己制作。
我決定在這個項目中使用 Arduino“Mkr Wifi 1010”,主要用于 WiFi 訪問能力和可用資源。有一些有趣的學習,我認為對于從同一個板開始的其他人可能有用(請參閱下面的詳細描述)。
我的 HM 時鐘顯示的特點:
- 準確的自設置時鐘(訪問 NTP 互聯網時間服務以設置微控制器的 RTC)
- 從 Homematic(或類似的智能家居系統)接收并顯示 2 個溫度(內部和外部)
- 在明亮的 7 段 LED 顯示屏上顯示時間、日期和溫度
- 7 段 LED 將在夜間變暗(可編程)
- 額外的 8x8 雙色點陣顯示器顯示狀態符號(例如 WiFi、溫度或 NTP 更新等)
- 可以顯示附加信息(例如,我添加了一個由 Homematic 門鈴傳感器觸發的可視門鈴)
- 可以通過網頁控制(使用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.);確保連接器的極性正確(詳情見下文)就是這樣。
2.準備你的Arduino IDE:2.1首先將目標設置為“Boards - Arduino SAMD board - Arduino MKR WiFi 1010”(也許你想先嘗試一些簡單的Mkr WiFi 1010板示例)
2.2 然后為 I2C 驅動的顯示器下載并安裝必要的 Adafruit-LEDBackpack 庫(請參閱 Adafruit 網站上提供的良好說明:https://learn.adafruit.com/adafruit-led-backpack/downloads)
2.3 獲取我的 Arduino 源代碼(見下文),它包含 3 個文件:
- HMClockDisplay.ino - 主要源代碼
- menu_inline_css7.h - HTML 菜單源代碼(用于網站)
- symbols.h - 8x8 點陣顯示的一些符號
確保它們都在一個文件夾中
2.4 在源代碼開頭的“用戶設置”部分更改您的個人設置:輸入您的家庭 WiFi 網絡 SSID(名稱)和密碼,并根據需要調整您的時區和夏令時(DST):
// 用戶設置 : // WIFI 設置char ssid[] = " XXX "; // 你的 WiFi 網絡名稱char pass[] = " YYY "; // 您的 WiFi 密碼// 時區設置int GMT = 1; // 適應您的時區(例如德國是 GMT+1 -> 設置為 1 )int DST = 0; // 調整夏令時(默認 = 0:無 DST(冬季)
注意:對于初始測試,我建議使用您的“正常”本地 WiFi 訪問(沒有像訪客 WLAN 那樣的主要限制)以避免任何問題。
2.5. 編譯并上傳代碼到Arduino板
使用串行監視器從設備獲取詳細信息以進行初始測試。會有許多日志輸出,有助于理解 WiFi 連接問題等任何問題。
詳細說明:
1.WiFi妮娜
Mkr Wifi 1010 板基于微控制器 SAMD21,連接到來自 u-blox 的模塊 NINA-W10,這是一種在 2.4GHz WiFi 范圍內運行的低功耗芯片組。要訪問您的本地 WiFi 網絡,提供的 WiFiNINA 庫提供了所有必需的功能。有大量使用 WiFiNina 的示例和現有項目。請參閱以下可用文檔:https ://www.arduino.cc/en/Reference/WiFiNINA
在我的項目中,我使用 WiFi 網絡訪問:
- 訪問互聯網時間協議 NTP 以定期設置實時時鐘
- 提供一個簡單的配置網頁(基本上它充當一個小服務器)
- 從我的 Homematic 智能家居系統接收數據以顯示(溫度等)
筆記:
- 在 Arduino IDE 中初始設置 Mkr1010 板后,您可能需要更新 Nina 固件。可以在 Arudino IDE 中檢查和更新版本。這個更新過程在上面提到的 WiFiNINA 網頁中有描述。
- 要從本地 WiFi 網絡輕松訪問設備,請將網絡路由器配置為始終使用相同的 IP 地址。大多數路由器還允許您分配設備名稱(因此您無需在瀏覽器中輸入 IP 地址)。我使用了“HMDisplayClock”,它讓我只需輸入http://HMDisplayClock就可以在我的 WiFi 網絡中的任何瀏覽器中訪問控制頁面(或者,使用 Arduino Mkr 1010 板的 IP 地址當然也可以......)
- 如果您想對自己的 WiFi 連接設備進行編程,該設備需要始終可訪問,這里有一個提示:確保定期檢查您是否仍然連接。您的路由器會不時斷開設備與網絡的連接...因此,如果您只建立一次 WiFi(在設置例程中),幾個小時后您將失去連接。就我而言,我在“handleWifiClient”子例程中每秒檢查一次連接。
2. 自調時鐘
Arduino 將從返回“紀元時間”的網絡時間協議(NTP) 服務獲取準確時間。返回的“紀元時間戳”是自 1970 年 1 月 1 日以來經過的秒數。因此有必要將時間戳轉換為人類可讀的日期和時間信息。此外,必須進行時區和夏令時校正。調整時區的子程序基于 Doug Domke 的優秀作品“It's about time”(感謝分享!):https ://www.hackster.io/doug-domke/self-setting-super-accurate-時鐘-5f1162
為此,Doug 的例程 fixTimeZone() 提供了很大幫助,因為調整時區可能相當復雜。微控制器(SAMD21)的內置實時時鐘將使用此信息定期設置(我每小時更新一次)。一旦接收到成功的 NTP 更新,矩陣顯示屏上的綠色“NTP”符號會亮起幾秒鐘:
3. 展示
為了可視化所有信息,我決定使用大而明亮的 LED 顯示屏。它們可以安裝在煙色玻璃蓋后面,并允許時鐘模塊的精美設計。此外,我使用雙色 8x8 矩陣模塊來獲取臨時狀態信息。
所有顯示模塊均由 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 引腳,這是一個穩定的 3.3V 輸出。MKR ZERO 的規格表明它可以提供高達 600 mA 的電流。MKR WiFi 1010 也是如此,因為它使用相同的穩壓器 (AP2112K-3.3)。我的測量結果顯示,由 3.3V 提供的所有 4 個顯示器的總電流不超過 120mA,所以應該沒問題。
4.家常整合
為了可視化來自 Homematic 智能家居系統的溫度值等信息,中央單元 (CCUx) 需要通過本地 WiFi 連接將傳感器數據提供給時鐘。為此,CCU 使用參數訪問時鐘網頁……像這樣:“ http://HMDisplayClock /?tempR=20.5”
使用您自己的時鐘版本,請先嘗試在瀏覽器中手動輸入...如果一切正常,它將將正確的溫度顯示更新為 20.5C,如下所示:
然后按照以下步驟自動將數據從 Homematic 中央控制單元 (CCUx) 發送到時鐘:
4.1.在 Homematic CCU 中安裝以下兩個插件:
a) XML-API:提供 xml 請求功能作為可用 HM 設備(例如傳感器)的接口https://github.com/homematic-community/XML-API
b) CUxD Deamon:使用腳本命令 CMD_EXEC 將數據發送到使用 WiFi 訪問的時鐘
要在安裝 CUxD 后首次啟用 CMD_EXEC 功能,請輸入設置并使用 CUx 守護程序中的“Exec”功能創建一個類型為“(28) System”的新設備,然后通過您的 CCU 收件箱確認新設備并重新啟動您的CCU(此步驟的說明在這里(
4.2. 要選擇應在 HM 顯示時鐘上顯示的特定家庭傳感器名稱(數據點),請執行以下步驟:打開 XML-API 菜單:
設置-> 控制面板-> 附加軟件-> XML-API設置->狀態列表
...將列出所有執行器...
找到正確的
例如“HmIP-RF.000ED8A9909BB2:1.ACTUAL_TEMPERATURE”
4.3. 創建一個簡單的 CCU 程序來定期發送數據。就我而言,我希望我的室內和室外溫度傳感器每 10 分鐘自動發送到時鐘。
為此,我創建了一個時間控制序列作為 CCU 程序,如上所示。此 CCU 程序將每 10 分鐘執行一次,然后調用如下腳本:
字符串 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);
用您選擇的數據點替換上面第 1+2 行中的傳感器對象(參見步驟 4.2)
(也許對您也有用:我使用這個有用的教程來增強我自己對該主題的了解(德語)
當然可以進一步擴展上述方法。就我而言,每次我的家用門鈴傳感器被激活時,我也用它來顯示門鈴符號。
?
?
最后——為了完整起見——你當然可以使用任何其他本地服務來代替 Homematic 來提供數據,只要你能以上述 http 訪問格式發送信息。
5.電池(可選)
您可以選擇使用鋰聚合物充電電池在斷開 USB 電源后保持時鐘運行。Arduino Mkr WiFi 1010 板具有內置充電器 Li-Po 充電電路 (BQ24195),允許 Arduino MKR WiFi 1010 使用電池電源或外部 5 伏電源運行,在使用外部電源運行時為 Li-Po 電池充電.
要在應用中檢測USB-Power(+Charging)或電池模式,測量 Mkr1010 板的“5V”輸出引腳是一種合適的方法:如果測量到 5V 引腳上的電壓在 5V 左右,則連接 USB 電源,如果使用電池,則為 3.3V。從 5V 引腳到 A1 和 GND 使用 2:1 分壓器 (2xR) 來監控電壓電平(因為沒有 5V 可以提供給 3.3V ADC 輸入!)。有關詳細信息,請參見示意圖。
要測量電池電壓本身,請使用 Mkr1010 板上通過“sensorValue = analogRead(ADC_BATTERY);”提供的輸入信號。
電壓(3.3-4.2V)是剩余容量的一個很好的指標。我正在評估 5 個不同的級別(請參閱源代碼)。
備注:
- 使用鋰聚合物可充電單節電池,3.7V,約 1024mAh Arduino 推薦
- 電池的連接器類型是 JST PHR-2(在 Arduino 端是 JST S2B-PH-SM4-TB)。重要提示:檢查 JST PHR-2 連接器的極性!板子的 USB 連接器在您的左側,+ 應該是左側引腳(朝向 USB 連接器),請參見下圖。一些可用的鋰聚合物電池極性相反!幸運的是,如果需要,很容易改變連接器的極性。
- 關于切換電源的重要說明- 這沒有很好的記錄:根據 Arduino,從一個電源切換到另一個電源應該自動完成。但是:如果 MKR Wifi 1010 使用鋰聚合物電池運行,然后插入 USB 充電,則電流將受到極大限制!因此,CRG LED 會在一段時間后閃爍,并且電路板會因電量不足而斷電。這是由于以下限制:由于沒有實現TI BQ芯片的USB監控功能(D+和D-),因此無法判斷它是哪種電源。因此,BQ24195L 將安全值 0x30 寫入 reg 0x00,從而將輸入功率限制為 100mA。然后充電進入 DPM 模式,電池上的充電電壓下降以限制電流。默認設置。就我而言,我正在使用看門狗重置(請參閱源代碼)。肯定有更優雅的方法來解決這個問題(例如重新配置 BQ24195),但對我來說這已經足夠了。
而已。我希望你喜歡這個項目。
?
- 小丑時鐘開源分享
- LED像素時鐘開源分享
- 意大利字時鐘開源分享
- 微時鐘開源設計
- 歐姆時鐘開源分享
- Nixie時鐘開源分享
- 折疊時鐘開源分享
- LED矩陣時鐘開源分享
- MakeTime時鐘開源分享
- 大型自調時鐘開源分享
- 數碼時鐘開源分享
- Arduino時鐘開源分享
- 1602液晶顯示的DS1302實時時鐘資料合集 27次下載
- 基于LCD1602的時鐘顯示源代碼下載 28次下載
- DS1302時鐘LCD1602顯示可以按鍵設置時鐘的程序免費下載 86次下載
- 西門子S7-200SMART PLC的系統時鐘顯示在MCGS HMI上 3293次閱讀
- 單片機電子時鐘功能介紹 1943次閱讀
- 前沿開源技術領域的開源大數據一一解讀 1005次閱讀
- 如何利用Arduino制作一個時鐘藍牙IOT音響 5272次閱讀
- 使用實時時鐘IC DS1307制作精確時鐘的方法 6178次閱讀
- 如何利用ESP8266和Neopixel Ring實現時鐘的彩色顯示 2557次閱讀
- 淺談FPGA內部的時鐘網絡設計 2770次閱讀
- 51單片機實現顯示器顯示日歷與時鐘和溫度的設計 5226次閱讀
- AT89C52單片機實現日歷時鐘芯片DS12C887顯示的設計 5118次閱讀
- 如何用乒乓球做一個簡易的數字時鐘顯示屏? 4446次閱讀
- 基于fpga的數字時鐘設計應用 1.6w次閱讀
- 什么是時鐘周期_時鐘周期怎么算 5w次閱讀
- 高精度時鐘芯片有哪些?(四款高精度時鐘芯片介紹) 9.1w次閱讀
- 單片機多功能數字時鐘設計電路大全(五款單片機多功能數字時鐘設計電路) 2.2w次閱讀
- 基于DS1307的簡易時鐘顯示程序分享 9252次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多