更新2021年12月
2012年から運用していた気象システムが今年8月雷害に遭い、完全に壊れたので再度構築した。



仕様
 日射計は手頃のものがなく、日射データの収集の必要性もないため温度・湿度のみ観測するものとした。
    CPU MEGA88P  ストック品
    LCD RH40094RH HD44780U互換 amazonで入手
    温湿度センサー  OSOYOO DHT22 amazonで入手 (プルアップ抵抗、パスコン付)
    wifiモジュール Xbee S6  2014年頃購入したストック品(5V/3.3VDD付アダプター流用

回路図
 

製作過程
 
久ぶりの電子工作だったので思った以上手こずった。
 DHT22はamazonから安価で入手したものだったがラズパイからは簡単にアクセス出来た。しかしAVRからのアクセスはI2CLCD温湿度計
 使ったソースを流用したが思った応答が得られず、相当悩やみI/Oポートの入出力切替方法を見直して解決した。
 
 AVRソース
  DHT22から約3秒周期で、温湿度を読取りLCDに値を表示させると同時にXbeeにテキスト送信する。
  →Xbeeから送信されたデータをルータを介してPCで受信し、エクセルVBA処理して30分毎HPを更新する。(この辺は前システムを参照)

  エクセルVBA
  Xbeeのデータを受信し、データの処理保存、グラフを図にしてHPに送信(更新)する
  basp21のコンポーネントを利用して、Xbeeからのデータ受信、webサーバーへのFTP送信を実施
  VBAの設定 set_valで webサーバー、ユーザ名、パスワードを設定する


 Xbeeの設定方法(XCTU)もほとんど覚えておらず苦労したので、覚えとして要点ここに書き留める
  XCTUのインストール(v.6.5.6  windowsx86:x64版)
    XCTUの起動、xbeeの認識(USB接続ボードを利用してPCに接続)
     左上のxbee虫メガネマークをクリックして、Xbeeサーチするが以下の画面で見つけられない。(壊れている?)
     →接続ポート設定でXbeeボーレートを合わせていないといけなかった。
       デフォルトは9600と115200と思われる。確か昔、19200bpsに変更していたので、それも選択して再サーチしたら無事見つかった。
     それでも検出されない場合は、レスキュ―(メニューバーのスパナマークの中)を実施する。(更にファームウエアの更新が必要な場合も)


 ファームウエアの更新(レスキュ―後、対応するものがない場合も同様)
  今回使用するxbeeはS6で、昔のデバイスなのでファームウエアの更新も必要と思ったが、アップデート画面でxb24 WF用が見つからなかった。
  QAを見て、Legacy Radioのデバイス用をインストールして解決した。


 xbeeの設定


   wifi接続 右側上のほうのActive scan(または左側xbee表示上の右中のアンテナマーク(4つのまる)をクリックして、接続wifiルータを選び
         そのパスワードを入力する。 接続できると画面のID、MY、MK、GWが表示される 
         IP TCP、MA static(IPアドレス固定 MYで設定)、MY IPアドレスを任意で設定(ルータネットワーク上の空きアドレス)

 
 PK ルータのパスワード(EE セキュリティモード WPA or WPA2)、BD 通信ボーレート

以上を設定後、tera termと接続して動作を確認した。
ホスト:Xbee IPアドレス、TCPポート9750(設定のDEデフォルト値 16進2616)、サービス Telnet、シリアルポート ボーレート19200bps


以下旧システム
************************************************
遠隔気温・日射観測簡易システム  
   更新H24.3.4

 ある目的のために気温と日射を観測しそれを、インターネットを利用して遠方からの監視が出来ないかと考えていたところ、
Webサーバー機能を持ったXPORTなるものがあることが分かったので、それとPC等を使った簡易(30分更新)な遠隔観測システム
を作ることにした。
 日射計はずっと探していたがやっと比較的安価(それでも高い)で入手できたので、それを使用した。
  テスト中 


システム構成
 最初はXPORTだけで、インターネット経由の監視が簡単にできると早合点したが、イントラネット(ローカルLAN)内でしか
 見にいけないし、複数からのアクセスが出来ないので、XPORTはマイコン(シリアル信号)をLAN信号に変換しローカルLAN上
 でインターネットに常時接続したPCにデータを送り、そのPC上のVBAでサーバーにデータを定期的にFTP送信する構成とした。
  *インターネット側からXPORTへのアクセスは、私の理解不足かもしれないがグローバルIPアドレスの取得など結局自宅の
    PCをサーバー化することと同じことが必要なので、サーバー化しないで実現する方法をとった。
 

    CPU MEGA88P  4MHz動作(本体校正付RC発振器使用)
    LCD HD44780U  16x2行
    温度センサー    LM60  −25〜+125℃(AD変換上測定最高温度は約108℃で、分解能は0.2℃)
    日射センサー    詳細不明 0〜1250W/u 出力 0−2.5V 電源3-5V
    XPORT        04を搭載した入門キットを使用(RS232Cレベル変換付(今回不使用)で単体より安く入手)
    無線LANコンバータ  MZK-MF300N2(PLANEX FFP-PKR03) XPORTを直接(無線)ルーターにケーブルで接続すれば不要。
                 測定場所を自由に移動できるようにXPORTを無線LAN子局化するため使用。
   (XPORTが壊れたあと、XPORT+無線LANコンバータからXbeewifiに変更)
 測定部およびXPORTの回路図


処理の流れ
  1秒間隔で温度・日射センサーを読みA/D変換して、気温0.2℃ステップ、日射2WステップでLCD表示させると共に、シリアルデータ
 をXPORTに送ります。XPORTは、自動的にそれをLANデータ(ソケット通信)に変換します。
  LAN上のPCは、EXCELのVBAを利用しXPORTのIPアドレスとポート番号を指定してTELNET通信(仮想COMでも可)により
 データを受信します。それを、30分毎温度は最高・最低値を、日射は平均値を記録しグラフを画像化して、HPのサーバーにFTP送信します。
  1日分の記録がとれたら、グラフの日替処理およびデータをcsv保存します。
  VBAのTELNETやFTPは、
basp21のコンポーネントを利用しています。
  AVRのソースおよびVBAともにそれほど難しいことはやっていない。basp21を使えば簡単にインターネットにデータ送信ができました。
   
  VBAのHPサーバーの設定やPCホルダーの設定を自分の環境に変えて下さい。
    Sub set_val()
      dn = "C:\xport\"    ''PCホルダー(送信元)
      Server = "aaa.bbb.ne.jp"  ''ホストアドレス
      User = "name"           ''ユーザー名
      Pass = "password"          ''パスワード
      Folder = "html/xport"      ''送信先フォルダ

   
AVRソースEXCELVBA

XPORT・ルーターの設定
 ルーターは、基本設定では自動的にローカルIPアドレスをXPORTに振ってしまいアドレスが固定されないのでPC側からアクセスが
 しやすいよう、IPアドレス固定するように設定した。(XPORT側でも固定) 今回:192.168.2.110
 XPORTの他の設定はデフォルトのまま。ただ、トリガーによるメール送信機能があるのでこれも試してみた。メールサーバー、送信先
 等の設定とトリガーは汎用I/Oポート出の設定はいろんな解説がすでにあるので、シリアルデータでかけてみた。 
 温度が30℃を超えたときに表示するよう、2バイトデータが’3’,’0’として確認したら、問題なく動作した。

表示HP
 表示させるHPは、グラフが画像として30分毎アップロードされてくるのでそれを表示させるだけ です。(10分毎自動リロードさせる)
 過去1週間を切替表示できるようにしてます。


設 置
 温度センサーは日射が直接当たらず風通しのよい場所、日射センサーは南向きの日当たりの良い場所と場所の選定に苦労した。
 無線コンバータと無線ルーターまでの距離は約30m程度あるが問題なく動作している。

シリアル通信エラーと対策
 当初から通信データの文字化けが多少発生していたが、気になるほどではなかった(エラー率数%)が屋外に機器を設置した後、
 環境が変わったせいかエラー率が50%以上になるときもあるようになった。
 最初は接触不良やノイズの影響と思われ、接続確認やノイズ対策を施したが改善されなかった。
 また、温度の影響を減らすように、包装材で包んで保温をしたが効果がなかった。
 冷え込む夜間の発生率が多いので、校正付RC発振器周波数の温度変化により変動しその影響で、シリアル通信の速度が変化し
 エラーとなっていないか確認した。
 当初、RC発振器周波数の校正はデフォルトのままで4MHzよりやや高め(サンプル数から想定で4%程度)になっていたが、
 室温10度前後で問題なく通信できており気温が下がっても4MHzに近づく方向なので、影響しないと考えていた。
 今回気温0度程度で、エラーがある程度出ている状態で周波数を測定した。想定では、4MHzを下回っていると思っていたが以外
 にも4.18MHz程度で10度の時とほとんど変わっていなかった。
 ということは、温度変化による影響はCPU側にはあまりなく(温度で自動補正?)、むしろXPORT側の通信速度の変動(低下)が
 大きくなっていると考え、CPUの速度をRC発振器周波数の校正により3.9MHz(-3%)程度にしてみた、するとエラーが全くでなく
 なった。(−数度〜+10度前後)
 真夏の気温でどうなるかわからないが、なんとなく良さそうだ。
 AVRのデータシートによるとRC発振器の周波数は、当然温度により変動する特性図が載っているが、他方校正バイトの周波数特性
 を見ると、温度のパラメータによる差は殆ど無いように読み取れる?
 
 
  測定部 車庫の屋根裏に固定
  日射センサー 車庫の屋根に南向き約30度で設置
   温度センサー 車庫の軒下に設置