### 3.3.7 温湿度調整 #### 3.3.7.1 概要 ![Img](./media/top1.png) 本プロジェクトでは、micro:bit ボード、XHT11 温湿度センサー、130 モーター、加湿モジュール(atomization module)および OLED 表示器を使って温湿度調整システムを構築する方法を紹介します。 システムは XHT11 センサーで周囲の温度と湿度を測定し、必要に応じてファンの回転や加湿モジュールによるミスト噴霧を制御して調整します。温度または湿度が設定した閾値を超えると、ファンを作動させ、加湿モジュールからミストを噴霧します。 同時に OLED には現在の温度と湿度がリアルタイムで表示されます。 温湿度を調整できるため、温湿度管理が必要なプロジェクトに広く応用できます。 ![Img](./media/bottom1.png) #### 3.3.7.2 コンポーネントの知識 ![Img](./media/2top.png) **XHT11 Temperature and Humidity Sensor** ![Img](./media/XHT11.png) XHT11 温湿度センサーはデジタル信号を出力します。アナログ信号を取得・変換し、温度と湿度を検出して長期安定性と高信頼性を確保します。さらに、高精度の抵抗式湿度センサーと抵抗式温度センサーを内蔵し、8ビットの高性能マイコンに接続されています。 **XHT11 の通信方式:** XHT11 は簡略化されたシングルバス通信を採用しています。シングルバスとはデータ線が1本しかないことを意味し、システム内のデータ交換と制御はすべてこの1本で行われます。 - シングルバスデータビット送信の定義: - シングルバスデータ形式:40ビットのデータを一度に送信し、上位ビットから出力されます。 - 8ビット湿度整数部 + 8ビット湿度小数部 + 8ビット温度整数部 + 8ビット温度小数部 + 8ビットパリティビット。**湿度の小数部は 0 に注意してください。** - パリティビットの定義: - 8ビット湿度整数部 + 8ビット湿度小数部 + 8ビット温度整数部 + 8ビット温度小数部。8ビットのパリティビットはこれらの合計の下位8ビットです。 ![Img](./media/cou73-1.png) データ時系列図: ホスト(MCU)が一度スタート信号を送ると、XHT11 は低消費電力モードから高速モードに切り替わります。ホストのスタート信号が終了すると、XHT11 は応答信号を返し、40ビットデータを出力して信号を取得します。信号伝送は下図のように行われます。 ![Img](./media/A229.png) ⚠️ **注意:** ホストが XHT11 から読み取る温度と湿度のデータは常に前回の測定値です。もし2回の測定間隔が長い場合は、連続で2回読み取り、2回目に得られた値をリアルタイム値として使用してください。 **回路図:** ![Img](./media/cou73-2.png) **パラメータ:** - 動作電圧: DC 3.3V~5V - 動作電流: (Max)2.5mA@5V - 最大消費電力: 0.0125W - 温度範囲: -25 ~ +60℃ (±2℃) - 湿度範囲: 5 ~ 95%R(約25℃付近で±5%RHの精度) - 出力信号: デジタル双方向シングルバス **Atomization Module(加湿モジュール)** ![Img](./media/Atomization.jpg) 加湿モジュールはドライバと加湿シートで構成され、水を微粒化します。マイコンや手動ボタンで制御できます。 **動作原理:** 加湿モジュールは一般に超音波技術を用いてミストを生成します。圧電セラミック板を含み、高周波の電圧が加わると振動を始めます。振動により水面上に小さな水滴が集まり、それらが拡散して微細なミストを形成します。 **ミストの粒子サイズ:** このモジュールは水を通常1〜5ミクロンの微小粒子に効果的に変換できます。この微細なミストは蒸発しやすく空気中に拡散するため、加湿効果が高いです。 ⚠️ **注意:** **1. 電源を入れた後、加湿シートは必ず水中に設置してください。空気中に長時間放置するとシートが加熱して焼損する恐れがあります。** **2. 加湿シートは水面にやさしく置いてください。水没させるとミストが発生しません。** **パラメータ:** - 動作電圧: DC 5V - 取り付け穴: 直径4.8mm、ピッチ16mm - 寸法: 長さ31mm、幅23mm、高さ8mm - 重量: 4.5g - 動作温度: -25℃〜+60℃ - モジュールインターフェース: 3ピン曲線ピン、ピッチ2.54 - 加湿シートインターフェース: PH2.0 メス端子 - 機能: 水を微細なミストに変換して空気中に放出する **加湿シート寸法:** ![Img](./media/AB10.jpg) ⚠️ **注意: 加湿シートの配線をなるべく引っ張らないでください。はんだ付け部分が剥がれる恐れがあります。** **加湿モジュールの使用手順:** 制御方法はボタン制御と MCU による制御の2通りがあります。 **ボタン制御:** ボタンを押すと加湿モジュールがオンになります。再度ボタンを押すとオフになります。 **MCU プログラミング制御:** ボタンの押下を模擬します。通常は出力が High で、押されたときに Low になります。ボタンを離すと再び High を出力します。 したがって MCU を使う場合、モジュールに短時間の Low レベルを入力すればボタンを押したのと同じ動作になります。High レベルの時間を調整することで加湿モジュールの開始・停止時間を制御できます。 **綿棒を取り付ける:** 1\. 綿棒を十分に水に浸します(綿棒全体が水で覆える大容量の容器を用意し、5分以上浸して十分に水を吸収させてください)。 ![Img](./media/ASZX11.png) 2. プラスチックブラケットの内側に加湿シートを取り付けます。シートの向きに注意し、配線をブラケットの溝に通してください。 ![Img](./media/AB051.png) ![Img](./media/AB05.jpg) 3. プラスチックブラケットの反対側を閉じます。 ![Img](./media/AB06.jpg) 4. 綿棒をブラケットの中央に挿入します。必ず底まで押し込み、加湿シートに触れるまで入れてください。 ![Img](./media/AB07.jpg) 5. 加湿シートをモジュールの PH2.0 メス端子に接続します(下図参照)。 ![Img](./media/AB09.png) 6. 加湿モジュールを micro:bit shield に接続し、外部電源を接続します。 ![Img](./media/WPS010.png) 7. 綿棒を再度水に3分以上浸してください。綿棒ができるだけ水で覆われるようにしますが、水があふれないようにしてください。 ![Img](./media/WPS11.jpg) 8. モジュールの黒いボタンを押すと噴霧が始まるのが確認できます。ミストは約3秒間噴霧されます。再度ボタンを押すと停止します。 ⚠️ **注意: 加湿シートを長時間連続で動作させないでください。1回の動作は5秒を超えないようにし、綿棒が十分に水を含むまで1〜2分ほど休止してから再度動作させることを推奨します。さもないと焼損する可能性があります。** ![Img](./media/sz12.png) ![Img](./media/WPS12.jpg) ![Img](./media/2bottom.png) #### 3.3.7.3 必要部品 | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) | ![Img](./media/Atomization1.png)| | :--: | :--: | :--: | | micro:bit V2 main board ×1 | micro:bit shield ×1 |atomization module ×1| |![Img](./media/DHT11.png)|![Img](./media/OLED.png)|![Img](./media/motor.png) | |XHT11 temperature and
humidity sensor ×1|OLED display ×1 |130 motor ×1| |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/3pin.png)| | micro USB cable ×1 |4 pin wire ×2 |3 pin wire ×2 | |![Img](./media/fan.png) |![Img](./media/batterycase.png)| ![Img](./media/AAbattery.png)| |fan ×1|battery holder ×1|AA battery(**self-prepared**) ×6| #### 3.3.7.4 配線図 ⚠️ **配線する際は、必ず配線色に注意してください。** | 130 motor | wire color | micro:bit shield pin | micro:bit board pin | | :--: | :--: | :--: | :--: | | G | black | G | G | | V | red | V2 | V | | IN+ | blue | 2 | P2 | | IN- | green | 13 | P13 | | OLED display | wire color | micro:bit shield pin | micro:bit board pin | | :--: | :--: | :--: | :--: | | GND | black | G | G | | VCC | red | V2 | V | | SDA | blue | 20 | P20 | | SCL | green | 19 | P19 | | atomization module | wire color | micro:bit shield pin | micro:bit board pin | | :--: | :--: | :--: | :--: | | G | black | G | G | | V | red | V2 | V | | S | yellow | 16 | P16 | | XHT11 temperature and
humidity sensor | wire color | micro:bit shield pin | micro:bit board pin | | :--: | :--: | :--: | :--: | | G | black | G | G | | V | red | V1 | V | | S | yellow | 0 | P0 | ![Img](./media/couj7.png) #### 3.3.7.5 コードのフロー ![Img](./media/flow-chart-7.png) #### 3.3.7.6 テストコード ⚠️ **if() 条件内の閾値 30 と 70 は実際の状況に応じて変更可能です。** **完成コード:** ![Img](./media/couj07.png) ![Img](./media/line1.png) **簡単な説明:** ① OLED のピクセルを初期化し、OLED をクリアします。5×5 LED マトリクスは ![Img](./media/ab6.png) を表示します。temperature と humidity の2つの変数を定義し、初期値を 0 に設定し、加湿モジュールをオフにします。 ![Img](./media/cou23.png) ② XHT11 センサーから読み取った温度値を変数 temperature に、湿度値を変数 humidity に代入します。 ![Img](./media/cou24.png) ③ OLED に XHT11 センサーが検出した温度と湿度の値を表示します。 ![Img](./media/cou25.png) ④ 判定文: if()...else... 検出した温度が 30℃ を超える、または湿度が 70%RH を超える場合、ファンは2秒間回転した後に停止します。その後、加湿モジュールが作動してミストを噴霧し、周囲の温度と湿度を調整します。同時に OLED には「冷却/加湿(Cooling/Humidifying)」と表示されます。 ![Img](./media/cou26.png) それ以外の場合は、ファンと加湿モジュールは動作せず、OLED には「通常状態(Normal State)」と表示されます。 ![Img](./media/cou27.png) ⑤ 500ms(0.5秒)待機 ![Img](./media/cou28.png) #### 3.3.7.7 テスト結果 ![Img](./media/4top.png) 配線を行い、micro USB ケーブルで電源を入れた後、外部電源(単3電池×6)を接続して十分な電力供給を確認します。 Windows 10 アプリの場合は Download をクリックするだけです。ブラウザの場合は、“.hex” ファイルを micro:bit ボードに送信してください。 テストコードを micro:bit ボードにアップロードすると、OLED に XHT11 センサーが検出した温度と湿度の値がリアルタイムで表示されます。 検出した温度が 30℃ を超える、または湿度が 70%RH を超える場合、ファンは2秒間回転した後に停止します。その後、加湿モジュールが作動してミストを噴霧し、周囲の温度と湿度を調整します。同時に OLED には「冷却/加湿(Cooling/Humidifying)」と表示されます。それ以外の場合は、ファンと加湿モジュールは動作せず、OLED には「通常状態(Normal State)」と表示されます。 ![Img](./media/dongtu-7.gif) ⚠️ **注意: 実験で使用するブロックはこのキットには含まれていません。** (**ヒント:** 結果が表示されない場合は、micro:bit ボードのリセットボタンを押してください。) ![Img](./media/4bottom.png)