Raspberry Pi 實戰應用 13 CHAPTER 本章重點 13.1 架設網路檔案伺服器 13.2 架設網路攝影機 13.3 架設網路收音機 13.4 可選台的網路收音機 13.5 mp3 播放器 13.6 UPnP 和 DLNA 13.7 ios 專用的 Airplay 播放器 13.8 Raspberry 照相機和定時拍照 13.9 Raspberry DropBox
Chapter 13 Raspberry Pi 實戰應用 13-51 13.8 Raspberry 照相機和定時拍照 實驗介紹現代人多使用智慧型手機拍照, 你會不會有點懷念數位相機呢? 本章節筆者將把 Raspberry Pi 設定成一台數位相機, 按下硬體的按鈕後就可以拍出一張數位照片 硬體準備 Raspberry Pi 板子 一個 USB 外接 webcam 或 Raspberry Pi camera 鏡頭 1 個按鈕 1 個 1K 電阻 1 個手機用的 USB 充電電池 一個麵包板 電線 目前確定可以正常工作的 webcam 有 : Logitech HD Webcam C270 Creative Go PD00040 Creative Live! Cam Vista IM VF0640 微軟的 NX-6000( 筆者在本實驗所使用 ) Creative Carl Zeiss( 也實際測試過, 可以使用 ) 詳細內容請參考官方的視訊攝影機相容列表 :http://elinux.org/rpi_usb_webcams 如果不知道去哪裡可以購買到所有的硬體,raspberry.powenko.com 有相關的介紹 此處因該考量攜帶的便利性所以使用手機的 USB 充電電池
13-52 Raspberry Pi 最佳入門與實戰應用 硬體接線 首先在 Raspberry Pi 接上 USB hub 和 webcam 請挑選合適的 webcam 品牌, 否則 Linux 可能會找不到驅動程式 本書的 13.2 節有詳細說明如何挑選合適 Webcam 的方法 圖 13-61 把 Raspberry Pi 改造成照相機 硬體接線 Raspberry Pi 接腳 Pin 16,GPIO 23 Pin 6,GND Pin 2,5V 按鍵 1 的接腳電阻的接腳按鍵的接腳 元件接腳
Chapter 13 Raspberry Pi 實戰應用 13-53 硬體接線圖 :sample\ch13\camera.fzz 圖 13-62 硬體接線設計圖 步驟 Step 1 更新 apt-get 因為需要從網路上下載最新版本的軟體, 所以請先更新 apt-get $sudo apt-get update Step 2 安裝 fswebcam 軟體 透過 apt-get 安裝 fswebcam 軟體 $ sudo apt-get install fswebcam 圖 13-63 安裝 fswebcam 軟體
13-54 Raspberry Pi 最佳入門與實戰應用 Step 3 請確 USB webcam 已經可以使用這個實驗會用到 USB webcam, 所以請先確認 USB webcam 可以正常的執行 可以透過 $ lsusb 來確認是否已經有這個 USB webcam 圖 13-64 確認系統是否認得 USB webcam Step 4 請確定 USB webcam 的編號因為要控制 USB webcam, 所以請先確認 USB webcam 的編號 可以透過 $ ls /dev/video? 來確認是否已經有 /dev/video0 這個設備 圖 13-65 確認 USB webcam 的編號 /dev/video0 這個設備 Step 5 測試 - 抓取單一圖片測試是否可以抓取圖片, 請透過以下的指令來執行 $ fswebcam -r 960x720 -d /dev/video0 photo1.jpg 並且可以用 $ ls 來看是否有抓取成功
Chapter 13 Raspberry Pi 實戰應用 13-55 圖 13-66 透過執行 fswebcam 抓取圖片 Step 6 安裝看圖軟體 $ sudo apt-get install links2 Step 7 寫程式在這裡需要寫程式, 來控制按鈕按下之後, 做拍照的動作 請打開 /home/pi/radio.py 檔案 $sudo nano /home/pi/radio.py 並輸入下面的 Python 程式 這個程式設定當用戶按下按鈕 23 時, 會拍一 張照片 範例程式 :sample\ch13\cameara1.py 1. #!/usr/bin/python 2. import time 3. import os 4. import datetime 5. import RPi.GPIO as GPIO 6. GPIO.setmode(GPIO.BCM) 7. GPIO.setup(23, GPIO.IN) 8. while True: 9. if GPIO.input(23)==0: 10. d1=time.strftime("%y_%m_%d-%h_%m_%s") 11. action="fswebcam -r 960x720 -d /dev/video0 "+d1+".jpg" 12. os.system(action) 13. time.sleep(0.3) 14. GPIO.cleanup() 15. 16.
13-56 Raspberry Pi 最佳入門與實戰應用 程式解說 第 5-7 行 :GPIO 接腳設定 第 9 行 : 判斷是否有按下按鈕 第 10 行 : 設定檔案名稱為年 _ 月 _ 日 _ 時 _ 分這樣的格式 第 11-12 行 : 執行 shell 的指令 這樣的動作, 當你按下按鍵時, 便會用 USB webcam 拍一張照片 執行結果 圖 13-67 執行結果
Chapter 13 Raspberry Pi 實戰應用 13-57 圖 13-68 拍出來的效果 執行影片 書附光碟中的 camera1.mov 可以觀看結果 延伸學習 問題 : 修改程式, 讓 Raspberry Pi 每 20 秒拍一張照片 碰到要定期觀察或記錄的實驗, 例如每日的天氣 植物的生長情況 等, 就會需要用到這樣的功能, 這時可以用 Raspberry Pi 修改一下剛剛寫的 Python 程式, 讓它定時做一次拍照的動作 答案 : 其實這個程式跟剛剛的非常類似, 只要把 GPIO 的按鍵動作移除, 把延遲的時間調整一下就可以 範例程式 :sample\ch13\cameara2.py 1. #!/usr/bin/python 2. import time 3. import os 4. import datetime 5. while True: 6. d1=time.strftime("%y_%m_%d-%h_%m_%s") 7. action="fswebcam -r 960x720 -d /dev/video0 "+d1+".jpg" 8. os.system(action)
13-58 Raspberry Pi 最佳入門與實戰應用 9. time.sleep(1*20) 10. GPIO.cleanup() 程式解說 第 6 行 : 設定檔案名稱為年 _ 月 _ 日 _ 時 _ 分這樣的格式 第 7-8 行 : 執行 shell 的指令 第 9 行 : 休息 20 秒 執行影片書附光碟中的 camera2.mov 可以觀看結果 13.9 Raspberry DropBox 實驗介紹鼎鼎大名的 DropBox 現在也有支援 Raspberry Pi 了! 不管是傳遞照片 同步音樂 只要依照本節的設定, 就可把 Raspberry Pi 的資料同步到網路上 但由於 DropBox 目前還沒有 ARM 的版本, 只有相對的 API 可以使用, 所以這裡此處會借用 open source 中的專案來上傳或下載 DropBox 檔案 硬體準備 Raspberry Pi 板子 網路 硬體接線首先在 Raspberry Pi 接上網路, 正常開機即可