我們經常能夠在各種坦克、戰鬥機和老式車輛、機械的操作室中看到各式各樣的儀表。圓形的表頭、帶有塑料或玻璃制的透鏡、有的還有使用鎢絲的小燈泡照明。這一切都為這種表頭引入了獨特的復古魅力。現代的計算機看起來和這樣的儀表似乎並不協調,不過當你打開作業系統的任務管理器後,依然能夠找到為計算機增加復古顯示的好用途:資源監視器。
簡單的來說,所有的外置資源顯示器都採用類似的方式:在作業系統上,運行著一個「內應」的守護進程,它收集著系統的CPU、內存、網絡和GPU的使用情況,並將其轉化為串口的數據形式,發送給下位機。在下位機上,將會按照這個數據的內容,由DAC生成一個模擬的電壓量,送至表頭並驅動表頭偏轉一個特定的角度。從而起到指示的作用。
軟體部分,該「內應」使用Python寫成。使用了psutil和GPUtil兩個庫來取得系統的各種信息,這兩個功能強大的庫中所提供的函數可以讓你自定義自己的儀錶盤上的顯示內容,比如psutil.cpu_percent可以獲得當前CPU的使用率、psutil.virtual_memory則是內存的使用率等等信息。這些內容都可以轉變為數字和字符串的形式,供serial庫以串口發送到下位機上去。這一段程序不長、也不難。
硬體部分,該項目很好的秉承了創客「有什麼就用什麼」的精神,採用了STM32F103的主控,搭配MCP4728 12位4通道ADC,正好能夠驅動4個表頭的輸出。實際上,對於想要復刻這款設計的朋友來說,完全可以使用STM32的PWM輸出,並搭配一個RC低通迴路形成穩定的電壓輸出。這樣BOM成本將會進一步降低。而下位機的程序也非常簡單:初始化ADC、並進入死循環,讀取串口緩衝區內的內容並驅動對應的表頭。如果緩衝區內5秒鐘內沒有得到新的信息,單片機將驅動所有表頭緩慢地回到0的位置,在關機、拔掉USB或者「內應」崩潰的時候,不會導致表頭卡死在一個位置上。
機箱上帶有狀態顯示的面板,其價格都要比不帶這個配置的機箱貴上很多。而現在,只要你有機會,你也可以構造一款屬於自己的「有型」性能監視器。
本文為 無線電雜誌 微信公眾平臺文章。詳細內容及高清大圖請查閱《無線電》雜誌。版權所有,歡迎個人轉發至朋友圈。公眾號、報刊等轉載請聯繫授權。
…………………………………………………