2018年4月21日土曜日

RN4020でI2Cを試してみた

この前RN4020のファームをアップデートしたので1.20で対応したI2C接続を試してみた。
もともとI2C用の22と21PinはRSVDでしたが、このピンがI2C用のピンになってるらしい。

とりあえずテストなので適当な線をはんだ付け。
I2Cのデバイスの電源も一緒に取ろうということで4本線を出してみた。上からGND、VDD、SDA、SCLという感じ。

I2Cデバイスは2年ぐらい前にラズパイ用に買ったBME280が手元にあったのでこれをそのまま接続してみた。
まぁ接触が不安だけどテストなので…

シリアルモニタでつないでコマンドを打ってみる。

+
]A,1,1
]C,0
]W,ECF425
]W,ECF5A0
]W,ECF201
]C,1
]W,ECF7
]C,1
]W,ED
]R,08
]C,1
とりあえずこれでセンサーの値が読み出せた。まぁそのままではなんのことやら…
RN4020のスクリプトでは変数とかは扱えるみたいなんだけどビット演算とかできるのかなぁ?通常のコマンドに変数で代入とかはできるみたいなんだけどBME280だとセンサから補正値を読み出して計算しないといけないし。

スクリプトでどこまでできるのか調べないとな…
受信側で補正かけるのもなんだかなぁだし。補正値を加味したデータを取得できるセンサーを使うとかかなぁ。

2018年4月19日木曜日

Raspberry Pi Cameraで長いフレキを使ってみた

Raspberry Pi Camera上でレンズで遊んでいるとどうしても付属のフラットケーブルではちょっと短く感じることがある。ということで長いフレキケーブルを買ってみた。

Aliexpressが一番安い感じで、とりあえず30cmと2Mのフレキケーブルがだいたい同じ値段で売っていた。
今の環境では30cmが扱いやすい感じの長さなんだけど、値段が余り変わらなかったのでつい2mをポチってしまった。CSIインターフェースってこんなに延長しても使えるのか気になったので…


とりあえずこんな小さい箱に入って届いた
通常2mのケーブルとか買ってもこんなに小さくはならないよなぁ


さすがフレキケーブル、だいぶコンパクトに入っていただけでスペック通り2mありそう。


早速ラズパイとカメラモジュールをつないでテスト。
普通にmjpg-streamerでも問題なく動いた。フレームレートにも影響はなさそうな感じ。

さすがに2mは長すぎるけど、付属の15cmよりはだいぶ作業性が良くなった。
しかしCSIインターフェースってこんなに伸ばしても大丈夫なもんなのねぇ

2018年4月6日金曜日

Raspberry Pi CameraでSマウントのレンズをいろいろ試してみた

というわけで前回はSマウント(M12x0.5)のレンズをRaspberry Pi Cameraに取り付けれるようにして見たわけですが、1.8mmのレンズも届いたので改めてレンズによる画角の違いをテストしてみました。

こちらがAliexpressで購入した1.8mmのレンズ。

IRフィルタ付きが一番安かったのでフィルタは外せばいいかなと思ってこちらにしました。
Raspberry Pi Cameraの方にはフィルタが付いてるのでまずはIRフィルタを取り外し。


ラジペンとかでねじると簡単に外れる。
レンズに傷つけないように注意しないといけないけど。

後はこのレンズ、超短いのでレンズマウントで最大まで締め込んでもピントが合わない…
といいうことでレンズマウンタを削ってもらいました。

デフォルトより3mmほど短くしました。


例によってホットボンドで装着。

というわけでそれぞれのレンズでどんな感じに映るかをテスト。

まずはノーマル。

まぁコピーモジュールなのでレンズの品質があまり良くないとか言われてますが、こんなもんかなぁと。

次にSマウントの3.6mm

画角的にはもともとついていたレンズと変わらない感じ。
レンズが大きくなった分多少画質が良くなった気もする?

お次はSマウントの2.8mm

画角がちょっと広くなってるけど画質はあんまり変わらないかな?

最後に1.8mm

画角がだいぶ広がってるし、文字もくっきり読みやすい感じ。
ピントはすべて真ん中のダンボールに合わせるように調整してるんだけど、どうにも1.8mm以外は文字が潰れてしまう。これはレンズの品質によるものなのかなぁ?あとは対応解像度もあるみたいだし。

ちなみに前回3.6mmを試した際に上手くピントが合わせられなくてマクロにしか使えなくなっていたのはどうやらネジの部分にバリがあってそれ以上ねじ込めなくなっていたみたい。
今回マウンタを縮めることにより問題がなくなった…

こうやっていろんなレンズを試してみると画質はセンサーの性能だけではなさそうということがわかったので、もうちょっと良いレンズを試してみたくなってしまったなぁ



2018年4月4日水曜日

DD-WRTでSoftEther VPNを使ってみた。

iPhoneでVPNで自宅のネットワークに接続するためにDD-WRTでSoftEther VPNを有効化してL2TPで接続してみた。最近の市販ルータはPPTPぐらいには対応してるのが多いけど、せっかくDD-WRTなのでSoftEatherを使ってみた。

使用しているルータはDD-WRT化したWZR-1166DHP。NANDの容量が多いこともあって、公開されているROMでもいろんな機能が付加されている。
ServiceのVPNにはなんとOpenVPNはもちろん、SoftEther VPNの項目まであった。

ただこの項目からSoftEather VPNを有効にしても設定ファイルをコピペしたりしてもうまく動かない…
ということでSSHから手動で設定することに。

まずはSoftEatherの設定を保存するためにAdministration→ManagementでJFFS2を有効化する。

このルーターの場合は結構な容量がつかえるっぽい。

SSHからコマンドを実行したいのでServicesでSecure Shellを有効にしておいた。

SSHでルーターに接続したらとりあえずSoftEather VPNを起動してみる。

vpnserver start
でSoftEather VPNが起動する。

SoftEatherのダウンロードセンターからSoftEher VPN Server Managerをダウンロードしてきて実行する。このツールでサーバーの詳細設定をすることができる。

今回はGUIのvpnsmgr.exeを使用した。

新しい接続設定からルーターのIPアドレスを設定して、接続するとパスワードを設定するように促されるので、設定パスワードを設定し、そのままウイザード形式でVPNの設定を済ませる。このへんは普通のSoftEther VPNの設定と同様に設定できる。
とりあえず今回はL2TPを有効化しておいた。

ウイザードによる設定が完了したら、ローカルブリッジ設定を開く。

ここでは物理的な既存のLANカードとブリッジするのではなくて、新しいtapデバイスを作成した。先程L2TPを設定した仮想ハブにvpnという名前のtapデバイスを作成してローカルブリッジを設定した。
新しいtapデバイス作成時にエラーが発生する場合はシェルからmodprobe tunをすると良いかも。

ローカルブリッジを設定したら、サーバーマネージャーを終了してSSHのターミナルに戻るって下記コマンドを実行する。

mkdir /jffs/etc (もしフォルダが存在する場合は不要)
cp /tmp/var/lib/vpn_server.config /jffs/etc


これでSoftEatherの設定ファイルがjffsにコピーされて再起動しても消えなくなる。
後はWebの設定画面からAdministrationのCommandsを開いて、下記のスクリプトをスタートアップに登録する。

#!/bin/sh

modprobe tun
ln -s /jffs/etc/vpn_server.config /tmp/var/lib/vpn_server.config
/usr/libexec/softethervpn/vpnserver start
sleep 5
brctl addif br0 tap_vpn


これをCommandsのところに入力してSave Startupをクリックすればスタートアップスクリプトとして登録される。

あとはルーターを再起動すれば自動的にSoftEther VPNが起動して設定が読み込まれるはず。

最後に外部から接続できるようにNAT/QoSのPort ForwardingからL2TP用に500と4500番(UDP)を開けて完了。
ちなみにiPhoneからの場合は「L2TP-VPNサーバーが応答しませんでした。」というエラーはIPアドレスがちゃんと取得されてない場合も表示されるみたいなのでこのエラーが出た場合はポートがちゃんと開いてるかどうか以外にもブリッジ設定などによってちゃんとIPが取得できる状態になっているかどうかも確認する必要があるみたい…
(自分はこのエラーがでてポートが空いてないと思いこんでいろいろやっていたので)

とりあえずこれでDD-WRT上でL2TPが使えるようになった。L2TP以外の手段でSoftEther VPNに接続する場合はポートを開けておくのも忘れずに。