更新された記事: https://viktorkarilov.me/post/home-automation-raspberry-pi/
https://youtu.be/wh0OoLUTeM8
私は子供の頃から電子工学やさまざまな種類のメカニズムに情熱を持ってきました。以前、私は Arduino を使って、ゲーム用ステアリングホイール用のハンドブレーキ、車用のカスタム LED タコメーター (Github リポジトリを参照)、音声制御 LED など、さまざまな小さなプロジェクトを実行してきました。最近、Raspberry PI 3 を購入し、IoT の誇大宣伝の影響で、自宅の自動化を開始することにしました。
私は JavaScript とそのエコシステムにかなり精通しているので、 react native
経由で独自の電話アプリを作成し、 websockets
経由でNodeJS
バックエンドに接続することにしました。データ構造とアプリのパフォーマンスの一貫性を保つために、ImmutableJS の Records を使用しています。データはクライアントとサーバーの間で JSON 文字列を介して送信され、両側で受信されると、変換されて不変レコードに戻されます。共有モジュール(クライアントとサーバーの間)を別のローカル npm パッケージ(home-records と home-config)に分離しました。 GPIO制御(ラズベリーのピン)には、 wiringPi
と一緒にpi-blaster
ライブラリを使用しました。 AC のコードが見つからなかったので、自分で記録してlirc
設定ファイルに追加しました。 IP アドレスが定期的に変更され、アプリ全体を再コンパイルしたり、毎回構成を変更したりする必要がないため、 Duckdns
cron は動的 DNS として使用されます。サーバーは、接続されているすべてのユーザーに変更をリアルタイムでブロードキャストします。電話アプリは/phone-appフォルダーにあり、サーバーは/serverにあります。覗いてみませんか?
Raspberry Pi 3
制御ユニットです。 LED ストリップなどの高出力デバイスは、外部12V 5A power supply
(PI との共有グランド) を介して電力を供給されます。 AC は 950nm 赤外線 LED によって制御されます。分解を避けたので、ヒーターシステムはリレー(オンとオフ)とサーモスタットのサーボを介して配線されています。白色 LED ストリップと RGB ストリップは両方とも、 IRLZ34N
論理トランジスタを介して PI に接続されています。何か他のものを録画したい場合に備えて、IR受信機もあります。温度は DS18B20 温度センサーによって測定されます。
配線はこんな感じです。
さまざまなモジュールに関するあらゆる種類のアイデアを歓迎します。何かアイデアがある場合は、課題トラッカーに追加してIdea
というラベルを付けていただければ幸いです。