Raspberry Pi Camera 簡介 -...
Transcript of Raspberry Pi Camera 簡介 -...
Raspberry Pi Camera 簡介
台灣樹莓派 <[email protected]>Nov 15, 2014 / T 客邦
姓名標示 — 非商業性 — 相同方式分享
CC (Creative Commons)
姓名標示 — 你必須給予 適當表彰、提供指向本授權條款的連結,以及 指出(本作品的原始版本)是否已被變更。你可以任何合理方式為前述表彰,但不得以任何方式暗示授權人為你或你的使用方式背書。
非商業性 — 你不得將本素材進行商業目的之使用。
相同方式分享 — 若你重混、轉換本素材,或依本素材建立新素材,你必須依本素材的授權條款來散布你的貢獻物。
3
● Element14 指定台灣地區 Raspberry Pi 獨家經銷商
about 台灣樹莓派
http://farnell.com/raspberrypi-consumer/approved-retailers.php?region=apac&MER=MER-LM-OB-RPICC-76315
● 專注於 Raspberry Pi 應用與推廣
● 舉辦 Raspberry Pi 社群聚會和工作坊
● Facebook : ● 搜尋 RaspberryPiTaiwan● https://www.facebook.com/RaspberryPiTaiwan
about 台灣樹莓派
5
● COSCUP, MakerConf 講者
● 投影片
● http://www.slideshare.net/raspberrypi-tw/presentations● 程式碼
● https://github.com/raspberrypi-tw
分享 x 社群
6
● 投影片下載● http://goo.gl/imRyYr
● 範例下載● http://goo.gl/Z6a5s9
下載
● Raspberry Pi Camera 簡介
● Camera 應用與套件
● 安裝 / 除錯 Camera● 實戰 Camera 使用
今天會講
8
環境設定: Serial + WiFi
1. Serial 連線
2. WiFi 連線
9
● 以 USB 轉 TTL 傳輸線和 Pi 相連
● 接線方式● 黑色: Pin 6 (GND)● 白色: Pin 8 (Tx)● 綠色: Pin 10 (Rx)● 紅色:不接
Serial 連線方式
10
Raspberry Pi B 的 GPIO (P1)
http://elinux.org/RPi_Low-level_peripherals
黑色線接 6 號
白色線接 8 號
綠色線接 10 號
11
Raspberry Pi B+ 的 GPIO (P1)
黑色線接 6 號
白色線接 8 號
綠色線接 10 號
http://www.raspberrypi-spy.co.uk/2014/07/raspberry-pi-b-gpio-header-details-and-pinout/
12
● 安裝驅動程式 , http://goo.gl/QC5Q3O● 從裝置管理員找到 COM 的埠號 ( 本例為 COM9)● 下載 putty, http://goo.gl/zdD9G9● 執行 putty
● 選擇 Serial● Serial line 填 COM9● Speed 填入 115200● Open !
Serial Port in Windows
13
● ls /dev/ttyUSB*
● 開啟 putty● 選擇 Serial● 在 Serial line 填入 /dev/ttyUSB0 ( 本例為 ttyUSB0)● Speed 填入 115200● Open !
Serial Port in Linux
14
● 安裝驅動程式 , http://goo.gl/htlt3F● 在網路確定是否有 USB-CONTROLL-D 的介面
● 下載 ZTerm, http://goo.gl/7UzG4A● 執行 Zterm
● Dial -> Directory ,● Data Rate 改為 115200● Ok!
Serial Port in Mac
15
● 預設帳號 / 密碼: pi / raspberry● 如果沒有畫面 , 將電源重新插拔
連線成功
16
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# add these lines below
network={
ssid="Techbang4F"
psk="qwertyuiop"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
Techbang wpa_supplicant.conf 設定sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
17
$ sudo ifdown wlan0
$ sudo ifup wlan0
$ sudo kill -9 $(ps -ef | grep wpa | awk '{print $2}')
$ sudo kill -9 $(ps -ef | grep wpa | awk '{print $2}')
$ sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo dhclient wlan0
指令列設定 WiFi - 連線
18
$ ifconfig wlan0
IP = 192.168.43.102
連線成功 查詢 IP
19
1.WiFi 連不上怎麼辦 ?
接螢幕用 GUI 設定吧
2. WiFi Config 的 Adapter 不見了怎麼辦 ?
將 /etc/network/interfaces和 /etc/wpa_supplicant/wpa_supplicant.conf 回復成預設值吧
常見問與答
20
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
兩個檔案的預設值
21
● On PC
有了 IP, 用 SSH 連線
22
● On Raspberry Pi
● $ sudo apt-get install tightvncserver● $ vncserver
● On Linux / Windows
● vncviewer / RealVNC
● Connect Raspberry Pi
● vncviewer / RealVNC 192.168.43.102 : 5901
● 更多使用方法
● http://www.raspberrypi.com.tw/586/setting-up-vnc/
想要視窗 , 設定 VNC
● sudo apt-get install -y vlc● sudo apt-get install -y mencoder● sudo apt-get install python-pycurl● sudo apt-get install -y espeak● sudo apt-get install -y python-pip● sudo pip install requests
安裝必要軟體
Raspberry Pi Camera 簡介
Type of Raspberry Pi Camera
http://elinux.org/Rpi_Camera_Module
Raspberry Pi Camera Module NoIR Camera Module
Raspberry Pi Camera Module
https://www.modmypi.com
15-Pins, CSI 介面
綠色 PCB 板
● Sensor type: OmniVision OV5647 Color CMOS QSXGA (5M pixel)
● Sensor size: 3.67 x 2.74 mm
● Pixel Count: 2592 x 1944
● Pixel Size: 1.4 x 1.4 um
● Lens: f=3.6 mm, f/2.9
● Angle of View: 54 x 41 degrees
● Field of View: 2.0 x 1.33 m at 2 m
● Full-frame SLR lens equivalent: 35 mm
● Fixed Focus: 1m to infinity
● Video: 1080p at 30 fps with codec H.264 (AVC)
● Board size: 25 x 24 mm (not including flex cable)
技術規格
● No IR = No 'IR cut filter' installed● 因此 CMOS 可吸收到不可見光 (Infrared)● No IR 相機 ≠ 夜視相機
● 除非有額外的紅外線發光源
No IR Camera
黑色 PCB 板
● 問:樹葉為什麼看起來是綠色的?● 答:因為樹葉吸收了大部分的可見光 只反射綠色光
基礎光學原理
http://en.wikipedia.org/wiki/Chlorophyll
兩種相機效果比較
http://www.themagpi.com/issue/issue-18/
1. 非NoIR相機 2. NoIR 相機
3. NoIR 相機 4. NoIR 相機+藍色濾光片
Raspberry Pi Camera 應用簡介
移動偵測
http://www.codeproject.com/Articles/665518/Raspberry-Pi-as-low-cost-HD-surveillance-camera
33
雲端相機
http://learn.adafruit.com/diy-wifi-raspberry-pi-touch-cam
可做影像辨識的相機
接上喇叭發聲
Handy IP Cam (video streaming)以樂高做外殼
加上 Camera 與按鍵
人臉辨識與追蹤
https://github.com/tasanakorn/rpi-mmal-demo/tree/develop
Camera 改裝套件
http://www.arducam.com/
http://nwazet.com/
https://www.flickr.com/people/100320847@N06/ https://learn.adafruit.com
https://www.modmypi.com/https://www.modmypi.com/
Camera 安裝
安裝 Raspberry Pi Camera
http://goo.gl/7LqyMY
啟用 Raspberry Pi Camera
進階選項
設定記憶體分配 >128M
實戰 Camera 使用
使用 Camera 前先消除靜電吧
http://www.wikihow.com/Remove-Static-Electricity
45
實驗 1 :Hello Camera
目的:練習照相和攝影的指令
● 只預覽 2秒 , 不存檔
● raspistill -t 2000● 5秒後拍照 , 檔案 test.jpg
● raspistill -v -o test.jpg ● 3秒後拍照 , 並編碼成 png 格式 , 長 640x寬 480
● raspistill -t 3000 -o test.png -e png -w 640 -h 480
RaspStill
http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf
常見 Camera 問題?
● 問題: Camera is not enabled in this build● 解法:進 raspi-config 重新 enable camera
● $ sudo raspi-config
● 問題: Camera is not detected● 解法:重新安裝 camera, 或是更換排線
或是檢查 camera module 是否鬆脫
https://www.modmypi.com/blog/how-to-replace-the-raspberry-pi-camera-cable
● 錄 5秒的 1080p30 影片
● raspivid -t 5000 -o video.h264● 錄 5秒的 1080p30 影片 , bitrate 為 3.5MBits/s
● raspivid -t 5000 -o video.h264 -b 3500000● 錄 5秒的 1080p30 影片 , 每秒 5幀 (5 FPS)
● raspivid -t 5000 -o video.h264 -fps 5
RaspiVid
http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf
52
實驗 2 :縮時攝影
目的:簡單合成影片做特效
縮時攝影 (Time-Lapse Photography)
http://en.wikipedia.org/wiki/Time-lapse_photography
● 每間隔一段時間拍一張● 再將所有的照片接在一起● 調整播放速度 x = x倍速的視覺效果
概念
http://en.wikipedia.org/wiki/Time-lapse_photography
● 60秒內每 1秒拍一張 , 檔案名稱遞增 (4位數 )● raspistill -t 60000 -tl 1000 -o image%04d.jpg -bm -w
640 -h 480● 所有的照片接在一起
● ls *.jpg > stills.txt● 調整播放速度 4 = 4倍速的視覺效果
● mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=4/3:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=4 mf://@stills.txt
實做
http://www.raspberrypi.org/learning/timelapse-setup/
56
實驗3:用手機 App控制
目的:沒有螢幕也可以玩 camera
57
RaspiCam Remote
搜尋 & 安裝
連線 & 錄影
調整效果:亮度
61
Live Media Player
http://goo.gl/fIuSlu
● 在 Raspberry Pi
● raspivid -o - -t 0 -w 320 -h 240 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
在 iPhone/iPad 上
● rtsp://192.168.43.41:8554/
即時串流協定 (RTSP)
http://www.celinux.org/elc08_presentations/gst-openmax.pdf
63
實驗4:寫程式控制Camera
目的:自己的 Camera自己做
使用 picamera (Python library)
pi@raspberrypi ~ $ nano foo.py
# 載入需要模組
# 執行程式邏輯
pi@raspberrypi ~ $ python foo.py
撰寫 / 執行 Python 程式流程
#!/usr/bin/python
● import time
import picamera
with picamera.PiCamera() as camera:
● camera.start_preview()
# Camera warm-up time
time.sleep(2)
# The default resolution is 1280x800
camera.capture('image.jpg')
● camera可以開始拍照約需要2秒
● 預設相片解析度為1280x800
照相
http://picamera.readthedocs.org/en/release-1.8/recipes1.html
67
DEMOpython picamera_take_photo.py
執行方式
$ wget http://goo.gl/Z6a5s9
$ tar zxvf Z6a5s9
$ cd camera-01
$ python picamera_take_photo.py
#!/usr/bin/python
● import picamera
●
● with picamera.PiCamera() as camera:
● camera.start_recording('video.h264')
● camera.wait_recording(3)
camera.stop_recording()
● 錄3秒鐘影像
● 預設錄影格式為H.264/AVC壓縮 , 解析度1280x800
錄影
http://picamera.readthedocs.org/en/release-1.8/recipes1.html
#!/usr/bin/python
● import picamera
●
● with picamera.PiCamera() as camera:
● camera.resolution = (640, 480)
● camera.iso = 200
● camera.exposure_mode = 'off'
● g = camera.awb_gains
● camera.awb_mode = 'off'
● camera.awb_gains = g
● camera.start_recording('video.h264', quality=23)
● camera.wait_recording(3)
camera.stop_recording()
更多使用參數
http://picamera.readthedocs.org/en/release-1.8/recipes1.html
70
DEMOpython picamera_record_video.py
加上一個按鍵吧
72
● 開關:按鍵式 , 滑動式 , 傾斜式 ...● 常開 (normal open, N.O.)● 常閉 (normal close, N.C.)
按鍵 Button / 開關 Switch
http://nicegear.co.nz/
73
● 開關:按鍵式 , 滑動式 , 傾斜式 ...● 常開 (normal open, N.O.)● 常閉 (normal close, N.C.)
按鍵 Button / 開關 Switch
http://www.engineersgarage.com/sites/default/files/imagecache/Original/wysiwyg_imageupload/4214/Switch-2_0.jpg
74
按鍵的內部結構
http://www.409shop.com/409shop_product.php?id=110035
● 按下前● 長邊相連 (1&2, ¾3&4)● 短邊不相連
● 按下後● 四點都通
75
要接哪一個腳位?
76
Model B vs. B+
http://elinux.org/RPi_Low-level_peripheralshttp://www.raspberrypi-spy.co.uk/2014/07/raspberry-pi-b-gpio-header-details-and-pinout/
77
Raspberry Pi Model B 的 GPIO (P1)
http://elinux.org/RPi_Low-level_peripherals
SPI / I2C / UART / PWM
Pin1 Pin2
Pin25 Pin26
78
線路圖 ( 上拉電阻 )
http://goo.gl/69jREB
BUTTON RPi腳 1 Pin6 (Ground)腳3 Pin11 (GPIO0) Pin1 (3.3V)
79
BTN_PIN = 11
GPIO.setup(BTN_PIN, GPIO.IN,pull_up_down=GPIO.PUD_UP)
def callback_function(channel):
print("Button.Click...")
try:
GPIO.add_event_detect(BTN_PIN, GPIO.FALLING, \
callback=callback_function, bouncetime=200)
while True:
time.sleep(10)
except KeyboardInterrupt:
GPIO.cleanup()
讀取按鍵
80
DEMOsudo python push_button_interrupt.py
81
BTN_PIN = 11
GPIO.setup(BTN_PIN, GPIO.IN,pull_up_down=GPIO.PUD_UP)
def callback_function(channel):
with picamera.PiCamera() as camera:
time.sleep(2)
camera.capture('image.jpg')
try:
GPIO.add_event_detect(BTN_PIN, GPIO.FALLING, \
callback=callback_function, bouncetime=8000)
while True:
time.sleep(10)
except KeyboardInterrupt:
GPIO.cleanup()
按鍵控制拍照
82
DEMOsudo python push_button_take_photo.py
83
實驗5:會認東西的 Camera
目的:串接網路服務
最快的影像辨識服務
http://www.clarifai.com/
上傳照片吧
http://www.clarifai.com/
Auto-Tagging
http://www.clarifai.com/
87
def callback_function(channel):
# 拍照存檔
# 開啟檔案
# 上傳照片
# 處理回傳結果
程式化按鍵拍照上傳處理流程
http://www.encoding.com/blog/2013/11/26/like-json-api-now-supports-json/
88
DEMOsudo python print_photo_recognition.py
89
def callback_function(channel):
# 拍照存檔
# 開啟檔案
# 上傳照片
# 處理回傳結果
# 將結果傳給發聲程序
判斷並發聲
要讓喇叭發出聲音
調整聲音輸出設定
強制由耳機孔 (3.5mm jack) 輸出
93
DEMOsudo python speak_photo_recognition.py
94
更多應用
95
http://makezine.com/2013/04/14/47-raspberry-pi-projects-to-inspire-your-next-build/
Raspberry Pi Rocks the World
Thanks