10 | 2014/11 | 12
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
プロフィール

かずべい

Author:かずべい
かずべいのヘリライフへようこそ!
まだまだ初心者ですが楽しんでます。
所有機
T-REX450PRO(パチ物ばーかり)
・HKTAROT450-3GX
・TAROT450-3GX
・T-REX450L(3セル)
T-REX500EFL
T-REX550E(V2改)
T-REX600EFL
MultiCopter
・500mmY3 Tricopter type
・500mmFPV-Quad-X Type
JR Voyger50(エンジン機)
Walkela GeniusCP/V2
Phantom

最新記事

最新コメント

天気予報


-天気予報コム- -FC2-

最新トラックバック

月別アーカイブ

カテゴリ

来訪者数

リンク

検索フォーム

RSSリンクの表示

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

スポンサーサイト

--.--.-- --:--|スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RaspberryPiを使ってUSBのWEBカメラでストリーミングをする

2014.11.17 13:07|未分類

ラズパイには専用の端子に接続するCCDカメラが発売されているのだが、今一使い方が分からない。

特にストリーミングのやり方などがグーグル先生に聞いてみても良く分からない。

そこでUSBを使ったWEBカメラを使った方法で遊んでみようと思う。

WEBカメラの選択肢はたくさんあるのだが、UVCと言う規格に対応していれば、だいたい使用できるらしい。

しかしすべてが動くわけではないので、WEBで紹介されている物を選らん下購入してみた。

1つ目はこれです。

ELECOMのUCAM-DLN130TBK と言うモデルで130万画素で1280円でした。
www.amazon.co.jp/gp/product/B004I8V6KI
これはいろいろな所で使用されているので、実績はあると思い選びました。

2つ目はこれです。

ELECOMのUCAM-DLE300TBKと言うモデルです。1つ目のモデルの上位モデルらしく、300万画素のモデルです。このモデルは使用実績が無いので、人柱的に冒険で購入してみました。1764円でした。
www.amazon.co.jp/gp/product/B004I8V6JE

では早速動作させるソフトのインストールをやっていきましょう。

まずWEBカメラをラズパイにぶすっと挿して下さい。

先に300万がその方が届いたので、そっちを先にレポートします。

そして次のコマンドを打ち込んでください。

$ lsusb

lsusb.jpg 
上の写真の中でID5がWEBカメラです。しかしメーカー名しか出てきません。型番が出てこないのですが動作するのでしょうか?

一応認識している前提でソフトのインストールをやっていきます。

まずお決まりの呪文です。(今回はapt-getの別バージョンを使用しています)

$ sudo aptitude update

$ sudo aptitude upgrade

必要なパッケージをインストールする。

$ sudo aptitude install libv4l-dev libjpeg8-dev subversion imagemagick

今回使用するソフトのmjpeg-streamerをダウンロードしてmakeする。

$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer

$ cd mjpg-streamer

$ make USE_LIBV4L2=true clean all

これで一通りインストールが完了しました。

一度実験で動作させて見ます。

$ ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 320x240 -f 15" -o "./output_http.so -p 8080 -w ./www"

ブラウザで http://【Raspberry PiのIP】:8080を開きます。

ソフト動作1 

なんだかいっぱいエラーが出ていますが、よく読んでみるとパン・チルトが動かない。とか、LEDが点かない。とかのエラーのようで、元々付いていない物なので問題ないだろうと勝手に判断しました。
(後日調べてみたら、やはり問題の無いエラーメッセージでした。出るのがいやな方は-nのオプションを下のように入れてやると出なくなります)

-nオプション版

$ ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 320x240 -f 15 -n" -o "./output_http.so -p 8080 -w ./www"

やっぱりUSBデバイスチェックの所で、型番が出ていなかったのが原因だろうか?

IEを使って「http://192.168.XX.XX:8080」

と、入力したら見事動作しました。

初期メニューです。

ライブソフト1_R 

ここから左側のメニューを選べばよいのですが、Streamが動作しません。

しかたないのでJavascriptを選んだらライブ画像が出るようになりました。

ライブソフト2_R 

後から分かったのですが、これはIEの問題でIEだからStreamが出ないらしいです。

そこでクロームをダウンロードして動作させてみたら、問題なく動作しました。

しかしカメラの限界性能なのか、残像がすごく出てちょっと使えない状態です。

ライブソフト3_R 

IEは標準と言われている割には、何かしら問題がありますね・・・

しかし動作させるたびにあの長いコマンドを入力するのが面倒なので、簡単なシェルスクリプトを作っておきました。

camera.sh

#!/bin/bash

mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 320x240 -f 15 -n" -o "/usr/lib/output_http.so -p 8080 -w /usr/www"

#mjpg_streamer -b -i "/usr/lib/input_uvc.so -d /dev/video0 -r 320x240 -f 15 -n" -o "/usr/lib/output_http.so -p 8080 -w /usr/www"

この後単体で動作するように、実行権限を与えておきます。

$ chmod u+x camera.sh

これで動作させるときには次のようにするだけで動作します。

$ ./camera.sh

コマンドが2行あるのはバックグラウンドでデーモンとして動作するように、-bのパラメーターが入っている物とそうでない物を用意しているからです。

使わない方を#でコメントアウトして使ってください。

尚、通常モードでの終了方法は^Cで終了できますが、デーモン化した時は専用の終了方法があります。

これもシェルスクリプトにしておくと便利ですよ。

kill_camera.sh

#!/bin/bash

kill -9 `pidof mjpg_streamer`

これもまた先ほどと同じく実行権限の変更をしておくと良いでしょう。

今もう一つの130万画素の方のお届けを待っています。

届いたら続きを書きますので。

少しお待ちください・・・

待つ!待つ!待つ!待つ!待つ!


午後5時ぐらいにやっと商品が到着しました。

早速実験です。

130万画素の方にUSBを差し替えて、lsusbコマンドで確認してみました。

結果は・・・

lsusb2.jpg 
やっぱりメーカーの名前しか出てきませんでした。

これはこれで良いのでしょうか?

早速ソフトを起動させて見ました。

ソフト動作2 

やっぱりエラーがずらーと出てきます。これもこれで良いのでしょうか?

使用感ですが、オリジナルの320x240の画面のときは画面がざらついていて、映りが悪いです。

ところが640x480に解像度を上げてやると、映りが良くなり300万画素の時にはカクカクしていたのが、解像度を上げているのにスムーズにストリームしています。しかし残像感はすごいです。

130万画素の機種の方がちょっとした高解像度に強いようです。

ただ640のモードの時には無線LANのLEDが点きっぱなしになっています。

また、どちらのカメラも残像がすごく出て、ゆっくり動く分には良いのですが、少し早めに動くと残像がすさまじい状態です。

やはり少し高めのカメラを買った方が良いのでしょうか?・・・

以上、USBカメラを使ったストリーミングについてでした。

つづく・・・

スポンサーサイト

RaspberryPiとWindowsでファイル共有する

2014.11.11 23:49|パソコン
ラズパイ(Linux)とWindowsの間で、ネットワークを利用してファイルのやり取りをして見たいと思って、セッティングしてみた。

セッティングと言ってもラズパイ側に「Samba」と言うプログラムを導入して、動作させるだけで願いはかないます。

まずSambaのインストールをやります。

$ sudo apt-get install samba

しばらくしたらインストールが終わって勝手に動き出します。

次はSambaのcnfファイルの一番最後に書きパラメーターを書き込みます。

$ sudo vi /etc/samba/smb.conf  <=これでファイルを開きます。

パラメーターは以下の通りです。
[MYDRIVE]    <=ここは好きな名前にすれば良い
comment = Mydrive
read only = no
locking = no
path = /
guest ok = yes
force user = pi

ViなのでESCを押した後で「:wq」と入力すれば保存後終了できます。

最後にSambaをリスタートさせましょう。

$ sudo service samba restart

これで作業は終了です。一旦動き出したSambaはラズパイをシャットダウンさせても、次回は自動で動きだしますから安心です。

つぎにWindows側の操作手順ですが、2つの方法があります。

1つ目はIPアドレスを入力してやる方法です。

したの写真のようにマイコンピュータを開いて、直接入力してやります。

Window1_R.jpg 

そうするとラズパイの中身を見ることが出来ます。

もう一つの方法はマイコンピュータのネットワークでサーチすると、ラズパイのアイコンが出てきます。

下がその時の写真です。

Window2_R.jpg 

ただ、この方法を使うと、アイコンが出てきたり出てこなかったりすることがあるので、出てこなければ1つ目の方法を使うと良いと思います。

以上、自分が忘れないようにアップしておきます。

つづく・・・

RaspberyPiで気圧モジュールを使う

2014.11.01 21:56|パソコン

前回のLCDキットと一緒に、気圧温度センサーを搭載したモジュールも一緒に購入しておいた。

アマゾンで990円ほどです。www.amazon.co.jp/gp/product/B009A525QS/ref=oh_details_o00_s00_i01

こんなのです。

一応コネクター端子だけは自分でハンダ付けしないといけません。

接続はいたって簡単で、ラズパイのGPIOの同じ端子に4本接続するだけです。

3.3V,GND,SDA,SCLの4本だけで後は使いません。

これを使ってブレッドボードに配線しました。

DSC01605_R.jpg 

プログラムはPYTHONでサンプルがありましたので、それを参考に連続で1分ごとに測定して、ファイルに同じ物を書込みできるようにしておきました。

プログラムです。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time

from Adafruit_BMP085 import BMP085

i = 1
# ===========================================================================
# Example Code
# ===========================================================================

# Initialise the BMP085 and use STANDARD mode (default value)
# bmp = BMP085(0x77, debug=True)
bmp = BMP085(0x77)

# To specify a different operating mode, uncomment one of the following:
# bmp = BMP085(0x77, 0)  # ULTRALOWPOWER Mode
# bmp = BMP085(0x77, 1)  # STANDARD Mode
# bmp = BMP085(0x77, 2)  # HIRES Mode
# bmp = BMP085(0x77, 3)  # ULTRAHIRES Mode

while i <= 100:

    f = open("tenki.txt","a")

    temp = bmp.readTemperature()

    # Read the current barometric pressure level
    pressure = bmp.readPressure()

    # To calculate altitude based on an estimated mean sea level pressure
    # (1013.25 hPa) call the function as follows, but this won't be very accurate
    altitude = bmp.readAltitude()

    # To specify a more accurate altitude, enter the correct mean sea level
    # pressure level.  For example, if the current pressure level is 1023.50 hPa
    # enter 102350 since we include two decimal places in the integer value
    # altitude = bmp.readAltitude(102350)

    print u"気温 Temperature : %.2f C" % temp
    print u"気圧 Pressure    : %.2f hPa" % (pressure / 100.0)
    print u"標高 Altitude    : %.2f m" % (altitude + 98.0)
    print u"回数 Counter     : %.2d Kai\n" % i

    f.write("気温 Temperature : %.2f C\n" % temp)
    f.write("気圧 Pressure    : %.2f hPa\n" % (pressure / 100.0))
    f.write("標高 Altitude    : %.2f m\n" % (altitude + 98.0))
    f.write("回数 Counter     : %.2d Kai\n\n" % i)

    i = i + 1
    time.sleep(60.0)

f.close()

実行画面はこんな感じです。

実行画面1 

ちなみに私はラズパイをいじるときは100%PCからSSHでリモート操作して動作させていますので、上の画面はWindowsの画面になっているんです。

もう1台Arduinoを使って気圧計を作っていますが、それと比べても数値はほぼ同じでした。

気温も部屋に置いてある温度計と比べてみると、ほぼ同じ数値が出ていますのでわりと正確だと思います。

標高に関してだけは、めちゃくちゃです。私の住んでいるところの標高は58mぐらいなのですが、上記に用にとんでもない数値が出てきます。

これはモジュールの中で、気圧と気温を基にして計算で出している数値なので、あまり意味の無い数値です。

とりあえず思った通りに動作しましたので、これで良しとします。

今日は以上です。

つづく・・・

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
現在の閲覧者数: