raspberry pi camera 簡介 -...

Post on 14-Mar-2018

251 Views

Category:

Documents

12 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Raspberry Pi Camera 簡介

台灣樹莓派 <sosorry@raspberrypi.com.tw>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

● 用 scp 將照片 / 影片傳出來吧 (Windows)

● scp pi@x.x.x.x:/path/to/file . (Linux/Mac)

如何看照片和影片?

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

top related