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