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に接続する場合はポートを開けておくのも忘れずに。



2018年3月24日土曜日

Raspberry Pi CameraでSマウントのレンズを使ってみた。

Raspberry Pi Camera V1の互換モジュールでいろいろ遊んでみてたんだけど、レンズのピントを調整するときにレンズに傷をつけてしまった…
ということでレンズを交換してみようと思います。

まぁ互換モジュールはお安いのであまり痛手ではないのですが、レンズを替えたらまた面白いことに使えるんじゃないかということで。
公式のラズパイカメラだとVR220とか言う広角レンズにできる改造キットもあるみたいだし。

とりあえずWebカメラとかではそこそこ使われてるM12×0.5のSマウントレンズを試してみることに。やすいし。
ちなみにレンズを外すとこんな感じ。
ここにSマウントレンズを取り付けられるようにレンズマウントをつけます。

フラットケーブルがあるので、加工しやすいように樹脂製のものを購入。
穴ピッチがちょうど良さそうなやつが2個で2ドルぐらいでした。
ガラス入り樹脂っぽくて結構硬かったのですが、とりあえずフラットケーブルを避けるぐらいのスリッドを入れます。でかすぎると光が漏れるので慎重に…

裏側からネジ止め。結構穴の近くに部品やパターンがあるので樹脂のスペーサーをつけました。

簡単に行くと思いきや…
最初からこの穴位置がなんか中心からずれてると思っていたけどやっぱりずれてる…
そのままでも一応使えたりするんだけど、レンズによってはダメそうなのでネジでの固定ではダメそう。純正モジュールだと良さげな位置なのになぁ

というわけで最終手段ホットボンドで固定。裏から見たらネジの半分ぐらいずれてました。
今回はとりあえず多少光が漏れたりするのは気にしないことに。そもそも基板自体が遮光されてないし。

肝心のレンズですが、一応2.8mmと3.6mmを用意しておきました。どちらも1ドルちょい。ともにF2.0でCMOSサイズ1/3で画角90°らしい。
Raspberry Pi CameraはCMOSサイズが1/4なので画角は90°より狭くなりそう。

とりあえず2.8mmの方は問題なく使えるんだけど、3.6mmの方は最大限にねじ込んでも10mmぐらいのところじゃないとピントが合わないのでマクロレンズみたいになってしまった。
M12のレンズはCCTV用で結構お安いのが手に入るのでいろいろ買って試してみようかなぁ

そういえばもともとのレンズより画質が良くなったように感じるんだけどやはりレンズの差って大きいのかな

追記:レンズ届いたので試してみた。

2018年3月17日土曜日

RN4020のファームウェアをアップデートしてみた

というわけで秋月で購入してみたRN4020のファームウェアを更新してみた。
ファームウェアを更新するとi2cに対応したりiBeaconに対応するらしい。
ただしファームウェア更新失敗するとRN42みたいに復活できないっぽいので、旧バージョンでも困ってない場合はやらないほうがいいかも…
ちなみにi2cは1.20から対応で、ビーコン系は1.33 BECから対応らしい。

RN4020はとりあえずモジュールしか買ってないので適当にはんだ付けで…
ファームウェア更新にはフローコントロールを使うようなので、手持ちのFT232R搭載のUSBシリアルモジュールを3.3V設定にして使用した。
CTSとDTRしかなかったけど、とりあえずRN4020のCTSをDTRに、RN4020のRTSをCTSにつないで見たらオッケーだった。

まずはCooltermを使用してバージョン確認。デフォルトのBaudrateは115200。
+を押してエンターでEchoのオンオフを切り替えられるのでとりあえずオンにしておいた。
そしたらVを押してエンターでバージョンが見れる。

今回使用したモジュールはv1.10.09だった。
お次にファームウェアアップデートのためにMLDPとフローコントロールを有効にするコマンドを送信する。
SR,32000000
を入力してエンター。
ACKが帰ってきたら正常。
あとは一旦電源を切ってファームウェアアップデートツールをダウンロードしてくる。

ファームウェアアップデートツールはRN4020の公式ページのドキュメントの下の方からダウンロードできる。
RN4020 DFU Utilityを起動したらScanを押してCOMポートをスキャンして選択。
あとはファームウェアを選択してUpdateを押すだけ。このツールはフローコントロールが必要なのでちゃんと結線されてないとエラーが出る。
Updateを押して少し待つと完了。
ちなみにある程度ゲージが進んでからアップデート失敗すると電源オフらない限りは何回かトライできるみたいだけど電源をオフってしまうと起動しなくなることもあるらしい…
フロー制御がうまく行かなくてゲージが進まないで失敗する場合は大丈夫みたいだけど。あとはシリアルポートのフロー制御をバイパスしてたりすると失敗するみたいな…

もう一回バージョンを確認してみたらちゃんと1.33.4 BECにアップデートされていた。
これでiBeaconが作れるようになるっぽい。

2018年2月21日水曜日

安いスマートカードリーダーを買ってみた

PX-BCUDを使ってPCでテレビを見るためにB-CASカードリーダーとしてSCR3310-NTTComを使用していたんだけれども、最近調子悪いので(接触不良?)eBayで安いスマートカードリーダーを買ってみた。

どうもRocketekのコピー品みたいな感じ?Rocketekのロゴがないけどどう見てもRT-CSCR1にしか見えない…

早速PCにつないでみるとドライバが自動で認識された。
しかしカード入れるときになんか引っかかる感じが…
まぁ一回入れたら入れっぱなしなのであんまり大きな問題ではないけど、とりあえず分解してみた。

中身はいたって簡素な作り。ReaktelのRTS5169が使われていた。


裏側にはLEDなど。LEDが2つついてて片方はカードを入れると反応して、もう片方はアクセス中点滅する。


カードが引っかかっていたのはICチップの接点の樹脂部品に角が引っかかってたみたい。
とりあえずスロープを適当なプラバンで作ってカプトンテープで止めておいた。

ちなみに購入時レートで760円ぐらいでした。