2017年7月30日日曜日

Raspberry Pi Zeroで防犯カメラを作ってみた。ソフト編

先日完成したRaspberry Pi Zero監視カメラをとりあえず動かしてみようとおもいます。

とりあえずOSはインストール済みで、sshファイルによるssh有効化も済んでるのでLANにつないで電源を入れてルーターからIPアドレスを確認すればSSHで接続できる。

カメラの有効化
sudo raspi-config
で設定画面を出して
Interfacing Optionsを開いて
P1 Cameraを選択して
有効にしますか?と聞かれるのでYesを選択
次にOKを押すと元の画面に戻るので、Tabを押してカーソルを移動して
Finishを押せば完了。再起動するか聞かれるので再起動すればカメラが使えるようになってるはず。

このままだとCSIインターフェースのカメラが扱えるアプリケーションじゃないとカメラを使えないのは不便なのでV4L2モジュールをロードしてUVCのカメラのように扱えるようにする。
sudo modprobe bcm2835-v4l2
とりあえずこれでV4L2モジュールがロードされて/dev/video0として使えるようになる。

このモジュールは起動時に自動的にロードされないので、起動のたびにmodprobeやるのが面倒な場合は/etc/modulesにbcm2835-v4l2を追記しておくと良いかも。

sudo nano /etc/modules
管理者権限じゃないと編集できないのでsudoで編集
bcm2835-v4l2と追記して
Ctrl+X→Y→エンターで保存される。

とりあえずこれでraspivid以外からでもカメラが使えるようになったので、mjpg-streamerで試してみる。

まずはmjpg-streamerに必要なパッケージをインストール
sudo apt-get update
sudo apt-get install libjpeg-dev imagemagick subversion

そしたらmjpg-streamerのソースをダウンロードしてきてmake
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
cd mjpg-streamer
make
sudo make install

とりあえず動作確認
export LD_LIBRARY_PATH=/usr/local/lib 
mjpg_streamer -i "input_uvc.so -f 15 -r 640x480 -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www"

これでブラウザからhttp://"Raspberry PiのIPアドレス":8080でアクセスできるはず。
Raspberry Pi CameraではフルHDの解像度まで対応してるはずなんだけど、Raspberry Pi ZeroのCPU性能だとmotion jpegでは結構きつい感じがした。
3Bとかだと結構余裕なんだけどなぁ
今度はHLSとか試してみたいな。

あと防犯カメラハウジングで使う場合はカメラモジュールの赤色LEDをオフにする設定にしないと反射して赤みがかかってしまう。
LEDを消す場合は/boot/config.txtにdisable_camera_led=1を追記するだけでいいっぽい。


2017年7月29日土曜日

Raspberry Pi Zeroで防犯カメラを作ってみた。ハード編

ここのところRaspberry Pi Zero関連で色々準備していたんだけど、実は友人から頼まれた防犯カメラを作るためだったのでした。


一応カメラモジュールがどのぐらい使えるのかの確認

Raspberry Pi Zeroが品切れ中だったので先にLANアダプタが届いてしまった感じ。

ようやく在庫入荷した

Raspbery Pi Zeroが手に入ったのでケーブルのテスト

防犯カメラハウジングは防水なので出るケーブルは少ないほうが良かったので

とう言う感じでだいぶ準備に時間がかかってしまったんだけど、ついに防犯カメラハウジングに組み込んでみた。
ケースには通常の防犯カメラ用のハウジングを使用した。eBayで12ドルぐらいで売っていた。
ダミーカメラだと結構しょぼかったのと、防水はちゃんとしたかったので。

一応このハウジングはアルミ製で、カメラ部はガラスになってた。

ケーブルはLANケーブル1本のみを出す感じに。
ケーブルの太さでこのLANケーブルに決めた。防水ブッシングはケーブルの太さ重要そう。
おもむろにLANケーブルをぶった切る。

ハウジングに付属のブッシングを通してネジ止めするだけ。
シャワーで水かけてみたけど問題なさそう。

Raspberry Pi Zeroの固定は専用マウンタをアルミ削り出しで作成。
ハウジングの溝を使用して固定。
あと上からねじ閉めれば動かない用になってる。

USB LAN変換アダプタにつなぐケーブルは干渉しないようにmicroUSBコネクタを買ってきてケーブルを自作。

Raspberry Pi Zero側にはLANアダプタ側から5Vを供給するように、DC DCコンバータの出力をUSBの5Vのところに接続。

RasPi Zero以外を熱収縮チューブで絶縁して、とりあえず本体側は完成。

Raspberry Pi CameraはIR LEDモジュールにマウント。IRフィルタついてるので意味ないんだけど、安いので自前でカメラマウンタ作るより良い。
一応カプトンテープでLEDの足に当たるところは絶縁しておいた。

あとは本体側に固定してハードは完成!
ガラスにはくもり止塗っておいた。

カバーを止めて完成!
なんかすごくそれっぽい感じが出てる。
IR LED有効にするにはIRフィルターを外さないといけないんだけど、昼間変な色になるので見送り。
eBay見てたらIRフィルターをソレノイドでオンオフできる機構も売ってたなぁ。

とりあえずハードは完成。部品代で5kぐらいかかった。

ハードできたし、次はソフトですな。



2017年7月20日木曜日

Raspberry Pi Zero Wを買ってみた

ようやく技適が取れて、日本でも発売になったRaspberry Pi Zero W。
スイッチサイエンスで発売開始から1時間53分格闘したところなんとか購入できた!
というわけで今日届きました。
スイッチサイエンスだとメール便で送ってくれるので送料が安くて良い。
送料と本体で1,446円だった。
結構な人気だったようで鯖が重くて購入大変だった…

サイズはRaspberry Pi Zeroと同じ。かなり小さい。
BluetoothとWiFiが統合されたICが乗ってる。
どうやらパターンのWiFiのアンテナも工夫されてるみたい。

Raspberry Pi Zero(上)とRaspberr Pi Zero W(下)の比較。
端子の位置は同じなんだけどCPUの位置は結構変わってる。

とりあえずOSはRaspberian Liteをインストールしてみた。
前回同様sshっていう空ファイルをbootディレクトリに入れて起動してみる。
この前作った自前PoE対応のLANアダプタを使ってみた。

これでうまく起動してssh使えたんだけど、更にbootディレクトリにコンフィグファイルを入れるだけでWiFiも設定できてしまうらしい。

やり方は結構簡単で、sshと同じくbootフォルダ(PCにマウントするとbootとして認識されるドライブ)にwpa_supplicant.confというファイルを作る。

中身は

network={
    ssid="SSID"
    psk="password"
    key_mgmt=WPA-PSK
}

(SSIDとpasswordには繋ぎたいAPのものに置き換えること

これでRaspberry Pi Zero WにmicroSDを指し直して起動するとそのAPに自動的につながるはず。

pskのところにWiFiのパスワードがそのまま入っているのが嫌な人はsshでログオンしてから
wpa_passphrase "SSID" "password"(SSIDとpasswordには繋ぎたいAPのものに

このコマンドでpskをパスフレーズに変換できるので、先程のwpa_supplicant.confの中身を書き換えておくといいかも。パスフレーズの場合は""で囲わないので注意(囲ってしまうとつながらない)

やはりRaspberry Pi Zeroはネットワークに繋いで使いたいものなので、有線LANやUSB WiFiアダプタにUSBポートが取られないのは便利だなぁ。
さらにUSB WiFiアダプタ買うのと変わらないコストアップだしね。


2017年7月13日木曜日

Fire TV Stick (New モデル)でUSBデバイスを使ってみた

昨日届いた新型のFire TV Stickなんだけど、USBホスト機能がついてるようでOTGケーブルを使うとUSBデバイスが使える模様。
というわけで早速試してみた。

何かに使えるかなと思って買っておいた給電対応OTGケーブルが役に立つ時が来た。
eBayで1ドルぐらいだった。

Fire TV Stick 2本体にも給電しないといけないので、充電対応のOTGケーブルでないとFire TV Stickの電源がはいらない。


こちら側をACアダプタとFire TV Stick 2のmicroUSBポートの間に噛ませるだけ。


反対側にUSBデバイスをつなぐと使える!はず。


実際つなぐとこんな感じ。

使えるUSBデバイスはFire TV Stick 2のOSに依存するので、どれだけドライバモジュールが組み込まれてるかによるかも。

ためしにLANアダプタを繋いでみた。

試したのはLogitekのLAN-GTJU3。ASIXのICを使ってる、USB3.0→GigabitLANアダプタ
Fire TV Stick 2はUSB3.0対応してないのでオーバースペックだけど問題なく認識した。
Android対応のLANアダプタとかだったら結構認識するかもしれない?


LANケーブルをつなぐとメニューのネットワーク設定のところも無線LANがオフになって、有線で接続済みという表示に変わる。
Fire TVのほうで有線LANに対応してるからOSも対応してるのかな?
問題なくネットに繋がるので、無線LANが届きにくかったりする場合は有効かも?

この他にもUSBメモリ、マウス、キーボードを試してみたけどどれもうまく動いた。
USBメモリの場合はESファイルマネージャーを使うとUSBの中にいれたAndroidアプリのAPKもインストールできるので、Fire TV Stickに対応してないアプリでも動くものは動かせるかも?

とりあえずKodiのARMV7A版をインストールしておいた。アプリによってはマウスがないと操作できないかも。
いやーKodiもサクサク動くなぁ

2017年7月12日水曜日

Fire TV Stick (New モデル)を買ってみた

プライムデーでFire TV StickのNewモデルが1500円引きだったので買ってみた。

Newモデルは2世代目で、CPU性能がだいぶ上がってるみたいでサクサクらしい
CPUはクアッドコア1.3GHz、メモリ1GBらしい。
Fire TV Stick 2とか呼ばれてるけどこっちのほうがわかりやすくて良いかも…


パッケージは物が隙間なく入るデザイン。


付属品はこんな感じ。個人的にHDMI延長ケーブルはありがたいと思う。


リモコンは音声認識対応版。


サウンドバーに取り付けるのでHDMI延長ケーブルを使用してみた。
HDMIポートの他には、microUSBポートしかない。


サウンドバーに取り付け。HDMI延長ケーブルもちょうどいい長さ。


ACアダプタはChromecastのに比べるとちょっと厚め。5V1Aのようだ。


購入したAmazonアカウントが予め登録されてるので、画面に従ってWiFi接続すればすぐに使用可能!
いままでOrangePi PCにAndroidを入れてTVに繋いでいたけど、こっちのほうがOSが最適化されているのか、すごくサクサク動く。
OSはAndroidベースみたいなのでいろいろ遊べそうだなぁ

2017年7月9日日曜日

Bluetooth 4.0のオーディオレシーバモジュールを使ってみた。

だいぶ前にCSR8645っていうBluetooth 4.0のオーディオレシーバモジュールを買っていたんだけどようやくプログラマで設定変更できた…
注文履歴とか見たら2015年10月とかになってたよ…
もともとカーオーディオ用に買ってたぽい。
なぜこんなに放置されていたかというと、CSR8645の設定がA2DPだけじゃなくてHFPとかHSPも有効になってて電話がかかってくると電話取れてもマイクをつなげてないからこっちの声が届かないとか。
マイクをつなげればいいんだけど、自分の場合はA2DPだけ使えればいいんだけども…

ということでしばらく使ってなかったんだけど、CSRのプログラミングツールがあるみたいで、そいつを使うといろんな設定が変更できるのに最近気がついた。

さらにはFTDIのBit Bangモードを使った互換のプログラマを作ってる人もいた。
そういやFT232RLのボード持ってたなぁということで作ってみた。
今回使用したのはこのFT232RL搭載ボード。
これならほぼすべてのピンが取り出せるので便利かも。

まずはピンヘッダの取り外し。
USB-TTL変換として使うならこのピンだけでもいいんだけどね…

そしてストレートのピンヘッダを全部のポートに立てた。
この配置だと真っ直ぐ立てるの難しいんだよね…
曲がってる…

CSR-SPI-FTDIのサイトを見ながらCSR8645に接続。
とりあえず通信用ピンは間に100Ωぐらい入れておいた。
CSR8645の場合はSPIを有効にするためにSPI_PCMピンを10kΩでプルアップ。
こんな感じにつなげてみた。本当は端子つけるといいんだろうけどね…

FT232RLのドライバはZadigを使ってlibusbKをインストールする。
OptionのList all devicesにしないと一覧にFT232RLが出てこないかも。
これでプログラマの準備は完了。

書き換えの方法はYoutubeを参考にした。

このFTDIを使ってプログラマを使う場合はCSRの書き換えツールのインストールフォルダのusbspi.dllをCSR-SPI-FTDIのものに置き換える必要がある。


Open From Deviceでデバイスを開いて、HFPのチェックを外し、Write Deviceするだけで良いらしい。
とりあえずこれでマイクをオフにできた。
ついでにデバイス名も変えられたので使えそう。他にもいろんな項目が…

このモジュール、差動出力なので出力にオペアンプとか噛ませないとだめかもなぁ。
色々カスタマイズできるみたいなので、自作のBluetoothスピーカーとか作ってみても面白そう。
そういえばCSR8645ってマルチポイントに対応してて、A2DPで同時に二つのデバイスから接続できた。
音は先に再生した方のが再生される模様。