網頁

2015年6月30日 星期二

[iSpy] Android iSpy Client

 

iSpy 有一個 iSpyConnect 可以作為 iSpyServer 的 Android client 端. 雖然 iSpy 是 open source, 但是, android 的這一個 app 卻沒有 source code. 這裡記錄製作 Android 上 app 來連上 iSpyServer 的注意事項.

程式部份, 因為包含好幾個檔案, 在還沒有放到公開的伺服器之前, 沒有打算在網頁上貼原始碼, 視覺效果不好. 不過有興趣可以 mail 給我 :) 程式是可以正常動作的. 有圖有真相嘛, 貼上手機上的截圖. 這邊只說明程式需要那些組成, 以及 coding 的時候, 所需要注意的一些事項.

device-2015-06-30-112637

以及 iSpyServer 的截圖

iSpyServer

程式基本組成

AndroidManifest.xml

URL

Socket

SurfaceView

Thread

Buffer management

AndroidManifest.xml

要加入網路存取的權限

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

URL

iSpyServer 提供的連線網址, 像是 http://192.168.1.150:80/?camid=1, 但是如果用 Android 的 HttpGet 是不能轉出 iSpyServer 所需要的

GET /camid=1 HTTP/1.1
Host: 192.168.1.150

這樣的格式, 所以, 只好從 Socket 開始 coding.

另外, Android 不允許在程式的 UI Thread 中, 去做有關網路的存取, 因此, 這部份也必需另外以 Thread 實作.

SurfaceView

由於畫面更新的速度要求比較高, 因此必需實作 SurfaceView 的衍生類別, 在 SurfaceView 中, 再實作一個 Thread, 專職收取畫面, 並且更新.

Activity 的訊息傳遞

Activity 的 onPause/onResume 必須傳遞到 SurfaceView.

Receive Buffer 管理

socket 所收到的資料, 不會是剛好一張圖片, 因此, 必需先把收到的資料放到 buffer, 再到 buffer 中去剖析圖片資料. 如果是以 C++ 實作, 這部份的 overhead 比較小, 但是 Java 並沒有指標型態, 物件都需要透過記憶體傳遞. 這部份的實作效率會有很大的影響.

[C4C] 多路影像記錄器


我在想, 在車子上裝上好幾個行車記錄器, 把前後左右的影像都錄下來, 應該很好玩. 其實也不一定是行車記錄器, 放幾個在水族箱四周, 放幾個在嬰兒車旁邊, 都不是太難的事.

基本架構

我不會畫圖. 所以不美觀也是理所當然的. 但是應該還算是清楚明白. 在一個名片盒大小的單版電腦上, 用 USB 連接到 3 個 USB camera, 以及一個 USB Wi-Fi adapter, 就可以傳送 3 個 camera 的影像到手機上. 再加上行動電源, 就可以實現基本的多路行車記錄器的功能.
Untitled

組成列表及單價

主要組成的項目, 及參考組合的價格. USB Camera 和行動電源的價差很大, 同時也佔了成本的大部份.
項目 品名 單價 備註
單版電腦 Raspberry Pi 2 Model B NT$1,224.00 Element14
USB WiFi 網卡 EDIMAX EW-7811Un NT$  224.00 博客來網站
USB Camera Sapido WBHA1xH.264 3x NT$ 699 PCHome
行動電源 TP-Link TL-PB10400 NT$ 1,088 PCHome
       
總計   NT$ 4,633  

可選用配備

項目 品名 單價 備註
螢幕 Viltrox 5 吋 LCD NTD 6,930 僅供參考
喇叭 enzatec 果漾立體聲喇叭 NTD 999 僅供參考
G sensor 3-Axis L3G4200D USD 99 元件
測距模組 超聲波測速模組 NTD 60 元件
       
       
       
       
       

目標

  1. 組合成低價的多路行車記錄器解決方案.
  2. 提供影像記錄器 DIY 解決方案.
  3. 提供遠端監看功能.

基本功能

  1. 多路錄影, APP 即時連線觀看, 頻道 (攝影機選擇).
  2. 前方碰撞警示, 前方趴車警示.
  3. 倒車顯影 (手動切換).
  4. 事件觸發錄影保存, 上傳. (碰撞, 緊急煞車, 後方逼車, 後方惡意閃大燈).
  5. 熄火後監控. (TBD)
  6. 胎壓偵測.

進階功能

  1. 畫面輸出到外接螢幕.
  2. 外接螢幕抬頭顯示功能.
  3. 手機畫面轉送到
  4. 手機導航畫面輸出到外接螢幕的抬頭顯示.
  5. 主機連接藍芽. 

進度表

           
  主機       Raspberry Pi 2 Model B
V   Wi-Fi 連線 設定 Wi-Fi 連線, 固定 IP    
V   連接 USB Camera Preview, 拍照, 錄影    
V   連接 camera Preview, 拍照, 錄影   官方版 5M camera
    連接 IP-cam      
V   Webcam Server 安裝 Motion   PC client work
    網際網路存取      
    開機時間      
    電力使用      
    事件觸發 Motion plug-in    
    H.264 CODEC      
    resolution      
    frame rate      
           
  Android        
V   Web Cam Client 連線到參考平台   iSpyServer
V   Web Cam Client 連線到 Motion    
    頻道選擇      
    多來源同時顯示      
           
  Camera        
    測距模組 TBD     沒有相關資料
           
  Display        
V   外接螢幕 畫面輸出到外接螢幕    
      輸出畫面上下翻轉    
           
           
  週邊        
    行車電腦整合 OBD 2 介面   沒有相關資料
    無線胎壓偵測 舊型車輛無行車電腦   沒有相關資料
    光敏電組整合 調整 HUD 亮度   沒有相關資料
           

FAQ

  • 為什麼要有行動電源 ?
    • 有 USB 供電到主機就可以,不一定要有行動電源. 汽車電源應該也可以(沒試).
    • 行動電源的供電較汽車電源穩定, 可以提供移動性.
  • 能不能連接到其它的 IP-CAM ?
    • 主機應該可以連接到其他的 IP-CAM, 但是要看各 IP-CAM 的支援程度, 但是主機向 IP-CAM 取得影像串流, 再提供給手機, 技術上是可行的.
  • 能不能連接到更多的 USB camera ?
    • 需要外掛自供電的 USB Hub.
  • 主機能不能有影像/聲音輸出 ?
    • 主機可以輸出 HDMI/Audio. 不過這些都要自帶電源.
  • 主機能不能偵測震動, 移動, 緊急煞車 ?
    • 可以透過 I2C 連接 gyro sensor 模組. 這部份功能還在開發中.
    • 可以連接 GPS. 這部份功能也還在開發中.
  • 能不能提供原始碼 ?
    • 會. 不只是原始碼, Raspberry Pi 是 open source hardware, 平台也是 open source software, 所以這些都會公開. 另外, 也會提供 step by step 的操作指引.

2015年6月29日 星期一

[Freescale i.MX6] Build BSP with Yocto on Ubuntu


這個標題有一點長, 事實上也是有一點麻煩說明. 我有一塊搭載 Freescale i.MX6 的單板電腦, 這個單板電腦要用來執行 Embedded Linux. 而這個 Embedded Linux 將會是從執行 Ubuntu 的桌上型電腦建立起來. 由於單板電腦 ( 大部份的嵌入式系統) 的硬體的差異性很大, 因此會需要 BSP ( Board Support Package) 介於硬體和作業系統之間, 控制硬體, 支援作業系統.
而這一篇, 主要說明的就是在 Ubuntu 上 利用 Yocto 這個 BSP 製作工具, 來製作 BSP.
因為要用的軟體工具很多, 這邊從一個乾淨的 Ubuntu 環境開始作業. 另外, 剛安裝好, 最好先更新一下.

$ sudo apt-get update
$ sudo apt-get upgrade

安裝軟體工具



開發所需要用到的工具, 並不都包含在預設安裝中, 以下命令安裝所需要的軟體.

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm curl

設定 git



我們需要 git 來取得原始碼. 有些原始碼需要登入資訊, 這邊先做設定

$ git config –global user.email “your@email.com”
$ git config –global user.name “Your Name”


注意 : –global 是連續兩個 -

接著, 開一個目錄, 來作為後續作業的空間

$ mkdir ~/devel
$ cd ~/devel

安裝 repo


repo 是 google 發佈的管理套件,先在自己的目錄下, 建立一個 bin 的子目錄, 並且加到路徑中

$ mkdir ~/bin
$ PATH=~/bin:$PATH


下載 repo 到 bin 的 repo ( repo 是一個檔案)

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


注意 : google 有時候會變更下載的路徑. 產生奇怪的錯誤. 有問題可以參考 google 的 repo 網址 http://source.android.com/source/downloading.html

下載 BSP

$ mkdir fsl-community-bsp
$ cd fsl-community-bsp
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b fido
$ repo sync

加入 qt5



qt5 是用來製作使用者介面的軟體. 這邊先把它裝進來

$ cd sources
$ git clone -b master-next https://github.com/meta-qt5/meta-qt5.git

注意 :
1. 以上命令是取得最新的版本. 如果要最新的穩定版本可以把 master-next 改成 master.

2. qt5 的目錄是在 fsl-community 下 ( ~/bin/fsl-community-bsp/sources/meta-qt5


設定環境



執行 fsl-community-bsp ( ~/bin/fsl-community-bsp) 下的 setup-environment, 以建立 build 目錄及其下的檔案. 我們要修改 build 下的 conf 的 local.conf, 所以先把它備份.

$ source ./setup-environment build
$ cd conf
$ cp local.conf local.conf.backup
$ nano local.conf

nano_local_conf

http://embedded-software-architecture.com/?page_id=134

修改  EXTRA_IMAGE_FEATURES = “debug-tweaks ssh-server-openssh”
加入 IMAGE_INSTALL_append = “qtbase qtbase-fonts qtbase-plugins qtbase-examples cinematicexperience openssh-sftp-server”
加入 DISTRO_FEATURES_remove = “x11 wayland”

$ nano bblayers.conf


修改 bblayers.conf, 還是要記得備份喔

nano_bblayers 

加入 ${BSPDIR}/sources/meta-openembedded/meta-ruby \
加入 ${BSPDIR}/sources/meta-qt5 \


開始製作



在 ~/bin/fsl-community-bsp/build 的目錄下, 執行以下命令開始製作

$ bitbake fsl-image-multimedia

如果發生 bitbake 命令找不到, 可以重新設定一下

$ source ./setup-environment build

然後經過很久很久很久. 久到超過你的想像.
注意 : 需要穩定的網路連線, 否則還會更久.


在 fsl/community-bsp/build/tmp/deploy/images/imx6qsabresd/ 這個目錄下, 會生成 fsl-image-multimedia-imx6qsabresd.sdcard 這個檔案. 這就是我們要的檔案.


製作開機 SD card




$ sudo dd if=build/tmp/deploy/images/imx6qsabresd/fsl-image-multimedia-imx6qsabresd.sdcard of = /dev/sd#

2015年6月23日 星期二

[iSpy] HTTP Client (mjpeg)


iSpy 是一個 open source 的軟體, 它是一整套的監控 client/server 的套裝軟體, 也有 Android 平台上的 app, 不過這部份就沒有 source code.
這裡主要說明如何用 HTTP client 連上 iSpyServer, 以取得 mjpeg 的檔案.

Why mjpeg, what’s mjpeg ?

比較低階的 Web Camera, 它的串流, 其實是一張一張的圖片 (其實 movie 檔都是一張一張的畫面, 差別只是較高階的串流, 譬如說 MP4 或是 H.264 等, 是用連續幾個畫面組成圖組, 由前後畫面的相關性, 得到更高的壓縮率). 因此, 連到 Web Camera server 的時候, 其實就是取得這張圖片. 由於圖片是連續產生, 因此, 抓下來的就是一連串的圖片.

HTTP Command

HTTP 這個協定, 定義了幾個命令, 這樣 client 和 server 才有溝通的基準. 不過通常也只用到 GET/POST 這兩個命令.

Connect to iSpyServer

連接到 iSpyServer 的 URL 就在畫面的左下角 (畫面的內容不重要), 這個例子中是
http://192.168.1.150:80/?camid=1
image
傳送給 iSpyServer 的 HTTP Command 如下, 最後面要多加一行空行
GET /camid=1 HTTP/1.1
Host: 192.168.1.150

iSpyServer 的回傳, 在文字的最後, 還是有一行空行. 接著的就是 JPEG File
HTTP/1.1 200 OK
Server: iSpy
Expires: 0
Pragma: no-cache
Content-Type: multipart/x-mixed-replace;boundary=--myboundary
--myboundary
Content-type: image/jpeg
Content-length: 8192


2015年6月18日 星期四

[iSpy] iSpy, iSpyServer 安裝及架設


iSpy 是一個 open source 的 Camera Security Software, 可以套用在 webcam, IP camera, 以及 microphone, 可以提供 security, surveillance, monitoring, 以及 alerting 的服務. 這幾個名詞實在是很混淆. 簡單的說, 它可以利用 IP-Cam, Webcam, 麥克風, 監控家裡 ( 裝置場所), 只要有移動, 聲響, 它就可以錄影,錄音, 發警報 (透過網路), 也可以透過網路去監看裝置場所目前的狀況.
iSpy 的功能很多, 這邊不一一介紹. 除了 iSpy 的基本功能以外, iSpy 裡還有一個 獨立的 web cam server, 可以用來把本機設定成 WebCam server, 把本機的 USB camera, 分享到區域網路 (LAN) 的其他電腦. 這一個 iSpy server 其實是 iSpy 的一個簡化版本, 特別的是, 它的安裝程式, 藏在 iSpy 中, 這個真的很特別.

下載 iSpy

官方網站
下載網址 有分 32 bit 及 64 bit 版本, 要小心分清楚.  下載下來的檔案, 檔名像這個樣子 iSpy64_6_3_7_0.zip (版本 6.3.7.0 64 位元版), 解壓縮之後, 得出 iSpySetup.msi 及 setup.exe.

安裝 iSpy

執行 iSpySetup.msi 開始安裝. 先出現安裝畫面.
image
選擇安裝路徑
image
選擇是否要建立捷徑
image
確認安裝.
image
安裝完畢.
image

執行 iSpy

開啟 iSpy 之後, 有可能會出現 iSpy 自動彈出的 Help 視窗的問題, 出現以下的警告. 不管它, 繼續執行.
image

匯入影像來源

按下新增, 可以看到了能夠支援的輸入裝置.
本地攝影機 (直接連接到這台電腦的 Web Cam, 或是 USB camera )
IP 攝影機 (這台電腦可以連接到的網路攝影機)

image
找到的可以支援的本地攝影機.
image
攝影機的設定
image
影像相當的清楚. 嗯, 不過, 那是攝影機的關係.
image
可以同時連線到兩個以上的攝影機.
image

設定

按下畫面右上的 “設定” 按紐, 可以打開設定畫面. 這邊不一一細說.
  • 變更語言: 如果受不了 “啟用G郵”, 或是 "重啟如果墜毀" 這種奇怪的翻譯, 可以在選項那一頁修改.
  • 偵測到移動, 或是聲響的警示之後, 可以選擇上傳到 FTP, 寄送郵件 (SMTP), “連接快訊 (簡訊”. 可以分別在各頁面設定.
  • 外掛可以提供一些不同的偵測功能 車牌辨識, 人臉辨識, 條碼掃描. 不過我還沒試過.

iSpyServer

iSpyServer 和 iSpy 可以說是相反的方向. iSpy 從不同來源收來影像畫面, 而 iSpyServer 則是把本機的影像 ( 也可能是從別處收到)傳送出去.

安裝 iSpy-Server

iSpy-Server 的安裝程式在安裝目錄裡. 譬如說, 我是安裝在 C:\Program Files\iSpy\iSpy (64 bit), 那麼 iSpyServer 的安裝程式就在 C:\Program Files\iSpy\iSpy (64 bit)\iSpyServer.
執行 iSpyServerSetup.msi 開始安裝
image
選擇安裝目錄, 這次是安裝在 C:\Program Files (x86)\iSpy\iSpyServer
image
確認後開始安裝.
image
安裝完畢.
image

執行 iSpyServer

執行 C:\Program Files (x86)\iSpy\iSpyServer\iSpyServer.exe 或是捷徑.
image
點擊 Add, 加入 “Local Camera”, 選擇要當成 Web Camera Server 的攝像機.
image
變更 camera 設定. Name 一定要輸入. 這裡輸入 HiCamera.
image
完成後, 可以看到預覽的畫面.
image
轉動到畫面的最下面, 可以看到左下角有一個網址, 這就是這一臺攝像機的網址
image 

iSpy 連接到 iSpyServer

啟動 iSpy, 新增 IP Camera, 在視訊來源, 輸入 Web Cam 的網址  http://192.168.1.150:80/?camid=0
image
完成後. 如果 iSpyServer 和 iSpy 在同一台電腦, 可以看到兩個畫面. 由於畫面顯示的位置不同, 看到的影像有些差異.
image
 

FireFox 連接到 iSpyServer

把 FireFox 也叫起來, 輸入相同的網址,
image

2015年6月16日 星期二

[RPi] Web Cam server ( with Motion)


Motion 是一套可以可以用來做動作偵測的影像軟體. 不過在進入到動作偵測之前, 先用它來做 web cam. 可以完成 web cam 功能的軟體很多, 這只是其中一個. 但是我們的目的不是只是 web cam 而已.

安裝 & 設定 motion

$ sudo apt-get install motion
image
安裝訊息很長, 這裡就不浪費空間了.
$ wget http://linux-projects.org/downloads/examples/motion.conf
用 wget 命令下載 motion,conf 的樣本檔案. 這是 motion 的設定檔, 先抓一個參考用的下來.
motion.conf 的內容很多, 重要的是 Webcam_localhost 要設成 OFF, 不然就不能從其他電腦看到.

執行

執行 uv4l, 指定套用驅動程式 raspicam
$ uv4l --driver raspicam --auto-video_nr
image
再執行 motion
$ LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so motion -c ./motion.conf
image

從 PC 上連上 web cam

使用 Mozilla Firfox 這個網頁瀏覽器, 輸入網址 http://192.160.1.101:8081/ (我的 Raspberry Pi 的 IP 位址固定在 192.168.1.101, motion 的連線 port 預設是在 8081. 就可以看到
image
用 Microsoft Internet Explorer 和 Google Chrome, 都不能直接連線.

2015年6月15日 星期一

[FireFox] 安裝


FireFox ( Mozilla Firefox) 是一個開放原始碼的網頁瀏覽器. 我們用它來當做 web cam client 的參考對應組. 因為 IE, Chrome 已經太多客製化, 比較不是那麼 clean 了.

下載 FireFox

下載連結 前往 FireFox 的官方網站下載.
 

安裝 FireFox

image
image
image
image
image
image 
很簡單吧.

2015年6月11日 星期四

[RPi] 影像串流工具整理 (未完成)


在 Raspberry Pi 上面拍照, 錄製影片, 發送串流有很多選擇. 各有各的優缺點. 以下逐步整理列出

raspivid

這是 Raspberry Pi 官方釋出的錄影工具程式. 但是只能使用 Raspberry Pi 的 camera module.

raspistill

這是 Raspberry Pi 官方釋出的拍照工具程式. 但是只能使用 Raspberry Pi 的 camera module.

picam

這是 Raspberry Pi 社群所釋出的 script. 它以 Python Imaging Library 為基礎. 用來偵測是否有移動, 如果有的話, 它會拍一張照片.
雖然它的功能很簡單, 但是因為它本身就是一個 script, 是很不錯的一個參考.
http://www.maketecheasier.com/raspberry-pi-as-surveillance-camera/

Motion

這是一個比較大型的軟體. 它可以在螢幕上顯示 web cam/camera module 的 Live View, 並且拍攝照片存檔.
Motion 強調的就是它的名字, 也就是 motion detection.
Motion 比較厲害的地方是, 它就是一個 RTSP server, 換句話說, 可以在 local lan 裡面的任一台電腦連過來看.
http://www.maketecheasier.com/setup-motion-detection-webcam-ubuntu/
http://www.instructables.com/id/Raspberry-Pi-remote-webcam/
http://www.maketecheasier.com/setup-motion-detection-webcam-ubuntu/
http://www.instructables.com/id/Raspberry-Pi-remote-webcam/
 

fswebcam

Ubuntu 釋出的 Web Cam 工具程式. 可以用來拍照, 但不能錄影. 不過這不是問題, 因為錄影本質上就是一張一張的照片. 主要的問題是容易出現壞照片.
http://manpages.ubuntu.com/manpages/lucid/man1/fswebcam.1.html
https://www.raspberrypi.org/documentation/usage/webcams/

 

ffmpeg & avconv (Libav)

ffmpeg 和 avconv 是不一樣的軟體工具. 但又不是很不一樣. 這怎麼說呢 ? avconv 的團隊是 ffmpeg 的一些人獨立出來的. 因此大部份都是沿襲 ffmpeg, 在大部份的命令上, 是可以互通的.
http://techzany.com/2013/09/live-streaming-video-using-avconv-and-a-raspberry-pi/
http://techzany.com/2013/09/live-streaming-video-using-avconv-and-a-raspberry-pi/
                                                                   

mjpg-streamer

 http://jacobsalmela.com/raspberry-pi-webcam-using-mjpg-streamer-over-internet/
http://jacobsalmela.com/raspberry-pi-webcam-using-mjpg-streamer-over-internet/
http://www.arthurtoday.com/2014/05/raspberrypi-using-mjpgstreamer-monitoring-multiple-webcams.html
http://www.arthurtoday.com/2014/05/raspberrypi-using-mjpgstreamer-monitoring-multiple-webcams.html
https://www.raspberrypi.org/forums/viewtopic.php?t=48597

https://www.raspberrypi.org/forums/viewtopic.php?t=48597
http://jacobsalmela.com/raspberry-pi-webcam-using-mjpg-streamer-over-internet/ 

LVC


 

OpenCV



http://www.akeric.com/blog/?p=2437

Streaming

過期的
mjpg-streamer or vlc (obsolete, see example #11)
http://www.akeric.com/blog/?p=2437

native uv4l-server module

main
http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=16
http://www.akeric.com/blog/?p=2437w3

2015年6月9日 星期二

[RPi] 使用 USB Camera


除了官方版的 camera module, Raspberry Pi 也可以使用 USB Camera (或者叫 Web Cam)
以下使用 UV4L 及 v4l2-utils 來控制 USB amera.

安裝 UV4L

 

命令有點長, 附上文字部份.

下載 UV4L

$ curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -
image

打開 /etc/apt/sources.list
$ sudo nano /etc/apt/sources.list


在 /etc/apt/sources.list 這個檔案中, 加入以下文字
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main image

然後更新及安裝
$ sudo apt-get update
$ sudo apt-get install uv4l uv4l-raspicam

如果要開機就載入, 要安裝額外的套件
$ sudo apt-get install uv4l-raspicam-extras

套件中已經包含了啟動的 script
$ sudo service uv4l_raspicam restart
 image
系統中有兩個 camera. 一個是連接到板子上的 CSI 介面的 camera, 一個是 USB camera
由於 driver 是新加入的, 也許會有一些問題. 更新一下, 也許是個好主意.
$ sudo rpi-update

安裝 v4l2-utils

注意, v4l2 是 video for Linux version 2 的縮寫. 所以第 3 個字母是 L 的小寫, 而不是數字的 1.
在新版的 raspbian 的 image 檔中, 已經加入了 v4l2-utils 這些工具. 可以試試看下以下的命令, 看看系統的回應. 如果是沒有安裝, 會出現 command not found 的錯誤訊息.
如果是 command not found, 可以用以下命令安裝
$ sudo apt-get install v4l-utils
注意, 這邊是 v4l-utils, 不是 v4l2-utils
插上 usb camera  後, 重新開機, 下 v4l2-ctl 命令, 可以找到現在連接的 camera, 有兩個. CSI 介面 以及 USB 介面.
 image

安裝 fswebcam

由於 raspivid, raspistill 只能用在官方的 camera module 上. 我們需要其他的軟體來使用 USB camera. 這裡先使用 fswebcam.

先安裝

$ sudo apt-get install fswebcam

image

直接拍照

$ fswebcam image.jpg

image

拍出來的照片有時候會壞掉. 官方網站上說是有些 web camera 不穩定. 不過我不能接受這種說法. 這應該是程式的問題.

image

以下說明建立 script 來拍攝照片.

首先建立 webcam 目錄

$ cd /home/pi

$ mkdir web

$ nano webcam.sh

在 webcam.sh 中, 加入以下命令

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

fswebcam --no-banner /home/pi/webcam/$DATE.jpg

image

存檔 ( 按 control + X 跳出後, 在提示儲存的地方按 Y)

把它加上可以執行的屬性

$ chmod +x webcam.sh

執行看看

$ ./webcam.sh

把它加上可以執行的屬性

./webcam.sh

image 

可以看到拍攝了一張照片, 存在 2015-06-11_2345.jpg

2015年6月4日 星期四

[RPi] 啟用官方版相機模組, 拍照, 錄影


Raspberry Pi 有官方版的相機模組. 算起來並不便宜, 不過拿來玩玩的話, 倒是一個很方便的解決方案.

DSCN8629

DSCN8630


 

RPI 相機模組

相機模組的硬體及軟體詳細規格可以參考以下官方網站.
https://www.raspberrypi.org/documentation/hardware/camera.md
官方網站的安裝影片
https://www.raspberrypi.org/documentation/usage/camera/README.md
由於相機模組容易受到靜電影響, 接觸之前最好先放電. 摸摸金屬的物品. 免得相機模組被靜電打死.
相機模組就是長這個樣子
camera-module
連接起來之後, 如下圖.
camera-module-mount
重點是, 不要接錯了.
camera-module-connect

連接相機模組

確定 Raspberry Pi 的電源已斷開.
Raspberry Pi 的相機插槽在網路線接頭和 HDMI 之間, 另一邊有一個一樣的插槽, 旁邊有寫 Display, 是 MIPI-DSI ( MIPI 輸出), 而相機模組的插槽是 MIPI-CSI ( MIPI 輸入)
這個插槽 (旁邊有 CAMERA 字樣) 有兩部份, 兩隻指頭夾住兩邊, 可以往上拉起. 拉起之後, 可以稍微往後移動. 等插入排線之後, 再移正壓回, 就可以固定住排線.
銀色的接點, 朝向 HDMI 連接器的方向 ( 旁邊有印 HDMI 字樣 ) 插入到底. 銀色部份大約只剩下 1 mm 外露.
輕壓連接器的上緣兩側, 可以把連接器的上半部裝回. 排線也就固定了.

設定相機 

首先, 先 update 一下 Raspberry Pi. 其實呢, Raspberry Pi 已經內建了相機相關操作的軟體, 只要把它打開就可以了.
(我從 Windows 遠端登入, 所以畫面會有一點點小不同)
$ sudo apt-get update
image
$ sudo apt-get upgrade
image
$ sudo raspi-config
打開 Raspberry Pi 的設定畫面, 新版的設定畫面有點不一樣了, 選擇 5 Enable Camera
 image
選擇開啟 Raspberry Pi camera
image
回到設定畫面, 選擇 Finish
image
選擇重新開機 reboot
image

預覽及錄影

$ raspivid –d
顯示 5 秒的預覽畫面
$ raspivid –t 20000 –o video.h264
錄影 20 秒, 記錄在 video.h264 這個檔案, 錄完之後可以用 omxplayer 播放. 參考 播放音樂和影片

拍照

$ raspistill –o 0001.jpg
會先跑出預覽的畫面, 大約 5 秒之後會拍照. 儲存在指定的檔案.
0004

鏡頭的保護膜記得要撕掉 :)

後記

raspvid 和 raspistill 找不到地方可以設定影像裝置來源. 換句話說, raspvid 和 raspistill 只能搭配這個官方版的 camera module.