複数の子機センサーのデータを収集し、Raspberry Pi3によるWeb(CGI)サーバーに送るための回路です。
現在のところはブレッドボードと汎用PICボードによるバラック配線のままで動作させています。
1.回路図
2.製作したバラック回路
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サーバー
湿度を正確に測る