生活中的學習… What I've learned in life…

用樹莓派(Raspberry Pi)製作家庭電子月曆/數位看板(完全攻略與教學)(Updated 02/2022)

相信大家應該都看過車站或是機場的電子看板。有些看板是用來顯示資訊(像是列車到站和離站時間),有一些是用來顯示廣告。不知道你有沒有想過類似的電子看板也可用在家裡。我們家一直以來都有用月曆的習慣,而年復一年我們用的都是同一本月曆:Mom’s Family Wall Calendar by Sandra Boynton。為什麼一直用這本月曆呢?因為它可以把家裡每一個人的行程寫在同一張月曆上。這樣一眼望過去就知道哪一天是家裡最忙碌的日子。Mom’s Family Wall Calendar by Sandra Boynton真的很實用,我強力推薦給家裡有小小孩的家庭使用。雖然我們家很喜歡這個月曆,但是當孩子越來越大,家人每天的行程越來越複雜的時候,這個月曆就寫不下了。於是我開始尋找替代方案。

鑑於大家的行事曆都已經電子化(我用的是學校的Microsoft Outlook Calendar,我們家其他人則是用Google Calendar),我想有沒有什麼方法可以把全家的行事曆自動從網路上抓下來然後集中顯示在一個電子看板上呢?答案是有的。網路上已經有不少用樹莓派製作家庭電子月曆或是電子相框的教學,但是大部分的教學都是英文的。為了造福大眾,我把我的經驗寫成中文的攻略跟大家分享。以下是我們家電子月曆的功能:

  • 自動從Google Calendar下載全家每個人的行事曆並且自動更新(你也可以連結到Outlook Calendar或是任何可以輸出iCal或是ICS格式的電子月曆)
  • 顯示現在時間以及天氣
  • 如果超過十分鐘沒有人在電子月曆前面就自動關閉螢幕,當偵測到人的時候自動打開螢幕

電子月曆上還可以放很多其他的東西,像是頭條新聞或是股市動態。你也可以把電子月曆轉換成電子相框或是電子佈告欄。總之,有很多的應用等著你去嘗試。

看到這裡心動了嗎?如果心動的就開始動手吧!首先,你需要準備下面這些必備材料:(註:如果你透過本文的連結在Amazon買東西,我會得到小部分的回扣。)

Raspberry Pi Zero W
  • 電腦螢幕:基本上任何的電腦螢幕都可以,大小隨便你,如果你要做一個70吋的數位看板也是可以。我建議用24到27吋左右的液晶顯示器。如果你家裡有現成的,就用現成的。如果你要買新的,儘量買薄一點的。還有,如果你打算把螢幕裝在牆壁上,要記得要買有VESA快速拆裝設計的螢幕(通常螢幕的規格裡都會有寫是否有VESA快速拆裝設計,如果沒有寫通常就是沒有)。我用的螢幕是HP VH240a,很輕薄,適合裝在牆壁上。
  • 樹莓派(Raspberry Pi):電子行事曆並不需要速度很快的電腦,因此隨便哪一代的Raspberry Pi都可以。我以下的教學使用的是Raspberry Pi Zero W(規格很低的一台樹莓派),如果你有更快的樹莓派當然沒問題。還有記得要買樹莓派必須的配件:MicroSD卡(建議使用Samsung Evo Select 32GB或是SanDisk Ultra 32GB)和電源供應器(你可以用Raspberry Pi專用的電源供應器或是品質好一點的USB充電插座)。如果你沒有樹莓派,我建議你買這個Raspberry Pi Zero W套件。Update (02/2022):樹莓派基金會幾個月之前發佈了Raspberry Pi Zero 2 W,它的規格比第一代的Pi Zero高出很多,但是價錢還是差不多。及至截稿為止,Pi Zero 2 W還是處於缺貨狀態。如果你可以買得到Pi Zero 2 W,我建議你買Pi Zero 2 W。
  • HDMI訊號線:如果你的電腦螢幕是過去這幾年生產的,那應該會有HDMI接口。這樣你只需要一條一般的HDMI訊號線(如果你用的是Raspberry Pi Zero W,你還需要多一個Mini HDMI的轉接器。如果你買上面連結的套件,它已經有附Mini HDMI轉接器,但是你還是要自備HDMI訊號線)。因為我把Raspberry Pi固定在螢幕後面,所以我用的是一條短一點的HDMI訊號線(AmazonBasics Flexible and Durable Premium HDMI Cable)。如果你的螢幕比較舊,你可能會需要HDMI轉DVI的訊號線或是HDMI轉VGA的訊號線

以下的材料不是必備的,但是看你的情況可能會需要:

  • 移動感測器:如果你想要讓你的螢幕在沒有人的時候自動關閉,然後有人的時候再打開,那你就需要一個紅外線移動感測器(PIR)。這個小零件的價錢不高,但是要注意的是它有類比式和數位式兩種。類比式大家最常用的是HC-SR501,但是我發現它的誤判率很高。所以最後我用的是數位式的AM312,我也推薦你們用AM312。除了感測器,你也需要電線連接感測器到樹莓派的GPIO介面。不同長度的電線在Amazon上有很多選擇,我用的是EDGELEC 120pcs Breadboard Jumper Wires
  • VESA壁掛套件:市面上的螢幕壁掛架種類繁多,我用的是最簡單的VideoSecu LCD LED Monitor TV Wall Mount,它可以讓你的螢幕整個貼在牆壁上。
  • 工具:安裝樹莓派的作業系統需要MicroSD卡的讀卡機,這個我假設大部分人都應該有或是你的電腦已經有內建。如果你要安裝移動感測器,你還需要烙鐵和焊錫。我還用了熱熔槍和熱熔膠把移動感測器固定在螢幕的邊框上。安裝VESA壁掛套件有可能需要電鑽和螺絲起子。

以下是安裝步驟:

第一步:安裝樹莓派的作業系統

下載樹莓派作業系統Raspbian

在你拿到樹莓派之後第一步是要安裝作業系統。我建議你下載樹莓派的官方作業系統:Raspberry Pi OS (本來叫做Raspbian)。下載處:https://www.raspberrypi.com/software/operating-systems/ 在我寫這篇文章的時候Raspberry Pi OS有三個不同的版本可供下載:Raspberry Pi OS with desktop, Raspberry Pi OS with desktop and recommended software, and Raspberry Pi OS Lite。我建議你下載Raspberry Pi OS with desktop(不要下載desktop and recommended software因為檔案太大而且有很多用不到的程式)。如果你下載Lite,你需要自己安裝Chromium。

Raspberry Pi OS download screen

將Raspberry Pi OS安裝到MicroSD卡

下載之後你必須把Raspberry Pi OS安裝到你MicroSD卡裡面。如果你用的是Microsoft Windows作業系統,你需要用特殊的安裝程式來解壓RPi OS。很多人推薦Etcher,我也用過Rufus。其實安裝的過程都是大同小異:按Flash from file然後選擇你剛下載的RPi OS,Target是你的MicroSD卡所在的位置,選好之後按Flash。整個檔案拷貝的過程大概需要5-10分鐘。

Etcher

設定Wi-Fi和SSH介面

安裝好之後別急著把你的MicroSD卡拿出來。接下來的這個步驟你有兩種不同的選擇:

  1. 樹莓派基本上就是一台小型的電腦主機,因此開機之後你就會看到熟悉的電腦桌面。如果你打算用鍵盤和滑鼠來操作你的樹莓派和進行之後的設定,那你必須準備好鍵盤和滑鼠,還有記得把螢幕接上。如果你用的是第三代或是第四代的樹莓派,你可以直接把螢幕、鍵盤、和滑鼠接上,沒有什麼太大的問題。但是如果你用的是Raspberry Pi Zero W,你還需要一個Micro USB OTGUSB Hub(或是你也可以買一個Micro USB HUB with OTG Adaptor)才能接鍵盤和滑鼠。如果你是用Raspberry Pi Zero W,我建議你採取下面的第二個方案。
  2. 樹莓派可以透過一個叫做SSH的介面進行遠端控制,也就是說你可以從你的Windows電腦遠端控制樹莓派以及更改樹莓派內部的設定。但是要讓樹莓派可以遠端控制你必須要先做三件事:第一、知道你的樹莓派預設使用者名稱以及密碼;第二、啟動樹莓派的SSH介面;第三、讓你的樹莓派連到你家裡的Wi-Fi網路上。以下我分別講解每一個步驟。

第一、樹莓派的預設使用者名稱是pi,密碼是raspberry。記得全部都是英文小寫。

第二、啟動樹莓派的SSH介面。這個過程有點繁複,需要有點耐心。要啟動樹莓派的SSH介面,你需要在你的MicroSD卡的boot磁區裡面放一個檔案名稱叫做ssh的檔案。檔案的內容不重要,只要檔案名稱叫做ssh即可(不可以有副檔名像是ssh.txt,還有ssh必須要英文小寫)。如果你不知道怎麼做,可以執行Windows的記事本(Notepad)程式,然後把一個空白的檔案存檔到你的MicroSD卡的boot磁碟機,記得檔案名稱要叫做ssh。Windows記事本會自己把你的檔案名稱更改為ssh.txt,因此存檔完之後請打開檔案總管到boot磁碟機裡面把ssh.txt改名成ssh。

ssh file in boot drive

第三、讓你的樹莓派連到你家裡的WiFi網路上。請你再次打開Windows記事本程式,然後把下面的程式碼拷貝到你的記事本裡面。記得修改你的國家代碼(台灣請用TW、美國US、中國CN、香港HK)、Wi-Fi網路名稱、和Wi-Fi網路密碼。(記得把括弧<>刪除,但是不要刪除””。)

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=<這裡輸入你的國家代碼>

network={
 ssid=""
 psk=""
}

把國家代碼、Wi-Fi名稱和密碼改好之後,請把檔案存到boot磁碟(跟ssh檔案同一個磁碟),檔案名稱必須要叫做wpa_supplicant.conf

完成以上三個步驟之後,請把MicroSD卡拿出來,放到樹莓派的MicroSD插槽裡,然後接上螢幕和電源,迎接第一次開機。如果以上的程序你一切照做,應該會看到螢幕上閃過一連串的英文訊息,最後進入桌面,然後出現這個視窗::

Raspbian first login

如果你有裝鍵盤和滑鼠,你可以根據螢幕的指示進行初始設定。如果你沒有裝鍵盤和滑鼠,別緊張,我們還是有別的方法進行初始設定。

樹莓派初始設定

如果你對於樹莓派很熟悉,或是你的樹莓派已經做過初始設定,你可以跳過下面這一段。

像我上面那一段說的,如果你的樹莓派有裝鍵盤和滑鼠,你可以直接進行初始設定。你會發現初始設定選單裡面有很多選項,但是重要的只有幾個。以下是你必須要更改的設定:

  • 更改密碼:改成一個你自己記得住的密碼
  • 更改國家和時區:請選擇你所在的國家和你的時區。

設定更改完成之後,按下OK。系統會要求重新開機。

如果你沒有裝鍵盤跟滑鼠,你就需要從另外一台電腦透過SSH介面連進你的樹莓派電腦來更改設定。Windows下最常用的SSH終端機軟體是putty,你可以在這裡下載:https://www.putty.org/,下載之後請安裝到你的電腦裡,然後執行它。你會看到下面這個視窗:

Putty

請在Host Name的地方輸入raspberrypi.local然後按Open。等個幾秒鐘之後應該會出現以下的視窗:

Putty Login

請在login as:的地方輸入pi,密碼是raspberry。登入之後請進行以下的步驟:

  1. 刪除初始設定視窗:如果你不執行這個步驟,你每次開機的時候上面那個Welcome to Raspberry Pi的視窗都會出現。如果你不想要每次開機都看到那個視窗,請執行以下的程序:
    sudo rm /etc/xdg/autostart/piwiz.desktop
  2. 接下來,請輸入sudo raspi-config,進入終端機介面的初始設定選單。你應該會看到下面的畫面:
raspi-config

請用方向鍵和Enter來做選擇,要跳回之前的選單請按Esc。要切換從選單到Select和Finish請按Tab。

你只需要更改以下幾個重要的設定:

  • Change User Password:改成一個你記得住的密碼。
  • 在Localisation Options裡面更改你的時區(Timezone)和Wi-Fi Country。
  • Update更新你的raspi-config到最新的版本 (其實有沒有更新不是很重要)。

完成之後按Finish,系統會要求你重新開機,按Yes。重新開機之後請用新的密碼登入,你的使用者名稱還是一樣是pi。

初始設定的最後一個步驟是更新Raspbian的內建軟體。請在SSH終端機輸入sudo apt update。這時你的樹莓派會檢查有哪些軟體需要更新,這個過程需要大約一分鐘。之後請輸入sudo apt upgrade安裝更新。這個過程需要大約5-10分鐘,所以你可以去做點別的事。安裝好更新之後請在終端機輸入sudo reboot重新開機。

重新開機之後你應該會看到Raspbian的桌面。我們暫時把樹莓派放著,現在要來設定你的月曆。

設定電子月曆

沒有人規定你的電子月曆一定要當月曆,你如果想把你的電子月曆當相簿也是可以,我會教你怎麼做。

網路上最常見的電子月曆/數位看板的作法有兩種:第一,是用DAKboard.com這個網站,你可以在這個網站上設計你的電子月曆或是數位看板,非常簡單。DAKboard的服務有免費版跟付費版。免費版有功能的限制,但是對於一般的家庭來說應該已經夠用。付費版一個月美金$5(或是預付一年美金$48)其實也不算太貴。第二個方法是用一個叫做MagicMirror的開源程式。聽說MagicMirror的功能很強大,但是因為要自己修改程式,所以我決定選擇比較簡單的DAKboard。

DAKboard

第一步,請先到Dakboard.com開一個免費的帳號。登錄成功之後你會看到這樣一個畫面:

DAKboard Screen

我先用My Predefined Screen來做示範。按下My Predefined Screen之後你會看到以下的這些選項:

  • Layout:你可以決定你的螢幕要直放(Top/Bottom)還是要橫放(Left/Right)。我個人是覺得月曆直放比較好看,但是沒有一定的對錯。
  • Background:你可以決定月曆要不要放背景圖片,如果要放背景,要用什麼圖片,還有每幾分鐘更換一次圖片。DAKboard也可以從你的網路相簿把照片抓來當作背景圖片。(如果你打算把你的電子月曆變成電子相簿,你可以其他東西都不放,就只放你網路相簿裡的照片。
  • Calendars:你的網路行事曆的網址。如果你用的是Google Calendar或是Microsoft Calendar,你可以直接登入到你的帳號。如果你用的是其他的網路行事曆,你可以輸入行事曆的iCal或是ICS網址。你也可以決定是要放一整個月的月曆還是條列式的行程。設定好月曆之後記得要打勾Calendar Enabled。
  • Date/Time:設定你的時區以及日期和時間的顯示格式。
  • Weather:輸入你所在的城市就可以顯示氣象預告。
  • News:如果你想要在你的電子月曆上顯示最新的新聞,你可以透過訂閱RSS Feed的方式來顯示新聞。
  • Todo:如果你有使用電子代辦事項清單,你可以透過這裡連結到你的電子代辦事項清單。
  • Custom Message:你可以在螢幕上顯示你想要出現的標語或是訊息。
  • Settings/Defaults:在這裡可以更改你的DAKboard系統語言,還有最重要的是你的DAKboard電子月曆的網址。我們在之後的設定中會用到這個網址。

設定好之後按下螢幕右上方的View Screen就可以預覽你的電子月曆看起來是什麼樣子。DAKboard還有很多其他的功能,你可以自己試試,但是很多是要付費才能使用。如果你想要更多的客製化你的電子月曆但是要不想要付費,你可以試試上面我提到的MagicMirror

設定樹莓派來顯示電子月曆

Digital Calendar

做到這裡已經差不多大功告成了,最後幾個步驟是要讓你的樹莓派可以正確的顯示你的電子月曆。

首先,用putty連結到你的樹莓派SSH終端機介面,登入之後我們需要安裝一個小程式好讓你的滑鼠游標不會顯示在螢幕上。請在你的終端機輸入以下的指令(一次一行,等執行完成再輸入下一行):

sudo apt update
sudo apt install unclutter
(如果系統問你Yes or No請按yes)
mkdir -p /home/pi/.config/lxsession/LXDE-pi
nano /home/pi/.config/lxsession/LXDE-pi/autostart

之後你應該會看到像是下面這樣的文字編輯器(nano)出現在你的終端機視窗(如果你的檔案是空的不必擔心)。

nano

請將我下面的程式碼複製到你的編輯器裡面(在putty裡面按滑鼠右鍵就會自動貼上):

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xset s off
@xset -dpms
@xset s noblank
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium-browser Default/Preferences
@chromium-browser --noerrdialogs --incognito --kiosk https://dakboard.com/app/screenPredefined?p=0326c8a5e6adff02da5c15d99bb9adcd
##請用你自己的DAKboard private URL取代上面的https網址##
@unclutter -idle 0
#@/usr/bin/python /home/pi/pir.py

請到你的DAKboard的Settings & Defaults裡面拷貝你的private URL網址,然後用它取代上面的https網址。編輯完成之後,請按Ctrl+s存檔然後Ctrl+x離開nano編輯器。

最後一個步驟取決於你的螢幕是要直放還是橫放。如果你的電子月曆是橫放(像下面右邊那張圖),你不需要做什麼,請在你的終端機輸入sudo reboot重新開機。如果你的電子月曆是直放(像是下面左邊那張圖),你需要再做一個小修改。

請在終端機執行sudo nano /boot/config.txt, 你應該會看到類似下面的nano編輯器畫面:

config.txt

請按Page Down到檔案的最末端加上這兩行程式碼:

#Rotate screen by 90 degree
display_rotate=3

然後請按Ctrl+s存檔、Ctrl+x離開編輯器,至此大功告成。請在終端機輸入sudo reboot重新開機。開機可能需要一點時間,請耐心等候。如果你的月曆出現之後上下顛倒,請再次執行sudo nano /boot/config.txt然後把display_rotate=3改成display_rotate=1。重新開機之後應該就正常了。

UPDATE: 如果你安裝了最新的RPi OS,你可能發現修改config.txt來旋轉螢幕的方法已經不適用了。我找到了一個新的解決方案,需要下面兩個步驟。

首先,請在你的樹莓派終端機執行nano /home/pi/screen_rotate.sh

然後把下面的程式碼貼到新開的檔案裡:

#!/bin/bash
#Rotate screen to the right for 90 degree
DISPLAY=:0 xrandr --output HDMI-1 --rotate left

然後請按Ctrl+s存檔、Ctrl+x離開編輯器。接下來請執行這個指令chmod 755 /home/pi/screen_rotate.sh

第二個步驟是打開剛才修改過的autostart,請執行nano /home/pi/.config/lxsession/LXDE-pi/autostart

然後把下面兩行貼到檔案Motion Detector之前:

#Rotate screen to right 90 degree
@/bin/bash /home/pi/screen_rotate.sh

然後請按Ctrl+s存檔、Ctrl+x離開編輯器,至此大功告成。請在終端機輸入sudo reboot重新開機。開機可能需要一點時間,請耐心等候。如果你的月曆出現之後上下顛倒,請再次執行nano /home/pi/screen_rotate.sh然後把--rotate left改成--rotate right。重新開機之後應該就正常了。

將螢幕安裝在牆壁上

如果你有買壁掛套件,套件裡面應該有詳細的說明告訴你怎麼把基座安裝在牆壁上。安裝好基座之後,套件的另外一個支架裝在你的螢幕後面,然後把螢幕裝在基座上。Raspberry Pi Zero W的體積很小,因此你可以用雙面膠把它黏在螢幕的後面。網路上還有些人自己為螢幕做個框來裝飾它。木工不是我的專長,所以裝框這個事情就讓您自己研究了。

用移動偵測器來自動開啟和關閉螢幕

你設定好的電子月曆會一直開著。如果你想要省一點電,你可以安裝一個移動偵測器讓它偵測是否有人走近你的電子月曆。當有人走近的時候他會自動打開你的電子月曆,幾分鐘之後如果沒有人它就會自動關閉螢幕。這個功能需要用到紅外線移動偵測器AM312和編輯幾個簡單的Python程式碼。這個教學之後再寫。 如果你等不及,也可以自己參考這個網站的教學:https://www.ofbrooklyn.com/2014/01/2/building-photo-frame-raspberry-pi-motion-detector/

可能會遇到的問題與解決方案

Can’t Update Chromium

如果你的螢幕上突然出現這樣一個視窗

這是因為Raspbian內建的Chrome瀏覽器並不是最新版本的,但是就算你按了Reinstall Chromium它還是沒有辦法安裝最新版本的Chrome。解決這個問題的方法是想辦法讓Chrome不要去檢查是否有新的版本。請用putty連接到你的樹莓派SSH終端機,然後輸入下面這行指令:

sudo touch /etc/chromium-browser/customizations/01-disable-update-check;echo CHROMIUM_FLAGS=\"\$\{CHROMIUM_FLAGS\} --check-for-update-interval=31536000\" | sudo tee /etc/chromium-browser/customizations/01-disable-update-check

執行之後重新開機就可不會再出現上面那個視窗了。

螢幕四周有黑色的邊框

如果你的月曆沒有延伸到螢幕的最邊上(像是下面這張照片裡面這樣),你需要關閉所謂的overscan。請連結到你的樹莓派SSH終端機然後執行sudo raspi-config

進到Advanced Options –> Overscan;在下一個螢幕Would you like to enable compensation for displays with overscan?選擇。之後按Finish然後重新開機就可以了。

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 thoughts on “用樹莓派(Raspberry Pi)製作家庭電子月曆/數位看板(完全攻略與教學)(Updated 02/2022)”