DHT Tiny Breakout for the Raspberry Pi
ハードウェアコンポーネント: AtmelATTiny85×1DHT22温度センサー×1DHT11温度および湿度センサー×1SparkFunTinyAVRプログラマー×1Adafruit4.7KΩ抵抗器×3Adafruit10KΩ抵抗器×1Adafruit100Ω抵抗器×1Adafruit拡散青3mmLED×1Adafruit触覚ボタンスイッチ×1 ″ 36ピンストリップオスヘッダー1個@長さ6、1個@長さ2(合計8ピン)×1汎用ジャンパー(0.1″)×1ArduinoUNOおよびGenuinoUNOオプション–デバッグおよびテストに使用。×1 ソフトウェアアプリおよびオンラインサービス: Microsoft Visual Studio 2015Microsoft Windows 10 IoT CoreArduino IDE
DHT11とDHT22は、非常に低コストで精度が高いため、一般的な温度および湿度センサーです。ただし、それらの問題の1つは、正確なタイミングを必要とする独自のOneWireプロトコルで動作することです。これらのセンサーは、非リアルタイムオペレーティングシステムを搭載したボードでは読みにくいことが証明されています。
しばらく前に、「 DHT11 / DHT22温度センサー」というタイトルの記事を投稿しました 」では、C#のMicrosoft C ++サンプルコードを使用してこれらのセンサーを読み取る方法を示しています。ライブラリは読み取り値を取得できましたが、信頼性を高めるために再試行ロジックを追加する必要がありました。これはほとんどの人にとって成功したことが証明されましたが、これを一貫して機能させるのに問題があった人もいました。
Windows 10 IoTCoreの実行中にRaspberryPiでこれらのセンサーを使用することへの関心のレベルを考慮して、低コストを維持しながらこれらのセンサーを読み取る非常に信頼性の高い方法を提供する2番目のオプションを作成することにしました。
ここで紹介するアプローチは、DHTセンサーを安価なATtiny85に接続し、I2Cスレーブデバイスとしてセットアップすることです。これは、TinyWireSライブラリを使用し、デバイスと対話するために読み取りおよび書き込みが可能なレジスタのセットを作成することで実現されます。
デバイスは次の機能をサポートしています:
- DHTセンサーを読み取る頻度を指定するための構成可能な読み取り間隔。デフォルトでは、2秒ごとに読み取ります。
- 間隔を無効にし、オンデマンドで読み取りを行う手動モード。
- 現在の温度測定値がしきい値を上回ったり下回ったりしたときに割り込みピンをトリガーする、構成可能な上限および下限温度しきい値。
- 電源投入時またはリセット後に構成済みの設定を復元できる構成保存モード。
- 構成をリセットすると、保存した構成をデフォルト値にリセットできます。
- センサーへの電力を有効または無効にして電力を節約できるセンサー電力制御。
- プログラム可能なi2cデバイスアドレス。このデバイスのデフォルトアドレスは0x26ですが、コマンドで変更できます。デバイスはアドレスを記憶します。リセットすると、アドレスは0x26に戻ります。 C#ライブラリには、i2cバス上のデバイスを検索するためのコードも含まれているため、接続するアドレスを知る必要はありません。
- プログラム可能なDHTモデルの選択。ファームウェアのデフォルトはDHT22ですが、これは、別のモデルを使用するようにデバイスにコマンドを送信することで変更できます。モデルは保存されるため、再起動または電源を入れ直すたびに、使用するモデルタイプが保持されます。
このプロジェクトには3セットのコードがあります。ボードのメインファームウェア、Arduino Unoに接続した状態でボードをテストおよびデモンストレーションするために使用されるArduinoマスタースケッチ、およびRaspberryPiからデバイスを使用する方法を示すWindow10 IoTCodeアプリケーション。すべてのコードは、リンクされたGitHubリポジトリで利用できます。
回路は小さく、いくつかの安価なコンポーネントのみを使用しています。 ATtiny85は複数のベンダーから購入できます。それらは多くの有用な目的を持っているので、私はそれらのいくつかを拾うことをお勧めします。
この回路には6ピンのヘッダーがあり、エーテルを別の回路に接続したり、RaspberryPiに直接接続したりできます。ピンは次のように定義されています:
- GND-> これを回路のアースまたはRaspberryPiのアースピンに接続します。
- RST-> このピンは、デバイスをリセットまたは再起動するために使用されます。このピンは、通常の操作では5Vに接続する必要があります。デバイスをリセットするには、このピンで瞬間的なLOWパルスをトリガーします。
- INT-> このピンには2つの目的があります。しきい値が有効になっている場合、このピンはしきい値を超えるとHIGHになり、それ以外の場合はLOWになります。省電力モードを使用する場合、このピンは瞬間的な高パルスをトリガーすることによってデバイスをウェイクアップするために使用されます。
- SDA-> I2CSDAライン。
- SCL-> I2CSCLライン。
- 5V-> 5V電源。
オンボードLEDを有効にするためにジャンパーを追加したり、無効にするために削除したりできる2ピンヘッダーもあります。
これをより大きなプロジェクトで利用する場合、DHTTinyの回路をプロジェクトの既存の回路にマージまたは埋め込むことができます。この場合、ヘッダーピンとLEDはオプションです。
回路は別のボード上に構築し、数本のワイヤーまたは接続ケーブルでRaspberryPiに接続することもできます。
ATtiny85のプログラミング
DHT_Tiny_Breakout.ino というスケッチを読み込みます AVRプログラマーを使用してATtiny85に接続します。プログラマーがいない場合は、Arduino Uno(または同様のボード)を使用できます。ヘルプが必要な場合は、以下にリストされている1つ以上の記事を参照してください。
- ArduinoUnoを使用したATtiny85のプログラミング Hackster.ioで
- 仮想ワークショップ:ArduinoでATTiny85をプログラムする
- Arduino 1.6(または1.0)を使用したATtinyのプログラミング
- Arduino0022を使用したATtinyのプログラミング
SparkFun TinyAVRプログラマーを使用してATtiny85をロードしています。
チップを16MHzで実行しています。 「 ATtiny @ 16MHz 」というタイトルの私の記事を参照してください これを行う方法については、」を参照してください。
ATtiny85を使用する場合、スレーブスケッチには TinyWireS が必要です。 ライブラリフォルダにインストールするライブラリ。このライブラリはhttps://github.com/rambo/TinyWireからダウンロードできます。
最初のステップは、DHTTinyをブレッドボード上で稼働させることです。ハーフサイズのブレッドボードを使用して、プロジェクトに含まれている回路図とブレッドボード図に従って回路を構築します。
簡単にするためのヒントをいくつか紹介します。
- ブレッドボード上にDHTTinyを構築してから、別のブレッドボードを使用してDHTTinyとUnoまたはRaspberryPiを接続します。
- DHT Tinyを単一のユニットとして接続および切断するのが簡単になるため、ヘッダーピンの使用をお勧めします。
- ブレッドボードで標準の分離型オスヘッダーを使用する場合は、ブレッドボードに収まるように、ピンの中央にある黒いプラスチックのリムを調整する必要があります(下の画像を参照)。ラジオペンチを使用して調整します。
- 非常に長いブレークアウェイ0.1インチオスヘッダーがある場合は、ブレッドボードでこれらを使用してください。コンポーネントをPCBにはんだ付けする場合は、通常のサイズのヘッダーを使用してください。余分な長さはPCBには推奨されません。
- ブレッドボードのヘッダーピンを使用する場合は、メス-メスのジャンパー線が必要になります。これらがない場合は、ヘッダーピンを省略し、2つのボードの間にオス-オスジャンパー線を使用します。
- ワイヤをチップからできるだけ離して、プログラミングのために指を出し入れしやすくします。
以下は、私のDHTTinyのブレッドボードバージョンの画像です。
ArduinoUnoを接続する
簡単なテストやデモンストレーションに興味がある場合、またはこれをRaspberry Piで機能させるのに問題がある場合は、DHTTinyをArduinoUno(または同様のデバイス)に接続できます。
- GND を接続します GND に固定します 宇野に。
- 5V を接続します 5V に固定します 宇野に。
- RST を接続します D4 に固定する 宇野で。
- SDA を接続します A4 に固定する 宇野で。
- SCL を接続します A5 に固定する 宇野で。
- INT を接続します D3 に固定する Unoで、ジャンパーを介してLEDを有効にします。
DHT_Tiny_Master.ino という名前のスケッチを読み込んで実行します 。このスケッチは、シリアルモニターに出力を表示します 。
2つのボード間にI2Cを接続するときは、SDAラインとSCLラインにプルアップ抵抗を配置することが重要です。この回路では、ピンと5Vの間に2つの4.7KΩが接続されています。
以下は、ArduinoUnoに接続されたDHTTinyブレッドボードの画像です。
簡単なテストやデモンストレーションに興味がある場合、またはこれをRaspberry Piで機能させるのに問題がある場合は、DHTTinyをArduinoUno(または同様のデバイス)に接続できます。
- GND を接続します GND に固定します (ピン9)Raspberry Pi2 / 3に挿入します。
- 5V を接続します 5V に固定します (ピン2)Raspberry Pi2 / 3に挿入します。
- RST を接続します GPIO4 に固定する (ピン7)Raspberry Pi2 / 3で。
- SDA を接続します SDA に固定する (ピン3)Raspberry Pi2 / 3上。
- SCL を接続します SCL に固定する (ピン5)Raspberry Pi2 / 3で。
- INT を接続します GPIO17 に固定する (ピン11)そしてLEDを有効にします。
2つのボード間にI2Cを接続するときは、SDAラインとSCLラインにプルアップ抵抗を配置することが重要です。この回路では、ピンと3V3の間に2つの4.7KΩが接続されています。
非常に重要です! DHT Tinyボードは、Raspberry Piの5Vピンから電力を供給されますが、プルアップ抵抗はRaspberry Piの3V3ピンに接続する必要があります(3V3はピン1と17にあります)。
以下は、Raspberry Pi3に接続されたDHTTinyブレッドボードの画像です。
Windows10アプリケーションの実行
プロジェクトの下部にあるGitHubリポジトリリンクからコードを取得し、コンピューターに解凍します。 Visual Studio 2015でユニバーサルアプリケーションのソースコードを開き、Raspberry Piにデプロイして管理コンソールから起動するか、VisualStudioからデバッグモードで実行します。
Windows 10 IoTCoreアプリケーション用のコードfrmVisual Studioを初めて実行する場合は、Microsoftの次の記事を参照してください。
- VisualStudioを使用したアプリのデプロイ
- Windowsデバイスポータル
以下のビデオデモを見て、DHTTinyに接続しているときにRaspberryPi3で実行されているアプリケーションを確認してください。
Windows 10 UWPアプリケーションは、DHTTinyのすべての機能を紹介するデモアプリケーションです。コードは、デバイスからの現在の温度、湿度、およびその他のレジスタ値を表示します。 UIは、デバイスアドレスを含むデバイスの構成を変更する方法も提供します。
DHTタイニーライブラリ
サンプルコードは、DHTTinyとやり取りするために作成されたライブラリを使用しています。このライブラリはすぐに使用でき、すべてのアプリケーションに直接含めることができます。
NuGetからライブラリを取得
プロジェクトをアプリケーションに直接含めたくない場合は、以下に示すコマンドを使用して、NuGetからDHTTinyライブラリをダウンロードするだけです。 Visual Studioでパッケージマネージャーコンソールを開き、コマンドを入力します。
PM> Install-Package IoT.DhtTiny
DHT Tinyライブラリには、i2cバスでDHT Tinyデバイスを検索し、アドレスのリストを返すメソッドが含まれています。このリストを使用して、見つかった1つ以上のデバイスを初期化できます。これは、デバイスのアドレスを変更したが、アドレスを何に設定したかを思い出せない場合に特に便利です。コールバックメソッドはオプションであることに注意してください。
// *** // *** i2cバス上のDHTTinyデバイスを列挙します。//***IEnumerableaddress=await DhtTiny.FindAllDhtTinyAsync(this。 FindAllDhtTinyCallback); // *** // ***コールバックメソッド// *** private void FindAllDhtTinyCallback(I2cScanEventArgs e){intpercentComplete =(int)((double)e.CurrentIndex /(double)e.Total * 100.0d); this.Status =string.Format( "デバイスの検索[0x {0:X2}] [{1}%] [Found ={2:## 0}] ..."、e.CurrentAddress、percentComplete、e.Items .Count());}
ラズベリーパイのDHTタイニーブレイクアウトの概略図
この動画では、ブレッドボード上のDHTTinyに接続されたRaspberryPi3で実行されているユニバーサルアプリケーションの両方を紹介しています。
[近日公開の動画]
ボードを作成する最も簡単で費用効果の高い方法は、AdafruitのPerma-ProtoQuarterサイズのブレッドボードPCBなどのPCBプロトタイプボードを使用することです。下の画像は、このプロトタイプボードを使用したブレイクアウトを示しています。ボードのパワーレールセクションを取り外すためにドレメルを使用したことに注意してください。
詳細:ラズベリーパイのDHTタイニーブレイクアウト
製造プロセス