初期設定を利用して、簡単にインターネット経由のテレメータ観測を行う方法について説明します。
Telemetra-1の基本機能は3成分の加速度データをサンプリングして
WINシステムの共有メモリに書き込むことですが、
それにデータ送信プログラム1個を追加するだけです。
Telemetra-1を簡単にテレメータにする設定
以下に出てくる設定ファイル_win, dhcpcd.conf, wpa_supplicant.confは
付属の設定用USBメモリにサンプルのコピーが入っており、これをWindowsやMacのエディタで
編集後Telemetra-1に挿して、再起動することで設定は可能です。
- ネットワークの設定
-
家庭用ルーター等の環境で、DHCPサーバーを利用できるのであれば、
初期設定のままでLANに接続すればインターネットに接続できるはずです。
USB接続されたスマホでのテザリングやモバイルルーターでも同じです。
Wifi接続の場合は/etc/wpa_supplicant/wpa_supplicant.confの設定が、
DHCPサーバーが利用できない場合は/etc/dhcpcd.confの設定が、それぞれ必要です。
いずれの場合もTelemetra-1はルーター(ファイアウォール)の内側からデータのUDPパケットを
インターネット上の受信側に向けて送信することになりますが、多くのルーター/ファイアウォールでは
内側から外側向けのパケットは制限されず、その逆向きもstateful inspectionにより一定の
時間は通されるようになっています。そのため受信側からの再送要求パケットも通ります。
- /home/pi/_winの設定
-
初期設定の/home/pi/_winには「設定方法」で説明した通り、
w355とsend_rawの
2つのプログラムが書かれており、
sudo /home/pi/telemetra/w355 [sr] [ch] 11 100 &
/usr/local/win/bin/send_raw -1b 1400 11 [server] [port] &
この中で次の4つのパラメタを
書き換えれば実際のテレメータ観測が可能です。
- sr:サンプリングレート
- ch:チャネル番号
- server:送信先のIPアドレスまたはホスト名
- port:送信先ホストのUDPポート番号
受信側
受信側としては、グローバルアドレスをもち、
recvt等の
WINパケット受信プログラムを
実行するホストを用意する必要があります。受信側ホストでの設定については
WINシステムのマニュアルをご覧ください。
- 既存受信ホストで受信
-
すでにWINシステムによるデータ受信・処理システムを運用していて、グローバルアドレスに
受信ポートが開いている場合は、それを利用するのが簡単です。
- ファイアウォール内にあるホストで受信
-
ファイアウォールにパケット転送の設定をすれば、インターネットから届いた
データのUDPパケットをファイアウォールの内側に置かれたホストで受信できるようになります。
例えば、グローバルアドレスのUDPポート9000番に届いたパケットをLAN内のmyhostの同ポートへ
転送する、といった設定です。
- 商用サーバー(クラウドサーバー)の利用
-
UNIX系OSで運用される商用サーバーを借りて、WINシステムを
インストールすればデータの受信・収録・処理が可能です。月額1000円以下から利用できるようです。
- 流通網上の拠点サーバーで受信
-
地震データ流通網上の拠点に、インターネットからのデータ受信用ポートが用意されている
かもしれません。これについては流通網の管理者に問い合わせてみてください。
- その他
-
テレメトラによるデータパケットの中継または収録サービスをご希望の場合はお問い合わせください。
その他の情報
- 有線LANかWifiか
-
WifiのついてないRaspberry Pi Model B+ 仕様でも、USBドングルを使えば
容易にWifiを利用できるようになります。ただし、もし可能なら、より安定で
トラブルが少ない有線LANを使うのが賢明です。
特に台数が多い実験などの場合はWifiは配線がなくて楽ですが、同じアクセスポイントを
利用する台数が多くなるそのような場合には特に、Wifiではパケット消失が増えます。
多くの場合は再送で復活しますが再送要求パケットが消失した場合はデータ欠落となります。
- Raspberry Pi Model B+ 仕様(B+)か Raspberry Pi 3 Model B+ 仕様(3B+)か
-
発熱は明らかに3B+仕様のほうが大きく、室内で運用した場合に筐体温度が体温程度に
なります。B+仕様の場合は室温程度です。
send_raw
による有線LANでの単純なテレメータ用途であれば、性能的にはB+仕様で十分です。
Raspberry Pi内での高度なデータ処理や蓄積が必要な場合は、内容によっては3B+仕様が必要になるかも
しれません。
- 動作状態の把握方法
-
伝送されてくるデータによる以外にTelemetra-1の日常の動作状態を把握する必要がある場合は、
状態を送信させる設定が必要です。そのために、/home/pi/telemetra/send_status
と/home/pi/telemetra/umsgが参考になるかもしれません。
/home/pi/telemetra/send_statusはTelemetra-1のさまざまな状態を
取りまとめて、内部で/home/pi/telemetra/umsgを使ってサーバーのUDPポートへ送る
シェルスクリプトです。サーバー側ではやはりumsgを使ってそれを受信します。
umsgはテキストを1行1パケットの形でUDP送受信するプログラムで、使い方は次の通りです。
umsg (-rtfhu) (-i [id]) [host] [port]
umsgは送信モード(デフォルト)では標準入力から読み込んだテキストを
1行1パケットの形式でhostのUDPポートportへ送信します。
受信モードではUDPポートportで受信したデータを標準出力へ書き出します。
このときの第1引数hostはダミーです。
- オプション
- -r 受信モード。
- -t 受信モードで行頭に時刻を挿入する。
- -f 受信モードで行頭に送信元のIPアドレスとポートを表示する。
- -i [id] 送信モード(デフォルト)で行頭に文字列idを挿入する。
ほかにloggerコマンドを使ってログをサーバーへ送る等の方法もあります。
- MTU値の設定について
-
send_raw等の
送信プログラムでのMTUのデフォルト値は1500ですが、光やモバイルなどのアクセス回線を通ると
それより小さくなるのが普通です。それを調べるには、Raspberry Piから適当なサーバーに
対し、いろんなパケットサイズで
ping -M do -s [size] [server]
を実行してみるのが簡単です。/home/pi/_winに初期設定してある
send_raw
では MTUを1400にオプション設定してあります。この値であればほとんどの場合に問題ないと思われます。
-
感度の較正について
-
ADXL355の感度には1~1.5%程度のばらつき(個体差)があります。これを較正するためには、
出力中の共有メモリ上の特定のチャネルのデータを
shmdump -t 共有メモリキー チャネル番号
で数値表示させて既知の重力値と比較すると簡単です。
鉛直上向きにした成分のデータが約25万(2Gモードの場合)になります。
-
設置方向について
-
データはUSB/LANコネクタ面を北に向けるとX,Y,ZがそれぞれE,N,upになる右手系ですが、
実際の設置方向は上下も含め制約はありません。X, Y, Z軸の向きを示すシールが筐体上面に
(容易に剥がせるよう糊で)貼ってあります。