2014年11月14日

Raspberry Piをロガーとして使う

VPNブリッジを構築するために、RaspberryPiを使っているが、このRaspberryPiをロガーとして機能されることができる。アナログ電圧で入力されるアナログ信号をスーケル変換して記録するもので、MCP3208というA/D変換ICを使う。MCP3208は、秋月電子で購入できる。通常の計装信号は1-5Vや0-5Vが標準なので、3.3VのRaspberryPiのSPI接続で直接つないでも、0-3.3Vのアナログ信号しか記録できない。そこで、SPI接続のロジックレベルを3.3Vと5Vで相互に変換する必要がある。これには、ロジックレベルコンバータTXB0108を使う。スイッチサイエンスで入手できる。私の実験では、MCP3208のアナログ入力を3.3kΩくらいの抵抗でプルダウンしておかないと安定して0Vが表示できなかった。
ソースコードは、こちらにある。このソースコードでは、パルスカウンター機能はなく、警報メール等にも対応していないので、WDR-7と胴レベルではないが、アナログデータの記録だけに特化すれば、WDR-7と同等機能が、非常に格安で実現できる。実験されれば面白いと思う。


posted by bmasterna at 23:11| Comment(0) | 遠隔監視装置

2014年08月24日

最近の話題その2

前回の書き込みでDHT11やDHT22のことを書いたが、RaspberryPiとSPI通信で接続して、アナログデータを計測することができるようになった。同じくC言語のソースを改造してコンパイルして作成。CronとFTPupload用のスクリプトを用いて、1秒以上の間隔での計測ができる。ソースは、ここのmcp3208.cを参照した。このままでは、データロガーとして利用できないので、かなり、大きく改変した。

ハードウェアは、Raspberry pi----TXB0108(PWR)----MCP3208の順で接続し、3.3Vまで取り扱い可能なRaspberyPiで1-5Vなどの計装標準信号を取り扱うために、ロジックレベルコントトーラ(TXB0108)を間に挿入した。

残る課題は、パルスカウンタをRaspberry Piで実現できれば、現在使っているWDR-7は不要となるのだが、参照できそうなソースがインターネット上に見当たらない。だれか教えてほしいものだ。
それから、ロガーとして利用するRaspberry PiにWebサーバを導入して、計測データをhttpからリアルタイム監視できるようにしたいと考えている。

Raspberry Piを計器として利用する場合、停電対策と、インターネット接続不良時の内部時計の問題を解決する必要がある。RTCモジュールをI2Cで接続して、Raspberry Piの起動時と1時間毎に、インターネット接続の有無に関わらず、まず、RTCの時間を内部時計に一旦読み込んで、natpdateでインターネット上の時間を取得し、内部時計に書き込み、さらに、RTC時間にも書き込む手順で旨く行く。こうすると、インターネットに接続できていない時は、RTCの時間が内部時計に設定され、インターネットに接続されているときには、NTPサーバの時間が内部時計に設定されるようになる。
RTCのおかげで、停電復電後にインターネット接続ができない時間帯の計測データの時間が正確に取得できるようになる。最初から、インターネット接続しない環境でも、ロガーとして、かなり正確な時間が取得できる。

FTPサーバへのUPLOADであるが、VPNを構築している場合には、VPN上のLANのいずれかの位置にFTPへのサーバを設置すればよい。もちろんWAN上に置いてもよい。当組合では、WEBサーバをレンタルして、FTPサーバとして利用している。VPNサーバ兼FTPサーバというのもOKだ。Raspberry PiにFTPサーバを組み込むことも簡単にできる。特に、最初から、インターネット接続しない環境でロガーを稼働されるときには、ロガーとして稼働しているRaspberry PiにFTPサーバを構築し、そこへUPLOADさせるとよい。もちろん、ロガー内部に計測データを集積することは、FTPサーバに無関係に可能だが、計測完了後の計測データの取り出しが、FTPクライアントソフトウェアによりWindowsからも簡単にできるのがいい点である。
posted by bmasterna at 13:14| Comment(0) | 遠隔監視装置

2014年07月18日

最近の話題

RaspberryPiのGPIOを使った温度・湿度計測が簡単にできることを知りました。ここのサイトのCソースで、DHT11というセンサーで温度と湿度を計測できることを確認しました。ソースでは、小数点以下が25.0とか 24.0度と表示しますが、正確にいえば、このセンサーは小数点以下の温度計測機能をもっていないので、25 とか 24が計測結果となる方がいいと思います。湿度も同様です。
このソースを利用して、上位機種であるDHT22(AM2302)用のプログラムを作成しました。実際には、DHT22用のソースが外国のサイトにあったので、必要部分だけを組込んでみました。また、DHT11でもこのソースを共用できるように、起動時の引数を設定し、使用するRaspberryPiのGPIOナンバーも引数化しました。
DHT22(AM2302)を利用すると、小数点以下1位まで温度と湿度が計測できます。
この計測出力形式をカンマ区切り形式(CSV形式)になるように変更し、cronで10分毎にcsvファイルの記録させて、1日に一回、このCSVファイルに日付時間を挿入してリネームし、FTPサーバーへ自動UPLOADさせれば、温度湿度ロガーが完成です。
以前、測温抵抗体によるWDR-7への信号取り込みについて詳述しましたが、以前の方法よりかなりスマートな計測方法があるのですね。

ところで、
最近は、中国製の安価なスマートフォンを香港サイトから購入し、その設定に結構な時間を使いました。
目標は、日本語化とアンテナピクト問題の解決で、安いデータ専用SIMでIP電話ができるようにすることです。
------------
日本語化
中国製のスマホは購入したときに、中国語か英語のどちらかになっています。中国語の時は、とりあえす英語に変更します。日本語がデフォルトで対応しているスマホなら、Language & inputで日本語が選択できますが、日本語がデフォルトで対応していない機種の場合、MoreLocale2を使って、日本語環境を作ります。ところが、Android4.2以上の場合、「rootを取って実行せよ」「パソコンに接続してADBコマンドを発行せよ」のいずれかを求められます。後述のアンテナピクト問題対策のため、root取りが必須なので、「rootを取って実行せよ」の方を選択することにします。ここでは、日本語がデフォルトで対応していない機種の場合、MoreLocale2が実行できないので、一旦キャンセルします。

-----------
root取り
まず、setting ・・・>security でUnknown Sourcesをチェックします。
恒久的にroot取りする必要はないので、apkファイルを実行して、rootを取ります。
CPUがMTK6572のDual-Coreのスマホでは、framaroot.apkでrootが取れました。
CPUがMTK6582のQuad-Coreのスマホでは、BaiduRoot_2001.apkでrootが取れました。BaiduRoot_2001.apkは百度一鍵rootのスマホ用中国語アプリで、漢字を見ながらインストールします。通常のインストールのあと、表示される画面をクリックすると、root取りが始まります。
rootが取れた後に、MoreLocale2を実行するとあっさり、日本語ロケールに変更できます。それを実行しても、setting(設定)などは、英語のままです。

--------------
アンテナピクト問題
中国製のスマホでは、data通信専用のSIM(SMS対応でないSIM)をAPN設定しても、アンテナピクトは表示できません。この状態では、電池の消耗が激しいらしいので、対応します。
Xposed installer(de.robv.android.xposed.installer_v32_de4f0d.apk)というアプリとdatesim_pacher.apkを使用します。最初に、root状態で、Xposed installerを起動し、フレームワークを読み込み、datesim_pacher.apkをモジュールとして組み込みます。
中国製スマホでは、モード2で成功するようです。これも、CPUがMTK6572のDual-Coreのスマホでは、簡単に成功しましが、CPUがMTK6582のQuad-Coreのスマホでは、unfortunately the process com android phone has stoppedが表示し続けて、閉口状態に陥ります。理由不明ですが、WiFiをOFFにして、再起動すると、エラー表示がしなくなって、正常動作するようです。

--------
IP-Phone導入
Lineやスカイプでも会話に困ることはないのですが、普通に外部へ電話したいし、外部からも着信したいので、Fusion-SmartPhoneを契約し、050の番号を取得しました。ただ、推奨アプリのSmarTalkは、エラーがひどく使用せずに、Csipsimpleというアプリを使います。このアプリの設定方法はいろいろなホープページに記載がありますが、マイクの音量をできるだけ下げて、スピーカの音量を適度に上げるのが、エコーに対して最も効果があったように思えます。






posted by bmasterna at 23:24| Comment(0) | 遠隔監視装置