オンラインログをゼロから作成する方法

以下は週末のデザインです。 アイデアから実装まで、数晩を費やしました。 この説明は、情報収集システムを実装するために必要な最小限を提供し、オンラインモードで後者にアクセスします。

画像



このメモを書いている過程ですでに、記事が登場しました: オンライン温度制御を備えたWinteringサボテン 。 当初、彼は彼らが先を行くことを恐れていましたが、解決される問題はどちらの場合も近いですが、実装は根本的に異なります。

結果のシステムのアーキテクチャを図に示します:

画像

ご覧のとおり、クライアント部分はマイクロコントローラーに完全に実装されています。 システムは、あらゆるニーズに合わせて簡単に拡張およびカスタマイズできます。



装置



長い間アイドル状態だったKeil MCB2300は、顧客のベースとして採用されました。 このボードはLPC2368マイクロコントローラーをベースにしており、かなり古いですが(現時点では代わりにLPC1768を使用する方が合理的です)、必要なものがすべて詰め込まれています。 ボードにはイーサネットインターフェイスがあり、この場合は世界への窓口です。 I 2 Cインターフェースを介して接続されたBMP085は、昔からよく知られていましたが、データソースとして使用されました。

画像

サーバーをテストし、HTTP要求の動作をチェックするソフトウェアは、Win32アプリケーションの一部として作成されました。

画像

その後、同じロジックがマイクロコントローラーに渡されました。 現在、要求は特定のIPアドレスに宛てられていますが、DNSクライアントを使用することをお勧めします。 理論的には、ホスティングオペレーターはそのアドレス空間内でサイトを転送できます。 NTPクライアントを追加して、タイムスタンプ付きでデータをサーバーにすぐに送信することもできます。

このプロジェクトは、マイクロコントローラーでTCP / IPプロトコルを使用する最初のテストです。 この例は、EasyWebに基づいています。EasyWebは、Ethernetを最初のボードとする多くのボードに提供されています。 メインプログラムサイクルは曲がっていたことがわかりましたが、私はそれをとかしたくありません。 必要な機能は既に実装されていますが、このアプリケーションの内部構造がより気に入っているため、このアプリケーションをuIPスタックに転送したいと思います。

プログラムのメインサイクル:

  1. センサーからデータを読み取ります。
  2. 接続を開きます。
  3. HTTP GET要求をサーバーに送信します。
  4. 10秒が経過し、サーバーと通信するためのプロトコルが経過していない場合、タイムアウトにより接続が切断されます。
  5. 1〜5分待っています。 この待機により、データ保存間隔が設定されます。
そして、これがデバイス全体の外観です。





サーバー



サーバー部分は共有ホスティングにデプロイされました。 それの主な要件:PHPサポート。 データはCSVファイルとして保存されます。 スクリプトは可能な限りシンプルで、機能は2つのファイルに分かれています。



すべてのデータは、GET要求の一部としてサーバーに送信されます。

  GET http://server/add.php?ファイル= temp&data = 23.4; 99809 HTTP / 1.0 \ r \ n \ r \ n 


次に、CSVファイルの内容を示します。

  1418069433; 23.4; 99809
 1418069443; 23.4; 99811
 1418069453; 23.4; 99818
 1418069464; 23.4; 99801 


各行には、タイムスタンプ、温度、および圧力がパスカルで表示されます。

グラフィカル出力



すべてを美しく見せるために、サーバー上で他の形式のデータ表示を整理できます。 Highchartsをチャート/グラフのライブラリとして使用しようとしました。 それを使用すると、この設計を行うことができます。

画像

これはライブグラフではなく、外観のスクリーンショットです。 ライブビューでは、グラフがリンク( 温度圧力)で表示できます。

UPD:両方のグラフを1ページに結合しました: 温度/圧力



ファイル



参照資料




All Articles