メガ2560のスマートホーム。arduinoを使用して独自の「スマートホーム」を設計および整理する

科学技術の活発な発展の時代に、電子機器はますます人々の生活に浸透しています。 徐々に、人が自分の手で実行したすべての機能は、機械の鉄の肩にかかります。機械は、多くの場合、より良く、より速く、より良く機能します。 スマートカーはよりアクセスしやすくなり、すべての家庭に入る時が来ています。

今では、基本的な知識を持っているほとんどの人が、日常生活に役立つ電子機器を自分の手で組み立てる機会があります。 インターネットには、多数のテーマ別フォーラム、詳細な推奨事項が掲載されたサイト、既成の計画、経験豊富な設計者が共有するプログラムコードがあります。 基本的に、そのような自家製の開発は、彼ら自身の生活、彼らの家を容易にするために作成されます。 したがって、それらはさまざまなコントローラーになります。つまり、特定の情報を読み取り、それに基づいて特定の機能を実行できるデバイスです。 家(アパート、部屋)に、日常生活のさまざまな側面を制御できるセンサーが備わっている場合、そのような家は「スマート」と呼ばれます。

「スマート」住宅のプロジェクトは現在、世界中で活発に議論され、実施されています。 原則として、これらは、リソース効率が向上し、日常生活で発生するすべてのプロセスが最大限に自動化された住宅です。 このようなプロジェクトには、独自のコストと適用条件があります。 自分の家を「スマート」にする方法を理解するために、家に「心」を与えるものをより詳細に理解してみましょう。


「スマート」ホームとは何ですか?

最大の表現では、「スマート」ハウスは、人の日常生活のすべての領域が機械によって制御される構造です。 サイエンスフィクションの映画は、コンピューターが人を起こし、仕事のために彼を集め、彼のために朝食を準備し、彼と話すなど、そのような家の例をしばしば示します。 残念ながら、マシンがまだ適切な開発レベルに達していないため、現代の野心的なプロジェクトはまだ実施されていません。 したがって、それらの機能は、光、エネルギー、湿度、家の中の温度などを制御することに限定されています。 原則として、プロのスマートホーム企業によるそのようなプロジェクトはかなりの費用がかかり、幅広い消費者がアクセスすることはできません。 しかし、いつものように、別の方法があります。自分で「スマート」な家を組み立てる方法です。


どうやってするの?

「スマート」ホームとは、情報を読み取り、それに基づいて特定のコマンドを実行するセンサーが接続されたコントローラーのセットにすぎないことを理解する必要があります。 たとえば、暖房コントローラー。 一定レベル以下の温度低下を検知すると、部屋への熱供給をオンにします。 自動エアコンはこの原理で動作します。 そして「スマート」な家では、センサー付きのそのようなコントローラーがいたるところにあり、タスクの最大数を制御することができます。 当然のことながら、「スマート」な家を作るためには、まず頭の中で小さなプロジェクトを開発し、人生のどの領域を改善したいのか、そしてこれに何が必要なのかを考慮に入れます。

ですから、あなたの家をより自給自足にするためには、あなたが使用できるコントローラーが必要です。 実際には、それらを購入するだけでは十分ではありません。それでも、それらをプログラムし、外部の情報源を接続して、それらを設定する必要があります。 適切な仕事。 ここでは、特定の分野の知識が不足しているという問題があります。これらのデバイスの多くは操作が非常に難しく、操作できる人が少ないためです。 しかし、需要がある場合(自分の手で動作する電子機器を組み立てたくない人はいますか?)、対応するオファーもあります。 ある会社は、現在、使いやすく理解しやすい電子機器の最も人気のあるサプライヤーです。 これはArduinoの会社です。

このシステムの検討を開始する前に、このシステムにはユニバーサルスマートホームプロジェクトがないことを考慮する必要があります。 各ユーザーは、独自の技術ソリューションを使用して、独自の方法で実装する独自の特別なプロジェクトを作成します。 これは、システムの利点の1つであり、以下で検討します。

Arduinoシステムとは何ですか?

Arduinoは現在、便利な電子デザイナーであり、理解しやすいプログラミング環境であり、一般に、初心者と専門家の両方のために独自のデザインを作成するための便利なツールです。 Arduinoプラットフォームの人気は、シンプルで理解しやすい言語でプログラムされ、プログラムがUSB経由で転送されるという事実によるものです(プログラマー、つまりプログラム送信機は必要ありません。 目的のデバイス)、また開く ソース(プラットフォームが作成される基礎、そのソフトウェアコア、すべての助けを借りて 希望するプログラム)。 オープンソースは、Arduino自体が提供するものだけでなく、それに基づいて独自の「自家製」プログラムを作成できるという点で、ユーザーにとって便利です。


Arduinoテクノロジーの本質は何ですか? それは、普通のコンピュータが、いわば、実空間に「出て」、「感じ」始めることを可能にします。 これは、何らかの手段(ほとんどの場合ワイヤレス)を使用して、 環境そしてそれに基づいて、彼はいくつかの制御装置の管理について独立した決定を下すことができます。 したがって、このテクノロジーの動作をほぼすべてに構成できます。 同時に、Arduino製品は普遍的であり、パーソナルコンピューターとモバイルデバイスの両方で多数のシステムと相互作用することができます。 小さなボードからそれ自体を充填し、それに追加することで、特定のユーザーはプレハブバージョンで購入するか、必要なコンポーネントから自分で組み立てることができます。 Arduinoボードのすべてのコネクタは可能な限り標準化されているため、サードパーティメーカーは互換性のある部品を簡単に製造できます。 全て ソフトウェアは無料でダウンロードでき、ネットワーク上でのArduinoの人気を大幅に高めます。

「Arduinoの多用途性は、あなた自身のお金、時間、そして神経を節約するのに役立ちます-3つ1つです」と経験豊富なホームエンジニアはさまざまなフォーラムやコミュニティで言います。 実際、機能性に劣らない、よりシンプルで安価な部品を幅広く選択できる高価なレアコンポーネントを購入する必要がないため、「スマート」ホームのプロジェクトは非常に簡単になります。 さらに、このシステムの人気はあなたにも役立ちます-そのため、既製のコード、計画、およびプロジェクトが今日活発に開発されており、プロとアマチュアの両方によって行われています。 これらすべてが組み合わされて巨大なライブラリになり、あらゆる好みの機能を見つけることができます。


何が「スマート」な家にできるべきでしょうか?

独自の「スマート」な家を作成するという点では、arduinoは長い間ほとんど一般的な名前になりました。このテクノロジーを使用して、自分の生活を自動化およびリモート制御することは非常に人気があります。 すでに、この技術に基づいた「ホーム」ユーザーの開発が数多く発生しており、その目的は、単純な照明のオン/オフから、コンピューターの運転などの複雑なシステムまでさまざまです。


まず第一に、サイエンスフィクションを脇に置いた場合、「スマート」な家が持つべき、そして持つことができる品質を決定する必要がありますか? 結局のところ、あなたの家のプロジェクトでは、実際にはほとんど実現不可能なものを提供することができます。 仕事用の服を選ぶシステムが見つかる可能性は低いです。 フォーラムやサイトを調査した結果、そのような家は次のことができるはずであるという結論に達することができます。

  1. ライトのオン/オフを制御する必要があります。 最も進歩的な開発のベクトルでは、リモコンからの信号または音声信号(拍手)によって電球をオフにするのは簡単ではありませんが、たとえば、家に誰もいないとき、または家のみんなが寝ているとき。
  2. 家の中の温度調節。 これは、自動化されたコンピューターと換気、暖房、および同様のシステムとの相互作用です。 ここでの動作原理は非常に単純です。センサーを固定する温度が変化すると、システムは自動的にオンまたはオフになります。 必要な器具。 ここには、たとえば、就寝後、ゆっくりと温度が下がる(涼しい部屋で深い段階で眠るのがより快適になる)、そして目覚めた後(アラーム)になるような一連のコマンドを作成するという見通しもあります。信号)、逆に、それは上昇します(部屋の暖かい場所で目を覚ます方が快適です)。
  3. モニタリング 外部環境。 これらの科学用語の背後には、街路温度の定義、雨や雪などの表示があります。 原則として、すべての気象情報は何らかの画面に送信する必要があり、また、 音声信号。 デザイナーの1人は、雨が降ると荷物をまとめるのが遅くなり、仕事や学校に行くのに時間がかかるため、雨が降った場合は早めに目を覚ますというアイデアを提案しました。
  4. ドアと出入りのコントロール。 このカテゴリには、次のようなかなり幅広いデバイスが含まれます。 セキュリティシステム(多くの場合、これは超音波と 赤外線センサー、そこにいるはずのない時間に敷地内にいる人の存在を記録する)、自動ドアロック、さまざまな変更の電子ロック(たとえば、指紋の読み取りに基づく)、および人がいるときにドアを自動的に閉じるなどの非常に単純なデバイス彼らの後ろでそれを閉じるのを忘れているあなたと一緒に住んでください。
  5. さまざまな漏れ、漏れの警告システム。これには、部屋の煙や直火を検出する機能も含まれています。 このようなシステムは、消防署に電話をかけ始めるまで変更することができます。
  6. 他のシステム。その中には非常に多様なものがあります。 頻繁に使用されるもののうち、機器の制御(たとえば、楽器、テレビの自動スイッチオン)、さまざまなデータ収集システム(たとえば、デバイスは、水槽内の水の温度に関する情報を数回おきに表示します)を選択できます。分)。


一見複雑でかなり幻想的に見えるこれらのシステムはすべて、すでに自宅のユーザーによって Arduinoシステム。 スマートフォンの現在の時代では、家を管理するという考えは 携帯電話、そしてほとんどの場合、そのようなシステムは、開発者にとって最もオープンで便利なものとして、Androidモバイルオペレーティングシステムに基づいて作成されます。 したがって、たとえば、電話をかけるだけで、Twitterを使用して動物に餌をやったり、到着前に部屋の暖房をオンにしたりすることができます。

このように、Arduinoはあなたの人生のほとんどすべての改善のプロジェクトを実行することを可能にすると言うことができます。 さまざまなソフトウェア製品と相互作用できるシステムの幅広い可能性と、最も重要なこととしての柔軟性は、アイデアを実現するための優れたツールとして機能します。

「実際、Arduinoはあなたのプロジェクトと夢を実現するための理想的なツールです」とフォーラムで経験豊富なデザイナーは言います。自分で実装しました。


なぜArduinoなのか?

論理的な疑問が生じます。そのようなシステムをすべて購入し、専門家にインストールを注文することができます。専門家は、インストールに加えて、そのようなシステムを美しく設計することができます(たとえば、同じワイヤーを隠す)。 なぜArduinoで自分で作るのですか? 答えは簡単です-それは価格と利便性についてです。 原則として、そのようなシステムのインストールに専門的に従事している企業は、コンポーネントと同様のデバイス自体の価格、およびそれらのインストールのコストの両方で非常に重要なマークアップを行います。

もちろん、彼らはあなたのためにすべてを行い、それは十分に速いでしょう、しかし最初に、あなたはあなたの好みに何かを変える機会を失い、これと一緒に、ある種の故障の場合に何かを修理する機会を失います(これらのように企業は、他のシステムを使用していますが、これらのシステムは、標準化および統合されていて、使い勝手が良いとは言えません。 Arduinoボードとそのアクセサリ、および必要な追加部品のコストははるかに低く、必要に応じて、故障を修正して目的の部品を交換し、調整することができます。あなた自身のためのシステム。


同時に、Arduinoプラットフォームは、その正当な人気のために、膨大な数のさまざまなライブラリを備えており、経験豊富なユーザーは、間違いなくあらゆる種類の問題の解決を容易にする必要な、適切に変更されたプログラムコードをすでに追加しています。これらのシステムを自宅の「スマート」プロジェクトに配置する過程で発生する問題。

こんにちは、みんな。 長い間何も書かれていません。 今日はデータベースについてお話します。 はい、それは彼らについてです。 なぜこのトピックが関連するようになったのですか? システム導入の過程で スマートホーム、私は大きな問題に直面しています。システムに新しいセンサーを追加することです。 これにより、...から渡す必要のある新しいパラメータとデータが追加されます。

あけましておめでとう皆さん! 休日の前夜には、タブレットやスマートフォンからBluetooth経由で制御されるお正月の花輪についてお話します。 プロジェクトコンポーネントのリスト:Arduinoコントロールチップを備えたRGB LEDストリップ(ガーランド) プロミニ AndroidベースのBluetoothモジュールタブレット(スマートフォン)さまざまなものがあります RGBストリップ、さまざまなマイクロ回路上。 以下は、私たちができるマイクロ回路のリストです...

DHT湿度センサー前回の記事では、従来のフォトレジスターを使用してバスルームファンを制御する方法について説明しました。 スマートホームスキームに追加する時が来ました 新しいタイプセンサー。 湿度および温度センサー-DHT(ピン9.10)。 センサーの説明と操作例は、記事に記載されています。DHTセンサーを使用して、バスルームの湿度を測定します...

人感センサーと光センサー(フォトレジスター)を使って、バスルームで自動常夜灯を行います。 発光素子として12vLEDストリップを使用します。 直管LEDライトボックス内のモーションセンサーフォトレジスター(一時的な設置)制御アルゴリズムは非常に単純です。 暗くてモーションセンサーが作動している場合は、しばらくの間バックライトをオンにしてください。 外出時にもケースを用意する必要があります...

前回の記事を書いた後、DS18B20センサーの1つの過熱に問題がありました。 電源を入れた後のさまざまな時点で、DSセンサーからのデータが届かないことに気づき始めました。 システム全体を再起動した後、センサーの1つが35〜40度を示し、15分以内に温度が実際の温度に下がりました。 センサーを新しいものに変えようとしましたが、何の役にも立ちませんでした。 それでは...

スマートホームの設計における次のステップは、換気制御の設計です。 負荷180Wの220ネットワークを搭載した3つのファンがあります-バスルームと組み合わせたバスルームのファン-天井換気用のキッチンのファン-スマートホームコントロールユニットとデスクトップ(PC、はんだ付けゾーン)用のファンファンはリレーを介して制御されます...

インターネット、スマートフォン、 キッチン家電およびシステム スマートハウス"。 後者にまだ慣れていない場合、またはそのようなシステムを自分でインストールしたい場合は、以下の情報が役立ちます。



タブレットからのスマートホームコントロール

「スマートホーム」とは

このようなプロジェクトを購入することは、ほとんどの人の手の届かないところにあります。 しかし、「スマートホーム」の動作原理をマスターすれば、そのようなプロジェクトを自分で開発し、自分の手で特別なアプリケーションを介してインストールすることができます。

コンセプトまたは「スマートホーム」は、コントローラーとセンサーの単純なセットとして説明できます。 これらのデバイスは次のように機能します 熱エネルギー、および動きについて。 原則として、そのようなセットは、家の中の機器、通信、およびセキュリティシステムの操作を制御します。 よりスマートなプロジェクトもあります。スケジュールされたシステムで暖房をオンにしたり、家電製品を起動したりします。想像してみてください。家に帰ると、電子レンジでの温かい夕食と温かいお風呂がすでに待っています。 面白い? 次に、自分でそれを行うのは理にかなっています。



「スマートホーム」は、コントローラーとセンサーの単純なセットとして説明できます

センサーとコントローラーはどのように機能しますか?

このような機器は情報を読み取り、それを使用して処理します 特別プログラムコマンドを送信します。 センサーは、動き、突然の音、または温度に応答できます。

移動システムの最も単純で最もよく知られている例は、 マンション、階段のドアを開けると、ライトが自動的に点灯します。 また、火災警報器複合施設内の各建物にコントローラーまたはセンサーがあります。温度が急激に上昇すると、警報がトリガーされます。

家にスマートホームシステムをインストールする前に、これらのセンサーを配置するプロジェクトを開発する必要があります。 この計画の多くのシステムは、プログラミングと電子機器の分野である程度の経験と知識を必要とするため、機器は可能な限り単純なものを選択する必要があります。 言い換えれば、初心者ユーザーに適応します。 これはまさにArduinoシステムと呼ぶことができるものです。 同社は、スマートホーム向けのインストールが簡単で信頼性の高いシステムを提供しています。

Arduinoを含め、スマートホームプロジェクトにユニバーサルな「スマート」システムを提供している企業はないことに注意してください。



スマートホーム用の完全なArduinoプロジェクト

システムの利点

Arduinoは、主にその直感的なインターフェイスのために、プログラミングから遠く離れた人々の間で大きな需要があります。 スマートホーム向けのシステムの次の利点を強調することも、場違いではありません。

  • ソースコードが開いているので、独自のプログラムを作成する機能。
  • 単純なプログラミング言語。
  • 必要なすべてのプログラムは、USBケーブルを使用して転送できます。

したがって、標準の機能セットを備えたプログラムを1つだけ購入することで、可能な限り便利にカスタマイズできます。

Arduino Unoの追加ソフトウェアは、いつでもインターネット経由で無料でダウンロードできます。 専用アプリをインストールすることで、通常のパソコンとスマートフォンの両方でシステムを制御できます。

センサーは、ワイヤレスデータ送信を使用して、コマンドやその他の情報をコンピューターまたはスマートフォン(タブレット)に送信します。 専用プログラムによりデータを処理し、必要なコマンドを実行します。 Arduinoシステムのメインセンサーである中央センサーは、手作業で購入または組み立てることができます。 ボード上のコネクタは標準タイプです。 これにより、ArduinoUnoシステムのコンポーネントの選択が大幅に容易になります。



Arduinoシステムの仕組み

組み立てに必要な材料

スマートホームプロジェクトを自分の手で組み立てる場合は、次のものが必要になります。

  • センサー Arduino Uno;
  • イーサネットモジュールENC28J60;
  • 必要なセンサーとコントローラー R s;
  • モーションセンサー;
  • ツイストペアケーブル;
  • スイッチ;
  • リレー;
  • 抵抗器;
  • イーサネットモジュール用のケーブル。

また、忘れないでください 必要なツール:はんだごて、ドライバーなど。

Arduinoのスマートホームシステム用のキットは、認定された販売店で購入することをお勧めします。 そのようなプロジェクトの仕事は電気に関連しているという事実のために、偽物の使用は安全ではない可能性があります。 システムを適応させるために必要なすべてのプログラムは、インターネットからダウンロードできます。

センサーに関しては、ここで「スマート」システムに必要なもののセットを選択します-家の温度制御、照明のオン/オフなど。



必要な資料自分の手で「スマートホーム」を組み立てる

インストールプロセス

ArduinoUnoの「スマートホーム」には LEDランプ。 通常の白熱灯の使用はお勧めしません。負荷に耐えることができません。

プロジェクトの準備ができたら、必要なコントローラーとセンサーをArduinoに接続し始めることができます。 これは、使用する図面または図に従って厳密に行う必要があります。 すべての接点は十分に絶縁されている必要があります。



ArduinoUnoの「スマートホーム」にはLEDランプのみが必要です

条件付きで、作業の次の段階は次のアルゴリズムとして表すことができます。

  • プログラムコードのインストール。
  • 使用するガジェットのアプリケーション構成。
  • ルータのポートフォワーディング。
  • テスト;
  • 変更を加える(必要な場合)。

必要なソフトウェアを含むアーカイブがダウンロードされ、インターネットから使用される機器にインストールされます。 信頼できるソースからダウンロードすることをお勧めします。 すべてのファイルを解凍したら、アプリケーションのページを更新するか、デバイス自体を再起動する必要があります。

アプリケーションはからの情報を表示します 設置されたセンサー。 必要に応じて、IPアドレスの設定を変更し、アラームを有効/無効にすることができます。 同じアプリケーションがデータを送信します。



Windows用のArduinoプログラム

ルーターの操作

ルーターのポートを開く必要があります。 これを行うには、次の手順に従います。

  • ルーター構成を開きます。
  • arduinoのIPアドレスを登録します。
  • ポート80を開きます。

その後、新しいアドレスにドメイン名を割り当てます。 これで、自分の手で作成したプロジェクトのテストを開始できます。



ルーターを適切に構成することが成功への鍵です

このようなプロジェクトでは、システムがインターネット経由で簡単にハッキングされるため、オープンIPアドレスを使用できないことに注意してください。

arduinoベースの「スマート」システムを備えた住宅は、通信の動作を制御できるだけでなく、電力を大幅に節約することもできます。 主なことは、認定されたタイプのセットを選択することです。そうしないと、システム全体がうまく機能しません。

また、Arduinoは、さまざまなプログラムコードを持つ膨大な数のライブラリを備えたこの種の数少ないシステムの1つであることに注意してください。 したがって、インターネットを介して自分の手で組み立てることは難しくありません。 すべてのコンポーネントを購入し、既製のテスト済みプログラムコードを選択するだけです。

そしてまたこんにちは、Habrozhites! Habrを毎日読んでいると、Arduinoとそれに基づくDIYプロジェクトに関する記事に繰り返し出くわしました。 私は電子機器とは何の関係もありませんでした。私の経験はすべて、10代のクラブ「スパーク」(ペトロザボーツク)をベースにしたラジオクラブを訪れたことでした。 ある日、Arduinoでスマートフォン(BT通信)用のセンサー(温度、圧力、脈圧)付きのブレスレットを作ることにしましたが、注文を間違えたため、Arduino自体と圧力センサーしか受け取りませんでした。 ボードをテストするために、私はLEDの最寄りの無線部品店に行き、そこで磁気ドア閉鎖センサーで目をとらえました。 彼は私に部屋の生活を少し改善することができるだろうという考えを与えました(アパートと混同しないでください)。 時間を無駄にすることなく、私はたくさんのセンサーとArduinoMegaを備えたAliを注文しました。

紳士用のセンサーセット(温度、湿度、リレー、StarterKit、BT、時計、距離計、IRセンサー)を注文した後、他の人がスマートホームをどのように表現しているかを探すことにしました。 ほとんどが制限されていました:シャンデリアの管理と 暖かい床、本当にクールな記事がありましたが。 アパートに共通する機能のいくつかは、部屋では単に不要でした。たとえば、ガス漏れや漏れセンサーなどです。 スマートルームに必要な機能を自分で作成することにしました。

  • 調光
  • 温度管理
  • 多くの方法で管理する
  • ドア制御
  • 温度監視
  • 気象監視

必要なセンサーはすべてすでに注文されており、待つだけであることが判明しました。 そして今、すべてのセンサーが到着しました!

最初の一歩

すでにLEDを点滅させていて、スマートホームを建てようと決心したときは、部屋の照明を点滅させるのが論理的なステップでしたが、初期の暑さのために温度管理を行う必要がありました。 手始めに、StarterKitaからdht11を接続しようとしました。 インターネットが指示でいっぱいなら、何が簡単になるでしょうか? 結局のところ、dht11を接続するためのライブラリはたくさんあり、それらのすべてが互換性があるわけではありません 最新バージョン IDEですが、数時間後、コンソールに表示される温度に感心し、数分後、それに応じてLEDが点滅しました。 (センサーを外し、冷蔵庫に入れ、冷蔵庫から取り出し、接続します...)

最初の問題は、選択したdht11の精度が低いことでした。それは、両方向に2〜3度の角度であり、交換する必要がありました(その後、いくつかのバージョンでセンサーを注文しようとしました)。

それから私はルロイ・メルランに行き、そこで最も単純なファンを購入しました。 ワイヤーとプラグを数分間いじった後、ファンを組み立てました。 彼らは隣人と一緒に窓を外し、空いている席にそれ(隣人ではなく扇風機)を取り付けました。 プラグを差し込んで…ファンが回転し始めました。 ゆっくり。 とても遅いです。
言うまでもなく、プラグを間違って取り付けたのですが、ファンが風から回転していましたか?


もちろん、手動の電流シャットダウンも利用できます。 しかし、リレーを介してファンを制御するための最良の方法は何ですか? ファンに直接接続しますか? ファンをソケットを介してリレーに接続することにしました。これにより、システムに柔軟性がもたらされます(ファンを別のものと交換できます)。

換気試験

そしてこれがLEDからリレーに書き直されたコードです。 ファームウェアがロードされ、起動に必要なものを見越して温度を監視します。これがその瞬間です。 リレーがカチッと鳴り、COMポートが消えます。 どうやら、切り替えの瞬間に、USBの負荷が増加し、データの干渉があります。 最初は220V線の干渉によるものだと思いましたが、ボードからは十分離れています。 後で、これは私に多くの問題を引き起こしました:新しいスケッチをアップロードしようとすると、Arduinoは再起動し、リレーを切り替え、それによってCOMポートを取り出し、したがって更新プロセスを開始します。 私はこの問題を克服することができませんでした。

リモコン

もちろん、ファンの常時動作はすぐに退屈になり、スイッチを介してファンをオフにするのはクールではありませんでした! そこで、そこからスターターキットとリモコンを取り出しました。 実際、その瞬間から問題が始まりました。受信機がどのように見えるかわかりませんでした。 しかし、数分間のグーグルでそれを見つけることができ、1時間後、リモコンからファンを制御するのはすでに楽しかったです。

最初はいくつかのフラグを持つ複雑なアルゴリズムでしたが、最終的には小さなものを思いつきました

タイマーアルゴリズム

もし(信号が来た)(
time_manual_control = 1800;
fan_mode =! fan_mode;
}
If(manual_time!= 0)(
time_manual_control--;
)それ以外は(
If(温度< 26){
fan_mode = false;
)それ以外は(
fan_mode = true;
}
}


しかし、ここでもいくつかの問題がありました。ワイヤを更新すると、DATAに5Vを適用し、すぐに受信機を失いました。 これは私に次のステップを踏むように促しました...

BTモジュールによる制御

すぐにHC-06BTモジュールを接続し、そこに出力をリダイレクトして、コマンド読み取りを追加しました。 もっと難しいと思いましたが、robocraftの記事のおかげです。

起こりました



隣人とファン

近所の人にスマホからシステムを操作するように教えれば、「ねぇ、寒い」という問題は解決できると思いましたが…スイッチでファンの電源を切るのに耐えられたら、窓を閉めますただ私を怒らせた。 なんで? ファンは数センチの距離でガラスに吹き込み、ひどくハミングしました。 幸いなことに、磁気センサーが周りにあり、システムを作成するように促されました。 閉じたセンサーは、ファンをオンにしないようにArduinoに通知します。 悲しいかな、時々干渉があったので、私は簡単なチェックをしなければなりませんでした:閉じ信号が連続して数回来る場合、ウィンドウは本当に閉じられています。


調光

さあ、光をコントロールする時が来ました。 ファンの後は、複雑なことは何もありません。ボックス、端子台のペア、そしてライトはすでにArduinoを介して制御されています(もちろん、古いスイッチを介してオフにする機能があります)。 私の唯一の懸念は、リレーが電球を制御するための最良の方法ではないということです。

音の問題

さて、ポップなしのライトコントロールはどのようなものですか? マイクを注文しました。 だから私は思った…経験不足を覚えていますか? 実際、私は手動のしきい値設定を備えたサウンド検出器を注文しました。 私の目的のために働くようですか? しかし、いくつかの「しかし」がありました:
  • 小さな作用半径:綿は十数センチメートルからのみ処理されます
  • 短い信号持続時間:長いコード実行時間で、センサーからの信号は単にArduinoによって修正される時間がありませんでした

リモートのリターン

少しグーグル、店への旅行-そして燃え尽きたVS1838Bの代わりに、私はより信頼性の高いTSOP1836を購入しました。 今回はインストールが成功し、すべてがすぐに機能しました。


通りに出る

私は窓を見つけました、しかしその後ろに何がありますか? はんだごてで武装し、雨センサーと別のdht11を5メートルのVGAケーブルにはんだ付けしました。 いくつかのU字型の留め具、黒い電気テープ、コケ、およびシステムが戦闘に使用されます。


また、ロシア語のテキストを表示できることも学びました。

になりました



少し便利

スマートフォンはいつでも手元にあるようですが、見つけるまで、接続するまで...スイッチでライトやファンを消す方が速い場合もありますが、Arduinoで制御することはできません(パルスリレーは値段が高す​​ぎる)ので、普通のボタンを2つ追加しました。

少しセキュリティ

技術者のためのホステルの火災警報器なしでどこに? 経験不足のため、煙探知器ではなく、火災探知器を購入しました。 もちろん、最大30 cmの距離で燃焼マッチを決定することはクールですが、十分ではありません。 だから今のところ私はそれなしでやった。

寮の火災警報器といえば...


  • 時々サイレンや死んだ男の喘鳴を発するスピーカー
  • ローカル煙探知器
  • ネットワーク煙探知器(セキュリティコンソールに接続)

一般的な形式







コンピュータケースに配置すると、短絡が発生する可能性があるという大きな欠点があります。 そのため、間もなくボードは個人用の棚に移動し、段ボール箱の代わりにHDDケースからの自家製ケースがあります。

スケッチコード

現在の状態

#含む
#含む
#含む
#含む
#define DHT_PIN2//温度計ピン..。
#define DHT2_PIN52//屋外温度計ピン...
#define RAIN_PIN53//レインセンサーピン
#define RECV_PIN 3//IRレシーバー接続ピン
#define FAN_PIN4//リレー接続ピン
#define LAMP_PIN5//リレー接続ピン
#define SOUND_PINA0//マイク接続ピン
#define WINDOW_PINA1//ウィンドウピン

#define LAMP_BUT_PIN50//マイク接続ピン
#define FAN_BUT_PIN51//ウィンドウピン

#define DHTTYPE DHT11

#define TIMER_FAN 0
#define TIMER_WINDOW 1

IRrecv irrecv(RECV_PIN);
decode_results;
intタイマー;
bool FAN_FLAG = false;
bool LAMP_FLAG = true;
int WINDOW_VAL = 0;

bool WINDOW_OPEN = false;
bool WINDOW_FLAG = false;
bool RAIN_FLAG = false;

CharcomingByte;

DHT dht(DHT_PIN、DHTTYPE);
DHT dht2(DHT2_PIN、DHTTYPE);

DS1302 rtc(49、46、48);
void setup()(
Serial1.begin(9600);

rtc.halt(false);
rtc.writeProtect(false);
//rtc.setDOW(SUNDAY); //曜日を金曜日に設定します
//rtc.setTime(0、37、40); //時刻を0:37:00(24時間形式)に設定します
//rtc.setDate(25、5、2014); //日付を5月25日に設定します

タイマー=0;
タイマー=0;

PinMode(RAIN_PIN、INPUT);
pinMode(LAMP_BUT_PIN、INPUT);
pinMode(FAN_BUT_PIN、INPUT);

PinMode(FAN_PIN、OUTPUT);
pinMode(LAMP_PIN、OUTPUT);

DigitalWrite(FAN_PIN、LOW);
irrecv.enableIRIn(); //レシーバーをオンにします

Dht.begin();
dht2.begin();
}
intボリューム;
void loop()(
WINDOW_VAL = analogRead(WINDOW_PIN); //磁気センサー
if(WINDOW_VAL> 950)(
if(WINDOW_FLAG)(
タイマー++;
if(タイマー> 10)(
WINDOW_OPEN = false;
}
)そうしないと(
WINDOW_FLAG = true;
}
)そうしないと(
WINDOW_OPEN = true;
WINDOW_FLAG = false;
timers = 0;
}

If(digitalRead(RAIN_PIN)== HIGH)(
RAIN_FLAG = true;
)そうしないと(
RAIN_FLAG = false;
}

ボリューム=analogRead(SOUND_PIN);
if(ボリューム<40){
LAMP_FLAG =!LAMP_FLAG;
}

If(digitalRead(LAMP_BUT_PIN)== HIGH)(
input_signal(1);
}
if(digitalRead(FAN_BUT_PIN)== HIGH)(
input_signal(0);
}

If(irrecv.decode(&results))
{
if(results.value == 16750695)//ボタンコード
{
input_signal(0);
}
if(results.value == 16756815)//ボタンコード
{
input_signal(1);
}
irrecv.resume(); //次の値を取得します
}
//Serial.println(rtc.getTime().hour);
//Serial.println(rtc.getTime().min);
Serial1.print(rtc.getDOWStr());
Serial1.print( "");
Serial1.print(rtc.getDateStr());
Serial1.print( "-");
Serial1.println(rtc.getTimeStr());

If(Serial1.available()> 0)(
comingByte = Serial1.read();
if(incomingByte == "0")(
Serial1.println( "手動モードが無効になっています");
input_signal(0);
)else if(incomingByte == "1")(
Serial1.println( "手動モードが有効");
input_signal(0);
)else if(incomingByte == "2")(
input_signal(1);
}
}

Floath = dht.readHumidity();
float t = dht.readTemperature();

If(isnan(t)|| isnan(h))(
Serial1.println( "内部温度計からの読み取りエラー");
) そうしないと (
if(タイマー<=0){
if(t<26){
FAN_FLAG = false;
)else if(t> 26)(
FAN_FLAG = true;
}
)そうしないと(
タイマー - ;
}
Serial1 print(h);
Serial1.println( "%\ t");
Serial1.print(t);
Serial1.println( "* C");
}

if(タイマー> 0)(
Serial1.print( "手動モードが機能するようになっています:„);
Serial1.print(タイマー);
Serial1.println( "sec");
)そうしないと(
Serial1.println( "手動モードが無効になっています");
}
if(FAN_FLAG && WINDOW_OPEN)(
digitalWrite(FAN_PIN、HIGH);
Serial1.println( "ファンがオンになっています");
)そうしないと(
digitalWrite(FAN_PIN、LOW);
Serial1.println( "ファンオフ");
}

If(WINDOW_OPEN)(
Serial1.println( "ウィンドウが開いています");
)そうしないと(
Serial1.println( "ウィンドウが閉じています");
}

If(LAMP_FLAG)(
digitalWrite(LAMP_PIN、HIGH);
)そうしないと(
digitalWrite(LAMP_PIN、LOW);
}

H = dht2.readHumidity();
t = dht2.readTemperature();
Serial1.println( "ウィンドウの外:");
if(isnan(t)|| isnan(h))(
Serial1.println( "屋外体温計からの読み取りエラー");
) そうしないと (
Serial1.print( "湿度:");
Serial1 print(h);
Serial1.println( "%\ t");
Serial1.print( "温度:");
Serial1.print(t);
Serial1.println( "* C");
}
if(RAIN_FLAG)(
Serial1.println( "雨なし");
)そうしないと(
Serial1.println( "Rain");
}

Serial1.println( "*****");
delay(100);
}

Void input_signal(int signal)(
switch(signal)(
ケース0:
if(rtc.getTime()。hour> 1 && rtc.getTime()。hour< 8){
タイマー=1800;
)そうしないと(
タイマー=18000;
}
FAN_FLAG =!FAN_FLAG;

Serial1.println( "ファンが切り替えられました");
壊す;
ケース1:
LAMP_FLAG =!LAMP_FLAG;
Serial1.println( "ライトスイッチ");
壊す;
}
}

コードに不具合がある場合はどうなりますか?

ノーマルクローズリレーを使用しています。 つまり、デフォルトですべてがオンになっています。Arduinoをネットワークから切断し、簡単なスイッチを使用できます。

開発計画

私がリストしたのは、真にスマートな部屋の基盤にすぎません。 結局のところ、すべてのAIは、温度に応じてファンのオンとオフを切り替えています。 部屋をより快適で「自律的」にするために、次のことを計画しています。
警報
システムに時計を追加した後、次の行は目覚まし時計です。 信号として、私は次のことを想定しています:ピエゾツイーター、ライトの点滅、ファンのオン。 そしてもちろん、外で雨が降っている場合は早起きしてください(移動速度-10)。

このモジュールを使用してSDカードにアラームを保存するシステムを追加します(停電の場合)。

コンピューターとスマートフォンのアプリケーション+ウィジェット
スマートフォンやパソコンから制御できないスマートホームとは?

私はこのようなものを推測しています:


なぜWiFiではないのですか? 高過ぎ。

Arduino自身のパワーを出力
コメントは不要だと思います:USBを焼く危険性と他のデバイスとの絶え間ない干渉。 また、ボードから専用アダプターに電力を転送したい。
コンセントを介したルーターの制御
古き良きAsusRT56Uは、特に夏に暖かくなります。 そのため、夜間に数時間自動シャットダウンして冷却させたいと思います。
プレゼンスモニタリングを追加
今、私はいくつかの古き良き焦電赤外線センサーといくつかの超音波距離センサーを持っています。 これは、最も単純なプレゼンス制御には十分な場合があります。

部屋には二人が住んでいます。 それぞれに4つの状態があります。

  • コンピューターで
  • 費用
  • ベッドに横たわっている
  • ない

赤外線センサーは、部屋の存在とゾーン(ベッド/テーブル)の超音波の存在を判断し、出入りした人の数を監視します。

これにより、最も単純なシナリオを実装できます。

  • 私は夕方に来ました、そして隣人は眠っていません:電気をつけてください
  • みんな外出中:電気を消して
  • 誰もが横になって動かない:電気を消す
感光性抵抗器を追加する
このジャンルの古典:部屋の「コンピューター」ゾーンに誰かがいて、部屋が暗い場合は、自動的にライトをオンにします。
電気機械式ロックとドアクローザーを追加します
あなたのことはわかりませんが、いつも鍵を探すのが面倒なので、近接型カードリーダーや指紋センサーと組み合わせて電気機械式ロックを設置したいと思っています。 ホステルへの入り口は電子パスを経由します-頻度を知っていて、Arduinoリーダーを簡単に注文できますが、カードは非常に簡単に複製できます(私自身もこのためのデバイスを持っています)。指紋の指で落ち着く可能性があります。

隣人はよくキッチン/トイレ/お風呂に行き、ドアを閉めません。 私は入り口の前に座っていますが、通りすがりの人が私のショーツを見て、部屋の配置を考えているのは好きではありません。 制御されたクローザーは、そのような状況に最適なソリューションです。

ウィンドウをアップグレードする
すでに書いたように、温度が一定の限界を超えると、ファンがオンになります。 しかし、部屋に誰もいなくて、気温がすでに20を下回っている場合はどうなるでしょうか? ウィンドウの開閉をシステムに追加したいと思います。 おそらくそれは単純なモーター+釣り糸でしょう。

電球を冷やしてからオンにすると、爆発する可能性が高いことが知られています。 したがって、それはまた神経と電球を節約します。

温度制御システムに対応しなかった電球


DHT11を交換してください
すでに書いたように、センサーなどはわかりません。 そこで、最初に出会った温度センサーdht11を購入しました。 今度は、部屋をdht22、通りをdht21に置き換えたいと思います。 dht22の誤差は小さく、dht21は負の温度をサポートし、路上で重要な保護されたケースを備えています。 ストリートdht11はすでに時々迷子になり始めています。
学生はタグを追加します