維多利亞風格時鐘顯示器:350 個 LED 與單一控制板即可滿足需求

我在之前的部落格文章《重製 21 區段維多利亞風格顯示器》中探討到,我的 DIY 好友 (兼創客傳奇人物) Steve Manley 和我正在打造一款現代化詮釋的 21 段碼維多利亞式顯示器。與原版顯示器使用小型的白熾燈燈泡來發光相反,我們採用三色 WS2812B LED,如 Adafruit Industries LLC4684

同樣地,我們也沒用複雜的機電開關來進行控制,若有的話就會是最先進的「復古」舉動了,而是使用現代化的微控制器單元 (MCU),這對維多利亞時代的工程師與發明家來說絕對是大呼神奇的玩意。

Steve 跟我都在打造 10 字元的顯示器。為了讓你一瞥其樣貌,圖 1 顯示 Steve 顯示器的初期實作樣貌,其使用 3D 列印的前面板搭配黃銅顏色的噴漆塗裝。在此例中,Steve 使用簡易的測試模式來檢查所有 LED 是否正常運作。

圖 1:現代化演繹的 21 區段維多利亞風格顯示器初期 10 字元實作。(圖片來源:Steve Manley)

您可以看到 Steve 的擬黃銅面板分成兩半,因為他的 3D 列印機無法處理整片 20 吋 (in) 寬的顯示器。此外,Steve 想在前面板上繞著字元的外框開十個「大洞」。相較之下,我的前面板採用雷射切割的一整片壓克力板搭配黃銅表面處理 (圖 2)。

圖 2:10 字元顯示器的主要元件。雷射切割壓克力擬黃銅面板位於前方。面板下的是 10 個 3D 列印外殼,各個尺寸為 64 mm x 50 mm x 10 mm (高x寬x厚)。上方是 10 片 LED 板 (背面朝下),分組成五個雙板子組件。(圖片來源:Max Maxfield)

每張電路板的寬度為 50 mm,高度為 64 mm。這些板分組成五個雙板子組件。此外也有十個 3D 列印外殼,尺寸與板件相同,厚度為 10 mm。以我的雷射切割擬黃銅面板為例,雷射可裁出形成各個字元的 21 區段,且各區段間僅留下 0.7 mm 細的間隔。

Steve 和我曾在過去做過類似的專案,通常是友誼競賽的方式,例如我們幾年前曾打造的酷炫計時器 (請參閱《利用 Arduino 打造酷炫計時器》)。事實是,雖然我們之前曾同意一些基本規則,例如 LED 的數目與相對位置,但在 MCU、即時時脈 (RTC) 等物件上我們往往則會按照自己的想法。此作法的問題在於,我們幾乎無法共享或交換程式碼。

此外,每次我們展開新專案,最後都會「多此一舉」,浪費時間與精力。因此這次,我們決定打造單一張控制板,用來驅動顯示器。此外,我們也決定用一張板件囊括所有必要的「強化配件」,藉此支援未來數年的專案。

看看我們的維多利亞風格顯示器控制版

經過數回合的腦力激盪、交涉與折衷後,我們想出一款能滿足我們所有需求的設計。或許最好的方法是向您展示板件 (圖 3),然後簡單介紹各種零件。

在左側中間的部分是主處理器,這是 Teensy 3.6 採用 SparkFun ElectronicsDEV-14058 型式。其中具有 32 位元 Arm Cortex-M4F 處理器,運作速度為 180 MHz (可超頻到 240 MHz),搭配 1 MB 快閃記憶體、256 KB SRAM 以及 4 KB EEPROM。

圖 3:我們的第一版控制板由 DEV-14058 Teensy 3.6 處理器板著手,其採用 Arm Cortex-M4F 為基礎,如圖中左側所示。(圖片來源:Steve Manley)

在 Teensy 後方,板件的另一邊,有兩個電位器,可用來控制我們想要的各種功能,例如顯示器的亮度或對聲音的靈敏度。在 Teensy 右側有排針座,可存取 MCU 未指定的輸入/輸出 (I/O) 引腳。

在 Teensy 的正面有一個 CR2032 鈕扣型電池,可在系統與主電源斷開後用來維持 RTC 運作。在 CR2032 前面右側有排針座,可將額外的 I2C 感測器與致動器連接到板件。在 CR2032 前方的左右兩邊,有三引腳的排針座組,各含有 0 V 引腳、5 V 引腳以及一個數據引腳。各個排針座可驅動一串 WS2812 LED。此外,Teensy 具有相關的 Octo LED 函式庫,可同時驅動八條燈串。

以我們的 21 區段顯示器為例,7 個較短的區段各有一個 LED,其他 14 個較長的區段各有兩個 LED,因此每個字元有 35 個 LED,10 字元顯示器就共有 350 個 LED。每個 LED 需要 24 位元的數據,用來載入 LED 的時脈速度則為 800 kHz。這表示,若我們要用單一 MCU 引腳驅動所有 LED,就需要 ((35 x 10) x 24)/800,000 = 10.5 ms 來載入此燈串鏈。

相較之下,使用 Teensy 的 Octo 函式庫並將 10 字元分割成 5 個雙字元組,就可將時間降低至 ((35 x 2) x 24)/800,000 = 2.1 ms。更好的是,Octo 函式庫可使用 Teensy 的直接記憶體存取 (DMA) 引擎在背景中執行上傳工作,因此能釋放處理器資源去執行其他任務,例如計算我們令人驚奇的酷炫燈光效果。

板件中間的五個瞬動按鈕開關可用來存取功能表、挑選模式與效果,還可輸入數值 (如日期與時間)。此外還可使用板邊緣的綠色螺絲接線盒同時連接五個機櫃式開關。我們也決定要納入紅外線 (IR) 控制能力,可用來執行與按鈕相同的工作。IR 偵測器位於中間按鈕下方。按鈕上方是光敏電阻 (LDR),可依據環境光來控制顯示器的亮度。在 LDR 上方有 Electret 麥克風,能讓顯示器對聲音作出反應。這些裝置都可從板件上移除、安裝在機櫃上,並可透過綠色的螺絲接線盒接到板件。

在板件的右手邊,可看到 Seeed Technology102010328 Seeeduino XIAO。雖然僅有郵票大小,但 XIAO 五臟俱全,含有 ATSAMD21G18 32 位元 Arm Cortex-M0+ 處理器核心,運作速度為 48 MHz,搭配 256 KB 快閃記憶體與 64 KB SRAM。XIAO 可用來處理任何 IR 控制訊號,然後饋送到 Teensy。雖然這可能大材小用 (因為我們幾乎能肯定會用 Teensy 來直接處理 IR),但我們決定採用「分治」作法,能讓長期運作輕鬆許多。

任何表面黏著元件 (SMD) 都位於板件底下。包括 Maxim IntegratedDS3231SN# RTCNXPSGTL5000XNAA3R2 低功率立體聲編解碼器、LogiSwitchLS119-S 開關解彈跳晶片、Toshiba Electronic Devices and Storage Corp74HCT245 八通道匯流排收發器 (當作電壓位準移位器)。

紅色的控制板如圖 4 所示,裝在顯示器的背面。還有綠色的配電板,其中含有耐用的 3.3 V 穩壓器,有需要時,可用來驅動任何額外的 3.3 V 感測器。

圖 4:組裝 10 字元顯示器。紅色的控制板位於圖片的右側。左側的綠色板件可用來配送電力到板件與顯示器。(圖片來源:Max Maxfield)

顯示器的右側 (圖中未顯示),是藍色的原型開發板。這表示,我們有紅色、綠色與藍色 (RGB) 板件,正好「引起我們的幽默感」。理想情況下,配電板會是紅色、控制板是綠色,但基於不明原因,板件廠若要用紅色基板搭配我們配電用的更厚銅箔,就會收取鉅額費用,因此我們只好選擇省點錢。

對控制板編程

下一步開始才是真正的樂趣所在,因為我們開始編寫程式碼來驅動顯示器。我們計畫採用的作法是運用背景顏色、前景顏色與遮罩的概念。遮罩位元設定為 0 時,對應的區段會顯示背景顏色;相同的遮罩位元設定為 1 時,該區段會顯示前景顏色。有趣的是,前景與背景顏色都會是固定顏色,例如黑色、白色或一些其他顏色。另外,前景與背景顏色可個別獲一起採用動態顏色,例如彩虹色條以漣漪方式散開至整個顯示器。

結論

我們還打算用這些新打造的維多利亞風格時鐘顯示器進行其他許多實驗。舉例來說,透過麥克風與音訊編解碼器晶片,就可提供音訊反應模式 (亦請參閱《使用 Arduino 的音訊反應式物件第一篇第二篇》)。我想嘗試的還有添加一個功能,就可讓我在顯示器左右傾斜時,讓文字在整個顯示器上跟著「滑動」(亦請參閱《在業餘嗜好專案中添加動作與方向感測》)。

最後,我一直想起 George Lafayette Mason。他在 1898 年以原版 21 區段顯示器申請專利,在我撰寫此文章時,那已經是 123 年前的事。我不禁好奇,如果他能看到我們借用他的主意並運用現代技術的話,會作何感想。

關於作者

Image of Max Maxfield

Clive "Max" Maxfield 在 1980 年從英國雪菲爾哈倫大學取得控制工程學士學位,自此開始擔任大型主機電腦中央處理單元 (CPU) 的設計人員。多年來,Max 已設計眾多元件,從矽晶片到電路板,以及腦電波放大器到蒸汽龐克風格的預知引擎 (別問) 等應有盡有。他更是電子設計自動化 (EDA) 領域的先驅,經驗超過 30 年。

Max 是許多書籍的作者和/或共同作者,包括《Designus Maximus Unleashed》(在阿拉巴馬州列為禁書)、《Bebop to the Boolean Boogie》(電子學的另類指南)、《EDA: Where Electronics Begins》、《FPGAs: Instant Access, and How Computers Do Math》。請瀏覽其 Max's Cool Bean 部落格。

More posts by Clive "Max" Maxfield
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum