Arduinoワイヤレスウェザーステーション
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
<図> <図> <図> <図>
ワイヤレスウェザーステーションの構築は、素晴らしい学習体験です。このプロジェクトの構築が完了すると、ワイヤレス通信がどのように機能するか、センサーがどのように機能するか、およびArduinoプラットフォームがどれほど強力であるかをよりよく理解できるようになります。このプロジェクトをベースにして経験を積むことで、将来、より複雑なプロジェクトを簡単に構築できるようになります。
気象観測所は、さまざまなセンサーを使用して気象や環境に関連するデータを収集するデバイスです。次のような多くのことを測定できます:
- 温度
- 湿度
- 風
- 気圧
- UVインデックス
- 雨
建設する気象観測所では、2か所の気温と湿度を測定し、現在の日付と時刻を表示します。気象台の建設は非常に簡単です。しかし、メーカーは、カラーTFTディスプレイと、商用ユニットと一致する機能を備えたユニットを構築できますか?答えはイエスです!オープンソースのソフトウェアとハードウェアの力で、この印象的な気象観測所を簡単に構築できます!
プロジェクトは、送信機と受信機の2つの部分で構成されています。
送信機 温度と湿度を測定し、データをワイヤレスで受信機に送信します。 レシーバー 温度と湿度を測定し、リモートセンサーからデータを受信し、すべてを大きなカラーTFTディスプレイに表示します。
このプロジェクトを構築しましょう!
ステップ1:すべての部品を入手する <図>
このプロジェクトを構築するために必要な部品は次のとおりです。
- ArduinoDue▶http://educ8s.tv/part/ArduinoDue
- ArduinoMega▶http://educ8s.tv/part/ArduinoMega
- ArduinoNano▶http://educ8s.tv/part/ArduinoNano
- 3.2 "TFTディスプレイ▶http://educ8s.tv/part/32TFT
- DHT22▶http://educ8s.tv/part/DHT22
- NRF24L01▶http://educ8s.tv/part/NRF24L01
- DS3231RTC▶http://educ8s.tv/part/DS3231
- ブレッドボード▶http://educ8s.tv/part/SmallBreadboard
- ワイヤー▶http://educ8s.tv/part/Wires
- ヘッダーピン▶http://educ8s.tv/part/HeaderPins
- XiaomiPowerbank▶http://educ8s.tv/part/Powerbank
プロジェクトの費用は約40ドルです。 ArduinoDueの代わりにArduinoMegaを使用すると、プロジェクトのコストを5ドル削減できます。非常に高速でメモリが多いため、レシーバーにはArduinoDueを使用することにしました。これは、プロジェクトに機能を追加するときに、将来非常に役立つ予定です。
ステップ2:温度および湿度センサー-DHT22 <図>
DHT22は、非常に人気のある温度および湿度センサーです。安価で使いやすく、仕様は優れた精度と精度を主張しています。
DHTセンサーは、静電容量式湿度センサーとサーミスタの2つの部分で構成されています。内部には、アナログからデジタルへの変換を行い、温度と湿度のデジタル信号を出力するチップもあります。デジタル信号は、どのマイクロコントローラーを使用してもかなり読みやすいです。
DHT22の特徴
- 低コスト
- 3〜5Vの電源とI / O
- 変換中の最大電流2.5mA
- 2〜5%の精度で0〜100%の湿度測定値
- -40〜125°Cの温度測定値±0.5°Cの精度
- 遅い
Arduinoとの接続は非常に簡単です。 +記号の付いたセンサーピンをArduinoの5Vまたは3.3V出力に接続します。 -記号の付いたセンサーピンをGROUNDに接続します。最後に、OUTピンをArduinoの任意のデジタルピンに接続します。
ArduinoでDHT22センサーを使用するには、DHTライブラリを使用する必要があります。
https://github.com/adafruit/DHT-sensor-library
ステップ3:DS3231リアルタイムクロックモジュール <図>
DS3231リアルタイムクロックモジュールは、その名前がリアルタイムクロックを示唆しているようになっています。バッテリーを使用すると、消費電力が最小限に抑えられるため、何年も時間を保つことができます。
モジュールのコストは非常に低いです。バッテリー込みで約2ドル!ウェザーステーションプロジェクトの時間を維持するために使用します。
ステップ4:NRF24L01 +:ワイヤレスモジュール <図> <図>
NRF24L01モジュールは、低コストの双方向トランシーバモジュールです。それの費用は3ドル未満です! 2.4GHz帯域で動作し、2Mビットのデータレートで実現できます。印象的ですね。 Arduinoとの通信にSPIインターフェースを使用しているため、非常に使いやすいです。 Arduinoで動作させるには、モジュールの8本のピンのうち7本を接続する必要があります。
残念ながら、モジュールをブレッドボードに接続できないため、モジュールをArduinoに接続するためにオス-メスワイヤを使用します。モジュールのピン番号1はGNDです。 ArduinoGroundに接続する必要があります。次のピンはVccです。 ArduinoUnoの3.3V出力に接続する必要があります。気をつけて! 5Vに接続しないでください。接続すると、モジュールが破壊されます。 3番目のピンはCEという名前で、好きなデジタルピンに接続できます。この例では、デジタルピン7に接続します。ピン4はCSであり、任意のデジタルピンにも接続できます。デジタルピン8に接続します。次のピンはSCKで、ArduinoUnoのデジタルピン13に接続します。次のピンはMOSIでデジタルピン11に接続され、MISOの最後のピンはデジタルピン12に接続されます。これで完了です。
使いやすくするために、Arduinoのモジュールでは、次のライブラリを使用する必要があります:https://github.com/TMRh20/RF24
これまでにNRF24L01 +モジュールを使用したことがない場合は、添付のビデオをチェックして、簡単なプロジェクトを作成して使用方法を確認してください。それがどのように機能するかを理解するのに役立ちます。
ステップ5:トラスミッターを構築する <図> <図> <図>
まず送信機を作りましょう。とても簡単です。
使用する送信機:
- Arduino Nano
- DHT22センサー
- NRF24L01 +ワイヤレスモジュール
- ブレッドボード
- いくつかのワイヤー
センサーの出力ピンをArduinoNanoのデジタルピン4に接続します。 GroundとVccを接続し、準備が整いました。今やらなければならないのは、NRF24L01ワイヤレスモジュールを接続することだけです。
3枚目の画像のピンで取り付けてください。詳細については、前の手順で添付した詳細なビデオをご覧ください。
これで、送信機の準備が整いました。次に、受信機に移りましょう。
ステップ6:レシーバーを構築する <図> <図> <図> <図> <図> <図>
受信機を構築するには、次の部品が必要です。
- ArduinoDueまたはMega
- DS3231リアルタイムクロックモジュール
- DHT22温度および湿度センサー
- NRF24L01 +ワイヤレスモジュール
- 3.2インチカラーTFTディスプレイ
- ブレッドボード
- 7つのヘッダーピン
- いくつかのワイヤー
最初に、7つのヘッダーピンを曲げて、いくつかのArduinoDueピンに配置します。 1つはアースに、もう1つは3.3Vに必要です。 I2Cピンに2つ必要です。 6から8までの残りの3からデジタルピンが必要です。また、ArduinoDueピンのハードウェアSPIピンに3本のワイヤーをはんだ付けする必要があります。 MOSI、MISO、SCKが必要です。図を注意深く確認してください。ワイヤーをヘッダーピンに接続し、ディスプレイを取り付ける準備ができました。
DS3231の接続
- Arduinoの3.3V出力のVCCピン
- ArduinoのGNDへのGNDピンと
- SDA(シリアルデータライン)ピンをArduinoのSDAピンに接続します
- SCL(シリアルクロックライン)ピンからArduinoのSCLピンへ
DHT22センサーの接続
- Arduinoの3.3V出力のVCCピン
- ArduinoのGNDへのGNDピンと
- Arduinoのデジタルピン8への出力ピン
NRF24L01モジュールの接続
- ArduinoのGNDへのGNDピン
- Arduino3.3VへのVCCピン
- Arduinoのデジタルピン6への3番目のピン
- Arduinoのデジタルピン7への4番目のピン
- はんだ付けしたSCKピンへの5番目のピン
- はんだ付けしたMOSIピンへの6番目のピン
- はんだ付けしたMISOピンへの7番目のピン
ステップ7:送信機コード <図>
まず、NRF24L01ワイヤレスモジュールを使用する際の作業を楽にするために、RF24ライブラリをダウンロードする必要があります。 DHT22センサー用のDHTライブラリも必要です。
- DHT22ライブラリ: https://github.com/adafruit/DHT-sensor-library
まず、送信機のコードを見てみましょう。温度と湿度の2つのフロートを含む単純なデータ構造を送信します。
通信リンクを確立するには、2つのモジュール間に「パイプ」を作成する必要があります。そのパイプにはアドレスが必要です。両方のモジュールは、通信するために同じパイプから書き込みと読み取りを行う必要があります。これが、コードで最初に定義するものです。パイプアドレスを「0」に設定します。次に、他のモジュールと通信するチャネルを定義します。 NRF24L01チップは、126の異なるチャネルをサポートします。両方のモジュールは、相互に通信するために同じチャネルを使用する必要があります。この例では、チャネル115を使用しています。次に、モジュールが提供する最大送信電力を使用することを定義します。それはより多くの電力を使用しますが、通信の範囲を拡張します。次に、送信のデータレートを定義します。より良い範囲を実現するために、可能な限り低いデータレートである250Kbsに設定しました。次のステップは、後で書き込むためにパイプを開くことです。
ループ機能では、センサーから温度と湿度の値を読み取り、そのデータをデータ構造に保存してから、データ構造をパイプに書き込んでデータ構造を送信します。それでおしまい。このチュートリアルに添付されているコードを見つけることができます。
FU361QHIQFCEYSE.ino
ステップ8:受信者コード <図> <図>
レシーバーコードを見てみましょう。 4つのライブラリが必要です。まず、このリンクから表示用のライブラリをダウンロードする必要があります:
ディスプレイライブラリ: https://github.com/Bodmer/TFT_HX8357_Due
ライブラリをダウンロードした後、User_Setup.hファイルを開く必要があります。 13行目をコメント化し、14行目をコメント解除します。これは、表示がHX8357Cドライバーを使用しているためです。これで、他の3つのライブラリを続行できます。リアルタイムクロック用に1つ、DHT22センサー用に1つ、最後にワイヤレスモジュール用に1つのライブラリが必要です。
- NRF24L01:https://github.com/TMRh20/RF24
- DHT22:https://github.com/adafruit/DHT-sensor-library
- DS3231:https://github.com/SodaqMoja/Sodaq_DS3231
コードを見てみましょう。最初に行う必要があるのは、リアルタイムクロックモジュールがまだ設定されていない場合は、時刻を設定することです。これを行うには、 setRTCTime
に現在の日付と時刻を入力します 関数、 setRTCTime
のコメントを解除します 54行目で関数を呼び出し、プログラムをArduinoにアップロードします。これで時間が設定されました。ただし、 setRTCTime
にコメントする必要があります 関数をもう一度呼び出して、プログラムをもう一度Arduinoにアップロードします。
受信機のコードは次のように動作します。セットアップ機能では、すべてのセンサーとモジュールを初期化し、ユーザーインターフェイスを印刷します。次に、ループ機能で、新しいワイヤレスデータを継続的にチェックします。新しいデータがある場合は、そのデータを変数に保存して、ディスプレイに出力します。温度と湿度を1分に1回読み取り、値に変化があった場合にのみ表示を更新します。このようにして、ディスプレイのちらつきをさらに減らします。また、華氏で表示された温度のコードのバージョンを用意しました。このチュートリアルに添付されているコードの両方のバージョンを見つけることができます。
F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino
ステップ9:プロジェクトのテスト <図> <図>
すべての電源を入れ、すべてが期待どおりに機能しているかどうかを確認するための最後のステップ。その場合、ディスプレイの上部に現在の日付と時刻が表示されます。ディスプレイの下部で、リモートセンサーとローカルセンサーの両方から温度と湿度を確認できます。
リモートセンサーのデータが表示されない場合 、送信機を近づけてください-範囲外の可能性があります。問題が解決しない場合は、すべての接続をもう一度確認してください。何か問題があるはずです。
ご覧のとおり、このプロジェクトは、オープンソースのハードウェアとソフトウェアの機能を示す優れたデモンストレーションです。数時間以内に、そのような印象的なプロジェクトを構築することができます!もちろん、これはほんの始まりに過ぎません。プロジェクトにさらに多くの機能を追加できます。すぐにボタンを追加して、グラフを表示したり、さまざまなモードを使用したりできるようにします。さらにセンサー、データロギング、インターネット接続などを追加することもできます。 Arduino Dueを使用しているので、さらに多くのことを実装するための十分なメモリがあります。このプロジェクトについてのご意見をお聞かせください。それがどのように進化するのを見たいですか?以下のコメントセクションにコメントやアイデアを投稿してください!
詳細が必要な場合は、紹介のYouTubeビデオを見るか、私のWebサイトにアクセスしてください。ご覧いただきありがとうございます!
コード
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-libraryGithub
https://github.com/TMRh20/RF24https://github.com/TMRh20/RF24Github
http:// DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_Duehttp:// DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_DueGithub
https://github.com/SodaqMoja/Sodaq_DS3231https://github.com/SodaqMoja/Sodaq_DS3231製造プロセス