ホームオートメーション

はじめに



ある晴れた日、水道メーターの測定値に関するユーティリティへの不注意な通知のため、私はお湯の義務の通知を郵便で受け取りました。 この時点で、ユーザーの長い不在下で電気温水器をリモートでオン/オフするように「トレーニング」するために、「Roving Networks」からWiFi無線モジュールを習得するためのアイドルの好奇心。 そのため、これらのタスクと「スマートホーム」のアイデアのいくつかを実用的な実装に減らすことにしました。 そしてもちろん、私がよく知っているテクノロジーを使用するのは面白くないので、できるだけ新しくて面白いものを使用することにしました。



問題の声明



アパートには、2つの冷水計、2つの温水計、電気計があります。 1.5 kWの容量のボイラーもあります。 お湯が実際に不足しているため、対応するメーターは、常にほぼゼロに等しい測定値を取得するためにのみ使用されます。 自動化の最初の段階では、冷水計、電気計、ボイラーのうち1つだけが処理されます。 これに従って、問題のステートメントが作成されました。



1.冷水計と電気計の測定値を取得するプロセスを自動化します。 実際に使用されていない水道メーターについては、一定値のプラグを用意してください。

2.メーター読み取り値を使用したユーティリティへのメール転送を実装します。

3.瞬間的な消費電流と水温をなくし、ボイラーをリモートでオン(オフ)にするメカニズムを開発する。

4.上記のメカニズムを管理するためのWebサービスを開発します。



動作原理



画像

上の図では、設計されたデバイスの動作原理を説明しようとしました。 ユーザーインターフェイスとして機能するWebサービスは、Telnetプロトコルを介して、独自のI / Oポート、ADC、およびUARTインターフェイスを管理する機能を提供するWiFiモジュールに接続されます。 独自の入出力ポートとADCポートを使用してボイラーの電源キーを制御し、UARTを介してマイクロコントローラーにアクセスして、カウンターと温度計の読み取り値を読み取ります。 相互作用をより正確に把握するために、個々のモジュールを下から順に見ていきます。

センサー



センサー


たまたまこのシステムの開発が始まった時点で、「冷たい」水道メーターを検査のために水路に持って行く義務がありました。測定値を取得します。 この場合、インターフェイスはメーター内のリードスイッチに接続されたワイヤーであることが判明し、10リットルの水がメーターを通過するたびに接点が閉じるようになりました。

残念ながら、NIK 2102-02電気メーターにはテレメトリック出力がなかったため、LEDインジケーターの点滅回数をカウントすることが決定され、ドキュメントによると、1キロワットあたり6400回の点滅が発生しました。 この目的のために、最も近いラジオ市場で、私はnonameフォトトランジスタメニューを購入しましたが、その中にはLEDインジケータに適切に反応するものがありました。

温度計として、私はDS18b20温度計を使用しました。これは1wireネットワークのファンに馴染みがあり、Atiny2313マイクロコントローラーと簡単に友達になれました。

長い間、電流センサーを選択しました。 その結果、私はACS712 30Aに決めました。その動作原理はホール効果に基づいています。 センサーには外部電源が必要で、出力では、Upit / 2に等しい基準電圧に対する電流強度に比例した電圧値が出力されました。



画像



電源キー


すでに述べたように、給湯器の容量は約1.5 kWであるため、リレーを使用してこのような負荷を制御することをお勧めします。 そして、そのようなリレーは従来の過電圧保護ユニット内で発見され、かなり前にスーパーマーケットで購入されました。 このユニットのボード上で、トランジスタキーのベースを提供するトラックを切断し、WiFlyモジュールの入出力ポートにネジ止めしました。WiFlyモジュールの信号は、トランジスタを使用して事前に増幅されています。 ブロックケースは非常に大きく、さらに電流センサーが含まれていました。 したがって、過電圧保護ユニットのハウジングには、電流センサーと一緒に電源スイッチ全体が作られました。



画像



マイクロコントローラー


アプリケーションプログラマとして、ハードウェアに出くわすことはめったになく、MKに出会うこともなかったので、インターネットでの使用例がたくさんあるAttiny2313を選びました。 さらに、AVRマイクロコントローラー用のUSBaspプログラマーは非常に安価で、わずか約9ドルでした。 Cで書かれたファームウェアは、 github.com / AndriiArtemenko / UARTSensorsReaderにあります。 大まかに言えば、MKはカウンターによって開始された外部割り込みのカウントに従事しており、電源がオフになると、その値を不揮発性メモリーに保存します。 MKは、WiFlyモジュールからUARTを介して外部コマンドを受信し、応答でデータを送信することでそれらに応答します。 これまでに、合計5つのコマンドをプログラミングしました。



「A」-水道メーターの値を取得します。

「B」-電気メーターの値を取得します。

「C」-温度計の値を取得します。

「D」-水道メーターの値をリセットします。

「E」-電気メーターの値をリセットします。



ds18b20温度計は、外部ライブラリ1wireおよびds18x20_v2を使用して、通常のポートを介してMKによって問い合わせられます。 電源回路に電気がない状態でMKの状態を維持するために、ファラッドごとにイオニスターがあります。

MKを使用する際の主な問題は、タイマーを使用してプログラムで抑制された水道メーターの接触音が原因でした。



画像



WiFiモジュール


Wi-Fiモジュールとして、WiFlyとしても知られるRoving NetworksのRN-171を使用しました。 実際、これは単なるWi-Fiモジュールではなく、独自のI / Oポート、ADC、UART、WEB、FTPクライアントを備えた内蔵型デバイスです。 非常に興味深いことで、すべての愛好家に読んでおくことをお勧めします。

WiFlyは、telnetポートがwiflyモジュールに転送されたwifiルーターを介してホームネットワークに接続するように構成されました。 したがって、外部からモジュールを制御することが可能になりました。

I / Oポートの1つは電源キーを制御するように構成され、ADCの1つは電流センサーの読み取り値をデジタル化します。 UARTポートはMKに直接接続されています。



画像



回路図


巨大なテストベンチとコンポーネントのセットを自宅ですべての機会に維持する必要がない21世紀に生きることはどれほど良いことでしょう。 Proteus 7 Professionalで回路図をモデリングしましたが、マイクロコントローラーの動作に関係する部分のみです。 ProteusのRN-171モデルがインターネット上で見つからなかったため、WiFlyモジュールに関する部分を単に終了しました。 同じ理由で、図はフォトトランジスタの代わりに、フォトカプラ、カウンタの代わりのボタン、および電圧安定器の代わりに、別の出力を示しています。 スキームの残りの部分は非常に正確で、「鉄」のプロトタイプに対応しています。 このデバイスの電源は、5V携帯電話の充電ユニットでした。 電流センサーと出力ポート信号を増幅するトランジスターのみから直接供給されます。WiFlyとMKは3.3Vデバイスであり、スタビライザーがインストールされています。 現在、システムはテスト段階にあるため、回路基板に実装されています。



画像

画像



Webサービス


Ruby on Rails 3を使用してWebサービスを作成することにしました。これは、この自慢の獣と一緒に仕事をしたかったからです。 最初は、Cloud Foundryでプロジェクトをホストしたかったのですが、アカウントを待たずにHerokuにロールダウンしました。 Webアプリケーションのソースコードは、 github.com / AndriiArtemenko / SmartFlatにあります。

アプリケーションは、gems devise、delayed_job_active_record、liquid、simple-navigation、log4rなどを使用しました。



現時点では、収集されたデータの表示に加えて、アプリケーションはメーター読み取り値付きの手紙をスケジュールに従って適切な当局に送信し、ボイラーの電力を管理することができます。 もちろん、これでは十分ではありませんが、最初のタスクは完了しており、機能を拡張する計画はすでにあります。



画像

画像

画像



結論の代わりに



私は暇なときにこのタスクの実装に従事していました。そのため、約3か月を費やしました。 この間、私はプロジェクトのさらなる発展の方向性とその関連性を実感しました。 近い将来、何らかの支払いサービスを通じて公共料金を自動的に支払う機能を追加したり、トイレの水を緊急遮断するためのデバイスを追加したりする予定です。



謝辞



プロジェクト全体を通して、Radiokotフォーラムのユーザーからハードウェアの設計に多大な支援が提供されました。 皆さん本当にありがとうございます!



All Articles