環境監視システム自作 親機2 データ収集 (TWE-Lite+PIC+Serial出力)

複数の子機センサーのデータを収集し、Raspberry Pi3によるWeb(CGI)サーバーに送るための回路です。
現在のところはブレッドボードと汎用PICボードによるバラック配線のままで動作させています。

1.回路図

親機2回路図

2.製作したバラック回路

%e8%a6%aa%e6%a9%9f2%e3%81%a8raspi3

親機2 データ収集回路 と Raspberry Pi3

3.各部について

① 小型無線ユニット: TWE-Lite DIP-SMA(外部アンテナ用SMAコネクタタイプ)

 ファームウェアを 無線タグアプリ の Parent に書き換え
  Samp_Monitor_Parent_JN5164_1_5_5.bin
  書き込みツールは USBアダプターTWE-Lite R  と TWE-Programmer.exe
 設定変更(インタラクティブ)モードに入って設定
  データ形式は Simple Tag V3 形式 とする
 外部アンテナ
  コリニアアンテナ F2405L(利得5db) 第一電波工業
  (屋外に設置 5mの同軸ケーブルにて引き込み)

② 汎用PICマイコンボード
自作の実験用ボードで、28PのPICマイコンを搭載できPickit3によりプログラムできます。今回はPIC16F886を搭載しました。
シリアルポートが2CH必要となります。CCS-PCMコンパイラを使っているのでCCS社のHPなどで調べたところ次のようにすれば良いことが分かりました。

例えば次のように定義し
 #use rs232(baud=38400, xmit=PIN_C6, rcv=PIN_C7,STREAM=ch0)
 #use rs232(baud=9600, xmit=PIN_A6, rcv=PIN_A7,STREAM=ch1)
プログラム中で
 CH0 の入出力は、fgetc(ch0)、fputc(c,ch0)、fprintf(ch0,"abc123")
 CH1 の入出力は、fgetc(ch1)、fputc(c,ch1)、fprintf(ch1,"abc123")
のようにする

シリアルポートの割り当て

CH0(内蔵EUSART):TWE-Lite に接続。速度:38400ボー
CH1(ソフトウェア):FT232RLに接続。速度:9600ボー

TWE-Liteの方がスピードが速くタイミングが厳しいので、CH0(内蔵EUSART)とします。
CH1のRasPi側ですが、受信プログラムは Python3スクリプトです。安定した通信のために速度を9600ボーとしました。(19200ボーでも動作は確認)

③ FT232RL
秋月電子のUSB-シリアル変換モジュールです。新しく購入するなら同じ秋月電子の AE-FT234X の方が簡単で良いと思います。USBケーブルでRasPiのUSBポートに接続し、シリアルポートとしてデータを転送します。

4.PICマイコンのプログラミング

プログラムをCCS PCMで作成しPikkit3で書き込みました。

① TWE-Liteからのデータ受信
この部分は親機1(個別監視器)と同じです。シリアルポート(CH0)よりTWE-Lite(Parent)の信号を割込により受信します。

② データ抽出とシリアルポート(CH1)への出力
受信した Simple Tag V3 形式のシリアルデータから、子機無線ユニット識別ID、温度データ、湿度データ、信号強度(0~255) を取り出します。また、データの信頼性を確保するために、子機ごとの正常な通信のインターバルを600秒(=10分)までの値で求めています。
以上の子機ごとの最新データを、タイマ割り込みにより約1分毎にシリアルポート(CH1)を通じて RasPi へ転送しています。
なお、正常な通信のインターバルが600秒を超えたときは、その子機のデータは転送しません。

関連ページ

環境監視システム自作 概要
環境監視システム自作 子機 温湿度センサーユニット
環境監視システム自作 親機1 特定子機監視器
環境監視システム自作 親機2 データ収集 (TWE_Lite+PIC+Serial出力)
環境監視システム自作 Webサーバー(RasPi + Python)
環境監視システム自作 sqlite3によるデータ蓄積とグラフ表示
環境監視システム自作 matplotlibによるグラフ表示
環境監視システム自作 windows+Apacheサーバー
湿度を正確に測る