[導讀]我最近了解了二進制手表的概念,并開始做一些研究,看看我是否可以為自己構建一個。但是,我無法找到既實用又時尚的現(xiàn)有設計。所以,我決定完全從頭開始創(chuàng)建自己的設計!Button_V1.f3dWatch_Body_w_Buttons_V1.f3dBOM_Binary_Watch.xlsB...
- Button_V1.f3d
- Watch_Body_w_Buttons_V1.f3d
- BOM_Binary_Watch.xls
- Binary_Watch_V9.ino
此項目的所有文件:Arduino 代碼的庫可以從這里的 GitHub 下載:
- M41T62 RTC 庫
- FastLED 庫
- 低功耗庫
- 二進制RGB接口
- 時間顯示(具有非常準確的計時)
- 日期顯示
- 秒表功能
- 報警功能
- 電池壽命至少 2 周
- USB充電
- 用戶可輕松定制的軟件
- 干凈簡潔的設計
下一步是開始為框圖中的每個模塊的各個組件做出決策!第 4 步:選擇組件
結果證明這個電路中有相當多的組件。下面,我挑選了一些最重要的,并解釋了我為什么選擇它們。LED
對于二進制接口,選擇相當簡單。我知道我想使用 LED 進行顯示,并發(fā)現(xiàn)我需要其中的 16 個(在 4×4 網(wǎng)格中)來顯示盡可能多的信息。在我研究完美 LED 的過程中,APA102不斷出現(xiàn)。它是一種非常小的 (2mm x 2mm) 可尋址 LED,具有多種顏色,而且相當便宜。盡管我以前從未與它們合作過,但它們似乎非常適合這個項目,所以我決定使用它們。微控制器
微控制器的選擇也非常簡單。我在獨立應用程序中使用Atmega328P-AU有很多經(jīng)驗,并且非常熟悉它的功能。這與 Arduino Nano 板中使用的微控制器相同。我知道可能有更便宜的微控制器可以使用,但知道Atmega328將完全支持所有 Arduino 庫是為該項目選擇它的一個重要因素。RTC(實時時鐘)
RTC 的主要要求是準確性。我知道手表沒有任何互聯(lián)網(wǎng)連接,因此無法通過互聯(lián)網(wǎng)連接重新校準,用戶需要手動重新校準。因此,我想讓計時盡可能準確。該M41T62 RTC具有最高的準確度的一個,我能找到(±2ppm的這相當于每月±5秒)。將高精度與I2C兼容性和超低電流消耗相結合,使該 RTC 成為該項目的理想選擇。DC-DC 升壓轉換器
只需查看電路并確定所需的電壓和電流,即可選擇 DC-DC 升壓轉換器 IC。在低電壓下運行電路會降低電流消耗,但我不能低于 4.5V(16MHz 時鐘下的最小微控制器電壓),也不能高于 4.5V(RTC 的最大電壓)。這意味著我必須在精確的 4.5V 下運行電路,以便在推薦的規(guī)格范圍內(nèi)運行組件。我計算出電路的最大電流不會超過250mA。因此,我開始尋找能夠滿足要求的升壓轉換器,并很快偶然發(fā)現(xiàn)了TPS61220。該TPS61220 需要最少的外部元件,相當便宜并且能夠滿足電流和電壓要求。電池
對電池的主要要求是尺寸。電池需要足夠小,以便它可以安裝在手表外殼內(nèi),而不會使其看起來笨重。我認為電池不能超過20mm × 35mm × 10mm。由于這些尺寸限制和 250mA 的電流要求,我選擇的電池僅限于 LiPo 電池。我發(fā)現(xiàn)了一個“Turnigy納米技術300mAh的1S”電池Hobbyking,我決定使用。充電IC
除了需要兼容1S LiPo電池外,對充電控制器沒有特別要求。我發(fā)現(xiàn)MCP73831T是一款完全集成的充電控制器,專為單節(jié)電池充電應用而設計。它的功能之一是能夠通過外部電阻調整充電電流,我發(fā)現(xiàn)這在此應用中非常有用。鋰聚合物保護
我想包括電壓和電流監(jiān)控,以保護電池免受任何危險的過度充電和過度放電情況的影響。提供此類功能的 IC 數(shù)量有限,其中一種更便宜的選擇是BQ29700 IC。它需要最少量的外部組件,并包括對單節(jié)鋰聚合物電池的所有必要保護。現(xiàn)在已經(jīng)選擇了組件,是時候創(chuàng)建原理圖了!第 5 步:原理圖使用 Altium Designer,我能夠使用來自每個組件數(shù)據(jù)表的建議將上面的原理圖放在一起。原理圖分為不同的塊,以使其更具可讀性。我還添加了一些帶有重要信息的注釋,以防其他人想要重新創(chuàng)建此設計。
下一步是在 PCB 上布置原理圖!第 6 步:PCB 布局事實證明,PCB 布局是該項目最具挑戰(zhàn)性的部分。我選擇使用 2 層 PCB 以將 PCB 制造成本降至最低。我選擇使用 36 毫米的標準手表尺寸,因為這似乎非常適合 LED。我添加了一些 1 毫米螺絲孔以將 PCB 固定在手表外殼中。目標是通過將所有組件(當然 LED 除外)放置在底層來保持干凈和美觀的設計。我還想使用絕對最少數(shù)量的過孔,以避免在頂層出現(xiàn)可見的過孔。這意味著我必須在單層上布線所有走線,同時確保電路的“嘈雜”部分遠離敏感的信號走線。我還確保所有走線盡可能短,將旁路電容器放置在靠近負載的位置,對高功率組件使用較粗的走線,否則請遵循 PCB 設計的所有常見良好做法。路由花了相當多的時間,但我認為結果非常好。下一步是為手表外殼創(chuàng)建 3D 模型!第 7 步:3D 設計手表外殼是根據(jù)使用 Fusion 360 的非常傳統(tǒng)、經(jīng)典的手表設計而設計的。我為表帶使用了標準的 18 毫米間距,以使手表與各種其他表帶兼容。PCB 的切口設計為比 PCB 本身大 0.4 毫米,以適應任何制造誤差。我包括了一些用于安裝 PCB 的螺絲柱和一個用于放置 PCB 的小邊緣。我確保將 PCB 從頂部凹進一毫厘,以避免 LED 的鋒利邊緣卡在衣服上。外殼的高度僅由電池的厚度決定。外殼的其余部分旨在通過圓潤的邊緣和拋光的邊角看起來很好看。我確實必須保持設計的 3D 打印友好性,以便我可以在家里 3D 打印它而無需任何支撐材料。現(xiàn)在硬件已經(jīng)完成,是時候開始開發(fā)軟件了!第 8 步:代碼我通過包含所有必要的庫來開始編寫代碼。這包括用于與 RTC 通信和驅動 LED 的庫。之后,我為每種模式創(chuàng)建了單獨的函數(shù)。當用戶通過按下按鈕切換模式時,程序會調用與該模式對應的功能。如果用戶在指定的時間內(nèi)沒有按下按鈕,手表就會進入睡眠狀態(tài)。睡眠模式由所有 LED 逐漸消失直至完全關閉來指示。使用睡眠模式可大大延長電池壽命,并在不使用時保持 LED 關閉。用戶可以通過按下上按鈕來喚醒手表。喚醒后,手表會檢查電池電量以確保不需要充電。如果需要充電,LED 會在顯示時間之前閃爍幾次紅色。如果電池電量低于臨界水平,則它根本不會開啟。剩下的時間編程是讓其他模式盡可能直觀。我認為在所有模式下使用相同的按鈕負責相同的功能將是最直觀的。經(jīng)過一些測試,這是我想出的按鈕配置:
- 頂部按鈕按下:喚醒/在“顯示時間”、“顯示日期”、“秒表”和“鬧鐘”模式之間循環(huán)。
- 頂部按鈕保持:進入“設置時間”、“設置日期”、“開始秒表”或“設置鬧鐘”模式。
- 底部按鈕按下:增加亮度。
- 底部按鈕按?。哼M入“選擇顏色”模式。
將引導加載程序刻錄到 ATmega328P-AU SMD關于如何使用常規(guī)的 Arduino Uno 作為編程器來刻錄引導加載程序和對微控制器進行編程。第一步是通過上傳“ArduinoISP”示例代碼將 Arduino Uno 變成 ISP。我使用了一個面包板和一個編程插座,并連接了教程中的原理圖。之后,我只需在 Arduino IDE 中按下“Burn Bootloader”,就可以將引導加載程序刻錄到微控制器上。一旦微控制器有了引導加載程序,我只需從 Arduino Uno 中移除現(xiàn)有的微控制器,并將 Arduino Uno 板用作 USB 到串行適配器,將代碼上傳到編程插座中的微控制器。上傳完成后,我可以開始焊接過程。下一步是收集所有組件并將它們焊接在一起!第 10 步:焊接焊接過程分為兩部分。首先需要焊接底層,然后是頂層。我使用膠帶將手表 PCB 固定在幾個原型板之間。這確保了 PCB 在焊接過程中不會移動,這一點非常重要。然后我將焊接模板放在 PCB 上,并使用大量焊膏覆蓋所有焊盤。我繼續(xù)使用一對薄鑷子將所有組件放在相應的墊上。然后我使用熱風槍將所有組件回流焊接到位。焊接底層時,我對其進行了快速目視檢查,以確保焊接成功。然后我翻轉電路板并在另一側重復焊接過程,這次是使用所有 LED。焊接頂層時不要使電路板過熱非常重要,因為底部的所有組件都有脫落的風險。值得慶幸的是,所有組件都保持原位,使用普通烙鐵將按鈕焊接到位后,PCB 就完成了!現(xiàn)在是最后組裝的時候了!第 11 步:組裝組裝非常簡單。我將電池連接到 PCB 并將電池和 PCB 放置在 3D 打印外殼內(nèi)。我繼續(xù)在 PCB 的每個角的安裝孔中擰入四個螺釘。之后,我使用 18 毫米彈簧條連接表帶,手表就完成了!
第 12 步:結論和改進手表按預期工作,我對它的結果感到非常滿意。到目前為止,我沒有遇到任何問題,并且在使用整整一周后,電池幾乎保持充滿電。
將來我可能會為手表添加其他功能。由于 USB 端口連接到微控制器,固件可以隨時更新新功能。不過現(xiàn)在,我將繼續(xù)使用這個版本的手表,看看它在長期使用后如何保持。





