如果你是樹莓派玩家,想要一開機就想知道樹莓派網路IP位址,以便直接SSH遠端連線,或下載安裝套件時,知道目前容量有多少,亦或者想知道目前樹莓派的溫度是否過高,本技術文將教學如何將上述的資訊顯示在OLED顯示器中喔。
目前本技術文,以Raspberry Pi4為主,如果有讀者使用Raspberry Pi3或其他系列改造,也請在留言區留言,交流一下大家是如何做出來的吧。
撰寫/攝影 | 許鈺莨 |
時間 | 約半小時 |
難度 |
★★☆☆☆ |
材料表 |
本技術文完整的步驟,可以分成下列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範例程式是放在「examples」資料夾中,所以要先移動到「examples」資料夾再執行stats.py程式:
$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執行檔中。
首先,先在「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 chomd +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顯示資訊的過程,這次的教學就到這裡囉。
相關網頁:
- Raspberry Pi4購買連結: https://robotkingdom.com.tw/?s=Raspberry+Pi+4+樹莓派
- 超強力樹莓派散熱器購買連結:https://robotkingdom.com.tw/product/ice-tower-cpu-cooling-fan-for-raspberry-pi/
- OLED Display 0.96”購買連結:https://robotkingdom.com.tw/product/oled-display-0-96/
- 遠端連線Rasbperry Pi傳輸檔案請參考此篇 :https://blog.cavedu.com/2020/11/26/google-teachable-machine-raspberry-pi-4/