以下は週末のデザインです。 アイデアから実装まで、数晩を費やしました。 この説明は、情報収集システムを実装するために必要な最小限を提供し、オンラインモードで後者にアクセスします。
このメモを書いている過程ですでに、記事が登場しました:
オンライン温度制御を備えたWinteringサボテン 。 当初、彼は彼らが先を行くことを恐れていましたが、解決される問題はどちらの場合も近いですが、実装は根本的に異なります。
結果のシステムのアーキテクチャを図に示します:
ご覧のとおり、クライアント部分はマイクロコントローラーに完全に実装されています。 システムは、あらゆるニーズに合わせて簡単に拡張およびカスタマイズできます。
装置
長い間アイドル状態だったKeil MCB2300は、顧客のベースとして採用されました。 このボードはLPC2368マイクロコントローラーをベースにしており、かなり古いですが(現時点では代わりにLPC1768を使用する方が合理的です)、必要なものがすべて詰め込まれています。 ボードにはイーサネットインターフェイスがあり、この場合は世界への窓口です。 I
2 Cインターフェースを介して接続されたBMP085は、昔からよく知られていましたが、データソースとして使用されました。
サーバーをテストし、HTTP要求の動作をチェックするソフトウェアは、Win32アプリケーションの一部として作成されました。
その後、同じロジックがマイクロコントローラーに渡されました。 現在、要求は特定のIPアドレスに宛てられていますが、DNSクライアントを使用することをお勧めします。 理論的には、ホスティングオペレーターはそのアドレス空間内でサイトを転送できます。 NTPクライアントを追加して、タイムスタンプ付きでデータをサーバーにすぐに送信することもできます。
このプロジェクトは、マイクロコントローラーでTCP / IPプロトコルを使用する最初のテストです。 この例は、EasyWebに基づいています。EasyWebは、Ethernetを最初のボードとする多くのボードに提供されています。 メインプログラムサイクルは曲がっていたことがわかりましたが、私はそれをとかしたくありません。 必要な機能は既に実装されていますが、このアプリケーションの内部構造がより気に入っているため、このアプリケーションをuIPスタックに転送したいと思います。
プログラムのメインサイクル:
- センサーからデータを読み取ります。
- 接続を開きます。
- HTTP GET要求をサーバーに送信します。
- 10秒が経過し、サーバーと通信するためのプロトコルが経過していない場合、タイムアウトにより接続が切断されます。
- 1〜5分待っています。 この待機により、データ保存間隔が設定されます。
そして、これがデバイス全体の外観です。
サーバー
サーバー部分は共有ホスティングにデプロイされました。 それの主な要件:PHPサポート。 データはCSVファイルとして保存されます。 スクリプトは可能な限りシンプルで、機能は2つのファイルに分かれています。
- add.php-ログファイルにデータを追加するスクリプト。 書き込み用のファイル名と書き込み用のデータを持つデータパラメーターを取得します。 スクリプトの最初の列はタイムスタンプを追加します。 また、ログファイルをクリアできるクリア機能もあります。
- get.php-ログファイルのデータを表示します。 ファイル名を持つ唯一のファイルパラメータを取得します。
すべてのデータは、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ページに結合しました:
温度/圧力 。
ファイル
参照資料