【教學】在 OLED顯示Rapberry Pi4主機狀態訊息

如果你是樹莓派玩家,想要一開機就想知道樹莓派網路IP位址,以便直接SSH遠端連線,或下載安裝套件時,知道目前容量有多少,亦或者想知道目前樹莓派的溫度是否過高,本技術文將教學如何將上述的資訊顯示在OLED顯示器中喔。

目前本技術文,以Raspberry Pi4為主,如果有讀者使用Raspberry Pi3或其他系列改造,也請在留言區留言,交流一下大家是如何做出來的吧。

*本次作品分享來源為:https://www.the-diy-life.com/diy-raspberry-pi-4-desktop-case-with-oled-stats-display/?fbclid=IwAR1gWu8XxtggtDWrRfzrjlMvvS8D6xDbas58zB7ux6Ze2Kyd0Ev6SCD-IgQ ,特此感謝原作者

撰寫/攝影  許鈺莨
時間  約半小時
難度

 ★★☆☆☆

材料表

本技術文完整的步驟,可以分成下列7個步驟:

  • 下載並安裝套件
  • 執行範例OLED程式
  • 改寫範例程式,並新增顯示Raspberry Pi4溫度
  • 製作成Shell執行檔
  • 設定開機後可以自動執行程式
  • 縮放字體大小
  • 更改字體字型

在上述1~5步驟中,就已經可以將Raspberry Pi4的相關訊息顯示在OLED上,並可以開機後自動執行程式。而最後的步驟中,可以將OLED顯示的字體縮放,或是從網路上下載字型,本技術文也一併分享給各位讀者。

 

[提醒] 在進行下列步驟前,建議讀者先接上螢幕、鍵盤及滑鼠來設定Raspberry Pi4連上Wi-Fi熱點,再使用遠端連線軟體連進Raspberry Pi4操作[4],會比較方便。本文會使用的遠端連線軟體MobaXterm來輸入指令,而修改程式出處,因需要行數說明,所以使用Raspberry Pi4圖形化介面來講解。

那麼就開始吧!

 

1.下載並安裝套件

  • 首先要從Github網站下載OLED的相關套件及程式:
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
  • 移動至Adafruit_Python_SSD1306資料夾:
cd Adafruit_Python_SSD1306
  • 安裝相關套件:
sudo python3 setup.py install
sudo pip3 install --upgrade Adafruit_BBIO 

2.執行範例OLED程式

  • OLED範例程式是放在 ~/Adafruit_Python_SSD1306/examples 資料夾中,所以要先移動到「examples」資料夾再執行stats.py程式,順利的話即可看到OLED顯示出主機資訊了。
cd examples
python3 stats.py

3.改寫範例程式,並新增顯示Raspberry Pi4溫度

(斜線粗體字為需要新增的程式)

  • 可以成功執行stats.py程式後,在顯示的字串面前會產生”b”字元,這代表此字串為byte類型,需轉成UTF-8編碼,可將”b”字元去除,修改下列幾段程式:
sudo nano stats.py

編輯檔案的第122行~第125行

行數 stats.py新增程式片段
122 draw.text((x, top), “IP: ” + str(IP,’utf-8′ ), font=font, fill=255)
123 draw.text((x, top+8), str(CPU,’utf-8′ ) , font=font, fill=255)
124 draw.text((x, top+16), str(MemUsage,’utf-8′ ), font=font, fill=255)
125 draw.text((x, top+25), str(Disk,’utf-8′ ), font=font, fill=255)

  • 若再次執行程式,可以發現”b”字元已經去除,正常顯示畫面。
python3 stats.py

 

  • 新增溫度程式:
sudo nano stats.py

在檔案的第119行、第120行及第125新增溫度變數程式

行數 stats.py新增溫度變數程式片段
119 cmd = “vcgencmd measure_temp |cut -f 2 -d ‘='”
120 temp = subprocess.check_output(cmd, shell = True )
125 draw.text((x, top+8), str(CPU,‘utf-8’ ) + ” ” + str(temp,’utf-8′) , font=font, fill=255)

 

4.製作成sh執行檔

  • 製作成sh執行檔,是為了第7步驟順利更改OLED字型所做的準備。其優點為,若要更改字型,需匯入字型檔至Python檔案中,可將這些步驟指令寫入sh執行檔中。

首先,先在 ~/Adafruit_Python_SSD1306/examples資料夾中建立名為LCD的sh執行檔:

sudo nano OLED.sh 

 

行數 OLED.sh執行檔
01 #!/bin/sh
02 cd /home/pi/Adafruit_Python_SSD1306/examples
03 python3 stats.py

  • 按下CTRL+X,再按Y,再按Enter離開。
  • 編輯完sh執行檔,接下來需要開權限:
sudo chmod +x OLED.sh

 

  • 測試sh執行檔是否能開啟,以便之後步驟操作:
sh OLED.sh

 

5.設定開機後可以自動執行程式

  • 在Linux系統中,開機後自動開啟任務排程或定期執行程式是透過crond服務來啟動,若要設定crond服務排程的指令,就必須使用crontab指令 。透過這個crontab指令,就可以將LCD.sh檔案在開機後自動執行,其指令為:
crontab -e

  • 第一次執行時,按下Enter鍵,會進到crontab的檔案進行編輯,在最後加入這一段:

                 

@reboot  sh  /home/pi/Adafruit_Python_SSD1306/examples/OLED.sh  &

  • 設定完,也可以查看排程的服務
crontab -l

  • 設定完crond排程後重開機:
sudo reboot
  • 重新開機後,就會看見OLED顯示Raspberry Pi4的所有資訊了,接下來以下步驟則是說明如何縮放字體大小和更改字型。

 

6.縮放字體大小

  • 修改字體大小程式片段,可以將第47行加”#”註解,將第50行取消註解。
sudo nano stats.py

 

 

7.更改字型

  • 到網站https://www.dafont.com/bitmap.php下載字型檔。本文以下載Perfect DOS VGA 437 字型檔為例,這放在Bitmap第一頁的最後一個檔案下載。

  • 檔案為壓縮檔,解壓縮後會有兩個ttf字型檔,建議下載至電腦,再透過MobaXterm傳到Raspberry Pi4中。

而Raspberry Pi4路徑為“/home/pi/Adafruit_Python_SSD1306/examples/”

簡單來說,就是要和stats.py檔案在同一個資料夾。

  • 改寫程式,先編輯stats.py 檔案
sudo stats.py
  • 將檔案的第99行的預設字型註解起來,在第104行新增以下的程式碼。
行數 stats.py
104 font = ImageFont.truetype(‘Perfect DOS VGA 437 Win.ttf’,10)

 

重新開機後,可以看見字型已更改。

當然,您可以自由下載更多更有趣的字型來玩玩看喔,最後以下影片為RaspberryPi4開機後OLED顯示資訊的過程,這次的教學就到這裡囉。

相關網頁:

  1. Raspberry Pi4購買連結: https://robotkingdom.com.tw/?s=Raspberry+Pi+4+樹莓派
  2. 超強力樹莓派散熱器購買連結:https://robotkingdom.com.tw/product/ice-tower-cpu-cooling-fan-for-raspberry-pi/
  3.  OLED Display 0.96”購買連結:https://robotkingdom.com.tw/product/oled-display-0-96/
  4. 遠端連線Rasbperry Pi傳輸檔案請參考此篇 :https://blog.cavedu.com/2020/11/26/google-teachable-machine-raspberry-pi-4/

   

3 thoughts on “【教學】在 OLED顯示Rapberry Pi4主機狀態訊息

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *