這裡介紹如何使用樹莓派與 USB 的網路攝影機,拍攝縮時攝影,放在車上就可以作為旅遊的路程紀錄。
樹莓派是一張平價、但非常多功能的開發板,可以組合出各種的應用,例如加上一個簡單的 USB 網路攝影機,就可以做出縮時攝影的效果,由於它是使用 USB 供電,所以也可以非常方便的安裝在汽車上面,當作旅行的記錄器。
這個影片就是我用一張樹莓派 Raspberry Pi Model B+ 開發板與一個羅技 Logitech C920R HD PRO 網路攝影機所拍攝出來的旅行縮時攝影。
影片剛開始的前幾秒鐘,我還在調整攝影機的角度,裝好之後就開始上路實測了,這段路程只是簡單的一段台南到新營的道路,所以沒有什麼新鮮感,我是打算先打造好這個旅行縮時攝影工具,日後到各地景點旅遊的時候,就可以用這個紀錄沿途的風景了,以下是使用樹莓派打造旅行縮時攝影機的詳細教學。
用樹莓派打造縮時攝影機的觀念很簡單,就是讓樹莓派可以控制 USB 網路攝影機,讓它可以每隔一段固定的時間就自動拍攝一張照片(例如每秒拍攝一張),最後再將這些照片串起來製作成影片,就是所謂的縮時攝影了。
使用樹莓派打造旅行縮時攝影機,需要的硬體設備主要有以下幾項:
在軟體安裝與設定方面,主要可分為三大項:
motion
hostapd
hostapd
是用來提供無線網路 AP 的 daemon 服務。udhcpd
udhcpd
是一般的 DHCP 伺服器,負責分配 IP 位址給連線進來的無線網路設備(通常是手機)。motion
是縮時攝影最關鍵的工具,只要有硬體設備與 motion
就可以進行縮時攝影了,但由於我們會將樹莓派安裝在汽車上,在車上若要裝鍵盤、滑鼠或螢幕通常不太可能,就算真的裝上去也很不方便,透過手機連線的方式會是比較可行的方案。
hostapd
與 udhcpd
就是用來建立無線網路熱點用的,讓手機可以直接連線至樹莓派,進行各種操作。
以下我們就要介紹如何使用這些軟硬體自製縮時攝影機。
在樹莓派上使用 apt 安裝 motion
:
sudo apt-get install motion
修改 /etc/motion/motion.conf
設定檔,以下是縮時攝影的基本設定方式:
# 照片解析度 width 1280 height 720 # 關閉輸出變動照片 output_pictures off # jpeg 品質 quality 90 # 關閉輸出影片 ffmpeg_output_movies off # 定時拍照,每秒一張 snapshot_interval 1 # 設定右下方文字 text_right "G.T.Wang" # 設定輸出圖檔檔名格式 snapshot_filename %Y%m%d%H%M%S-snapshot # 開啟串流與網頁管理功能 stream_localhost off webcontrol_localhost off
照片解析度的部分需要依據自己的網路攝影機與樹莓派的規格來調整,通常我們都會希望解析度越高越好,調整的技巧是一開始先調成網路攝影機支援的最大的解析度,然後進行測試,看看是否能正常運作,如果跑不動的話(例如拍攝的過程會漏掉部分的照片,或是樹莓派的負載太重等),再慢慢下修解析度,找出最佳的設定。
motion
可以自動將畫面上有變動的部分儲存下來,這個功能在縮時攝影時不需要,所以把 output_pictures
關閉。
縮時攝影通常比較注重照片的品質,所以對於高規格的網路攝影機,記得將 quality
調高一些。
ffmpeg_output_movies
是可以讓 motion
即時輸出影片檔,但我們我們這裡是在事後使用 ffmpeg
指令的方式自行製作影片,所以不需要這個功能。
snapshot_interval
是拍照間隔,單位為秒,設定為 1
代表每秒拍攝一張照片。
text_right
是設定右下方的文字,這個預設應該是時間戳記,但是因為樹莓派本身沒有時間的資訊,所以我把它改為一般的文字。
stream_localhost
與 webcontrol_localhost
兩個參數是設定串流與網頁管理功能是否只有 localhost 能使用,由於我們需要透過 WiFi 存取,所以要設成 off
。
在設定完 motion
的設定檔之後,插上 USB 網路攝影機,重新啟動 motion
服務:
service motion restart
另外順便確認一下 motion
服務開機會自動啟動:
update-rc.d motion enable
這個很重要,因為等到我們把樹莓派裝上車之後,沒有鍵盤、滑鼠與螢幕可用,如果他沒有自動啟動就麻煩了。
另外如果您在啟動 motion
服務時,出現類似這樣的錯誤訊息,就代表目錄的權限有些問題:
Nov 21 00:23:23 raspberrypi motion: [1] [ERR] [ALL] myfopen: Error opening file /var/lib/motion/01-20161121002323-snapshot.jpg with mode w: Nov 21 00:23:23 raspberrypi motion: [1] [ERR] [ALL] put_picture: Can't write picture to file /var/lib/motion/01-20161121002323-snapshot.jpg - check access rights to target directory#012Thread is going to finish due to this fatal error: Nov 21 00:23:23 raspberrypi motion: [1] [ERR] [EVT] event_image_snapshot: Could not create symbolic link [01-20161121002323-snapshot.jpg]:
請手動更改一下 /var/lib/motion
目錄的權限,讓 motion
有權限可以寫入這個目錄:
sudo chown motion:motion /var/lib/motion
正常來說,現在應該就可以在 /var/lib/motion
這個目錄中看到一些從網路攝影機擷取的照片了。
使用 apt 安裝 hostapd
與 udhcpd
:
sudo apt-get install hostapd udhcpd
編輯 /etc/udhcpd.conf
:
# The start and end of the IP lease block start 192.168.50.20 #default: 192.168.0.20 end 192.168.50.254 #default: 192.168.0.254 # The interface that udhcpd will use interface wlan0 #default: eth0 option subnet 255.255.255.0
編輯 /etc/default/udhcpd
設定檔,啟用 udhcpd
服務:
# Comment the following line to enable #DHCPD_ENABLED="no"
編輯 /etc/network/interfaces
,設定 wlan0
無線網路,自訂一個虛擬的 IP 位址與網域:
auto wlan0 iface wlan0 inet static address 192.168.50.1 netmask 255.255.255.0
建立 /etc/hostapd/hostapd.conf
設定檔,內容如下:
interface=wlan0 ssid=GTWang hw_mode=g channel=6 auth_algs=1 wmm_enabled=0
其中的 ssid
是無線網路的識別名稱,這個名字可以自己取。
若是第三代的樹莓派,還要加上這幾行:
ieee80211n=1 # 802.11n support wmm_enabled=1 # QoS support ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
因為這個無線網路 AP 只是提供給手機連線至樹莓派使用的,沒有任何上網功能,所以我就不設任何密碼了。如果想要設定密碼,可以使用這個設定:
interface=wlan0
driver=nl80211
ssid=GTWang
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=My_Passphrase
wpa_key_mgmt=WPA-PSK
#wpa_pairwise=TKIP # 低安全性加密,適用於舊設備
rsn_pairwise=CCMP
編輯 /etc/default/hostapd
設定檔,指定 hostapd
的設定檔位置:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
重新啟動 hostapd
與 udhcpd
服務:
sudo service hostapd start sudo service udhcpd start
並確認這兩個服務也都會在開機時自動啟動:
sudo update-rc.d hostapd enable sudo update-rc.d udhcpd enable
關於樹莓派的 AP 設定,也可以參考樹莓派 Raspberry Pi 設定無線網路 WiFi AP 這篇文章。
最後可以觀察一下樹莓派的運行狀況,如果記憶體不足的話,可以將幾個沒有用到的服務關閉,例如 DHCP 的 client 與 ntp 校時服務在沒有對外網路的環境通常是用不到的:
sudo update-rc.d dhcpcd disable sudo update-rc.d ntp disable
而藍芽通常也很少用,若使用 Raspberry Pi 3 的話也可以關掉:
sudo update-rc.d bluetooth disable
X Window 桌面也是非常耗費記憶體空間的,可以使用 raspi-config
這個設定工具將開機模式設定為文字模式:
sudo raspi-config
在 Boot Options
中設定開機進入 Console
模式,順便將 Splash Screen
關閉,這樣可加快開機速度。
在沒有用到 X Window 的情況下,可將 GPU 的記憶體配置調降一些,這樣可以讓系統有更多記憶體可以使用,這部分一樣是在 raspi-config
的選單中做調整,在 Advanced Options
中選擇 Memory Split
,設定 GPU 的記憶體為 16 MB。
必要時也可以考慮調整一下樹莓派的 swap 記憶體交換空間,不過以我的例子來說是不需要。
準備好所有的軟硬體與設定之後,接下來就是最重要的裝機實測了,請繼續閱讀下一頁。
Page: 1 2