WARAN-ホームオートメーション
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
| × | 1 | ||||
| × | 2 | ||||
![]() |
| × | 3 | |||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 4 | ||||
| × | 2 | ||||
| × | 3 |
必要なツールとマシン
| ||||
| ||||
| ||||
|
アプリとオンラインサービス
> ![]() |
| |||
![]() |
| |||
![]() |
|
このプロジェクトについて
私は安価なホームオートメーションシステムを構築することを計画していました。これをモジュラーシステムにして、センサーやデバイスをあまり変更せずに追加し続けることができるようにしたいと思います。ワラン( W IoT、 A ズレ、 R aspberry Pi、 A rduino、 N RF24L01 +)は、単一のハブと複数のモジュールで構成されるモジュラーホームオートメーションシステムです。このモジュールは、マイクロコントローラーとセンサーを組み合わせて、家のさまざまな場所からデータを収集し、RFを介してハブにデータを送信します。ハブとモジュール間のすべての通信はRFを介して行われます。ハブ用のコンパニオンWindowsPhoneアプリもあります。これは、セットアップを説明する簡単なフロー図です。
Windows IoTを選ぶ理由
私は現在IoTに挑戦しているソフトウェア開発者です。 XAML / C#とVisual Studio(これまでで最高のIDEだと思います)を使った以前の経験では、これらを非常に迅速に実装することが非常に役に立ちました。
なぜNRF24L01 +なのか?
私がワイヤレスオプションを検討していたとき、NRF24L01 +は安価で低消費電力のソリューションとして登場しました。いくつかの非常に強力なライブラリが利用可能であるため、それは私にとって最良の解決策になりました。
WindowsAzureを選ぶ理由
Windows Azureは、習得と適応が非常に簡単です。サービスを起動するために必要な構成がほとんどないため、構成と展開よりも開発に集中できます。 Azureでの以前の経験は、迅速な統合に役立ちました。
<図>
ハブ
ハブはWARANのセンターコントロールセンターです。 RPI2、Arduino Uno、nRF24L01 +で構成されています。 RPI2はWindowsIoTコアを実行します。コントロールセンターとして機能するユニバーサルアプリを実行します。ハブは大型ディスプレイ(通常はテレビまたはモニター)に接続され、モジュールからのデータを確認したり、モジュールを制御したりできます。 RPI2に接続されたキーボードとマウスは、コントロールセンターからのモジュールの追加と削除に役立ちます。これがその回路図です(プロジェクトのWARAN.Hub.fzz。ファイルを参照してください)
<図>
どのように機能しますか?
すべてのモジュールには、ハブがモジュールと通信するために使用する一意のアドレスがあります。このアドレスを使用し、モジュールに名前を付けて、コントロールセンターにモジュールを追加します。コントロールセンター(ユニバーサルアプリ)を追加すると、I2C経由でArduinoUnoにデータが送信されます。 Arduino UnoはnRF24L01 +を介してモジュールにデータを送信し、モジュールはセンサーからデータを読み取るか、受信したデータに基づいてデバイスを起動/停止し、ArduinoUnoにデータを送り返します。 Arduino Unoは、I2Cを介してデータをコントロールセンターに送信します。このデータは、TV /モニターに表示され、クラウドにも送信されます。 Arduino Unoは、RPI2が他のモジュールからセンサーデータを取得するためのインターフェイスとして機能します。上記のプロセスは3つのシナリオで発生します
- モジュールに応じて特定の間隔で
- ユーザーがコントロールセンターを操作するとき(マウス/キーボードを介して)
- トリガーがクラウドから送信されたとき(PubNubに対して)
これが典型的な流れです
<図>
そして、これがハブ内のコンポーネントとモジュールがそれらの間で相互作用する方法です。
<図>
コントロールセンター
コントロールセンターは、RPI2で実行されるユニバーサルアプリです。コントロールセンターは、ユーザーが操作するためのインターフェイスです。モジュールおよびクラウドとも通信します。 WARANコントロールセンターは、クラウドバックエンドとしてAzure MobileServicesとPubNubを利用しています。追加するすべてのモジュール情報は、sqlite dbにローカルに保存され、azureモバイルサービスにも送信されます。これにより、PubNubメッセージまたはプッシュ通知がモバイルアプリに送信されます。ここでコーディングの部分を説明して、この記事を混乱させたくありません。 プロジェクトのソースコード、ドキュメント、導入の詳細については、https://bitbucket.org/arjunganesan/waranをご覧ください(ドキュメントを完全に更新中です。間もなく更新されます)。 これがコントロールセンターの仕組みです
モバイルアプリ
モバイルアプリは、ハブのコンパニオンアプリとして機能するWindows Phoneアプリ(後で他のプラットフォーム用に開発される予定)です。世界中のどこにいても、モバイルですべてのセンサー関連データを見ることができます。モジュールから重要な情報が得られた場合(ガス漏れモニターモジュールからのガス漏れのアラートなど)、プッシュ通知も受け取ります。また、モバイル自体からモジュールで何らかのアクション(Plant Watererモジュールでポンプを起動するなど)をトリガーすることもできます。これらはすべてクラウド経由で行われるため、これらすべてのアクションを実行するために、ハブの近くにモバイルデバイスが存在する必要はありません。
モバイルアプリの外観は次のとおりです
モジュール
このモジュールは、コンポーネントが連携して動作し、RFを介してハブとの間でデータを送受信する組み合わせです。 Arduino Pro Miniとセンサー、RPI2とセンサーなどの組み合わせにすることができます。必要なのは、RFを介してハブからデータ/コマンドを受信し、適切に応答することだけです。これにより、モジュールの可能性が無限に広がります。開始するには、2つのモジュールを追加します
- 植物給水器
- 温度モニター
植物給水器
植物給水器は、植物の水位と植物周辺の環境の温度を監視します。十分な水がない場合は、モバイルアプリにアラートが送信されます。どこからでもモバイルアプリからポンプを起動できます。水位がしきい値を下回るたびにポンプを自動的に始動するように構成することもできます。 Arduino Pro Mini、DHT11、土壌湿度計、nRF24L01 +で構成されています。これが回路図です(プロジェクトのPlantWaterer.fzzを参照してください)
<図>
9Vバッテリーからの電力はArduinoProMiniのRAWピンに供給されます。 arduinoの内蔵電圧レギュレータはVccで5V出力を提供します。これを使用してDHT11に電力を供給します。また、nRF24L01 +に電力を供給するために使用する3.3V電圧レギュレータへの入力として9V電力を供給します。湿度計からの水位は、アナログピンA3で読み取られます。 DHT11からの温度測定値は、デジタルピン6で読み取られます。デジタルピン5では、ポンプの停止を開始するトランジスタまたはリレーに信号を送信します。デモの目的で、DCポンプを使用し、スイッチとしてトランジスタを使用します。そして、これがその仕組みの流れです
<図>
回路をブレッドボードに残したくなかったので、それをパフォーマンスボードに転送しました。コンパクトにしたいのでこうしました。回路図を参照して、独自のレイアウトを考え出すことができます。
<図>











そして、以下はそれがどのように機能するかについてのビデオです。
温度モニター
温度モニターは、部屋(寝室など)の温度を監視し、温度と湿度のレベルを常に監視します。また、ハブまたはモバイルからデバイス(Thermostat、ACなど)のオン/オフを切り替えたり、調整したりすることもできます。デモのために、arduinoに接続されたLEDのスイッチをオフ/オンにします。回路は、Arduino Pro Mini、DHT11、nRF24L01 +で構成されています。以下は回路図です(プロジェクトのTemperatureMonitor.fzzファイルを参照してください)
<図>
9Vバッテリーからの電力はArduinoProMiniのRAWピンに供給されます。 arduinoの内蔵電圧レギュレータはVccで5V出力を提供します。これを使用してDHT11に電力を供給します。また、nRF24L01 +に電力を供給するために使用する3.3V電圧レギュレータへの入力として9V電力を供給します。 DHT11からの温度と湿度の読み取り値は、デジタルピン5で読み取られます。ピン6では、トランジスタまたはリレーに信号を送信し、それを使用してデバイス(サーモスタット、ACなど)の停止を開始します。デモの目的で、LEDライトを使用してデバイスのスイッチのオフ/オンを示します。そして、これがその仕組みの流れです

これが私がそれをパフォーマンスボードに置いた方法です。回路図に基づいて独自のレイアウトを考え出すことができます。
<図>




そして、これがその仕組みです
既知の問題
- 電源-両方のモジュールで数時間以内にバッテリーが消耗します。効率的でポータブルな電源を見つける必要があります。可能な限り、prominiの代わりにattinyプロセッサを使用することを計画しています。それは電力でより効率的でしょう。 attinyに関する私の以前の記事はここにあります。
- I2C同時実行性-RPI2が一度に2つのワイヤーリクエストをArduinounoに送信すると、そのうちの1つが失敗します。私はこれを回避する方法に取り組んでおり、再試行メカニズムも実装しようとしています。
- 一方向通信-現在、ハブが要求を開始し、モジュールがそれに応答します。これは多くのシナリオでうまく機能しますが、一部の新しいモジュールでは、ハブがリクエストを送信せずにハブにデータを送信する必要がある場合があります。
- 範囲-モジュールを隣の部屋に保管し、データを適切に受信できるようにしました。ただし、範囲を拡大したい場合は、ハブのnRF24L01を外部アンテナを備えたNRF24L01 + PA + LNAに置き換えてください。
- セキュリティ-これは開発者が所有することを前提に開発されているため、認証メカニズムを追加しませんでした。必要に応じて、Azure MobileサービスのIDサービスを利用して、Microsoft、FB、Twitter、Google認証をモバイルアプリとハブに統合できます。
今後の計画
これを、人々が自分のホームオートメーションシステムを実装するためのオープンプラットフォームとして作りたいと思います。ハブとモバイルアプリを安定させます。このプロジェクトにさらに多くのモジュールを追加したいと思います。音声ベースのコマンドと応答もロードマップに含まれています。現在、以下のモジュールに取り組んでいます
- ガス漏れセンサー
- 侵入検知器
- デバイスコントローラー(例:コーヒーマシンコントローラー、ライトコントローラーなど)
- ガレージドアオープナー
- いくつかのウェアラブルモジュール
- ハードウェアを使用しないインターネットサービス(天気、Azure Logicアプリ、株価レポートなど)
- ハブの範囲外で動作し、インターネット経由でハブと通信するモジュール(カートラッカー、ペットトラッカー、歩数計など)
これらすべてのモジュールを組み合わせて、ハブを介して1つのユニットとして機能させることで、私が常に望んでいたホームオートメーションシステムが実現します。ハックスターの個別のプロジェクトとして、新しいモジュールを追加していきます。どなたでも新しいモジュールを追加して拡張できます。プロジェクトに新しいモジュールを追加する方法に関するwikiページを更新します。
コード
Bitbucket
回路図
WARAN.Hub.fzz PlantWaterer.fzz TemperatureMonitor.fzz 製造プロセス