### 3.3.1 スマート温度制御ファン #### 3.3.1.1 概要 ![Img](./media/top1.png) 室内温度が設定した基準値を超えると、スマートファンが作動して部屋を快適な温度まで冷却します。さらに、OLEDディスプレイは現在の室内温度とファンの動作状態をリアルタイムで表示し、直感的な温度制御のフィードバックを提供します。 ![Img](./media/bottom1.png) #### 3.3.1.2 コンポーネントの知識 ![Img](./media/2top.png) **micro:bit 温度センサー** ![Img](./media/j501.png) micro:bit のメインボードには専用の温度センサーは搭載されておらず、nRF52833 チップを用いて温度検出を行います。したがって、検出値はプロセッサの温度に近く、周囲温度と若干のずれが生じることがあります。 検出範囲は -40 ~ 105℃ です。 **OLED ディスプレイ** ![Img](./media/A636.png) OLED 技術は豊かな色表現、高コントラスト、広い視野角という顕著な利点があり、特に黒の描写に優れており、鮮明で生き生きとした画像を提供します。 OLED ディスプレイの各ピクセルはバックライトを必要とせず自ら発光するため、比較的低消費電力です。小型(0.96インチ)、高解像度(128×64ピクセル)、低消費電力であるため、ウェアラブル機器に非常に適しています。 ⚠️ **注:** 本プロジェクトでは、OLED モジュールの SDA 接続はピン P20、SCL はピン P19 に接続します。 **パラメータ:** - 動作電圧: DC 3.3V-5V - 動作電流: 30mA - インターフェース: ピンヘッダ ピッチ 2.54mm - 通信方式: I2C 通信 - 内蔵ドライブチップ: SSD1306 - 解像度: 128×64 - 視野角: 150° 以上 **130 モーター** ![Img](./media/cou710.png) 130 モーターモジュールには、電磁誘導とローレンツ力に基づいて動作する DC モーターが搭載されています。主にステーター、ローター(アンチュア)および整流子で構成されます。ステーターは固定磁界を生成し、コイル巻線からなるローターは通電時に磁界を発生します。ブラシと整流子を経てローターコイルに電流が流れると、ローターの磁界とステーターの磁界が相互作用し、ローターを回転させるローレンツ力が発生します。回転中、整流子は電流の向きを切り替え、ローターが常に同じ方向の力を受け続けるようにして回転を維持します。電磁誘導とローレンツ力により、DC モーターは電気エネルギーを機械エネルギーに変換します。 優れた速度制御性能と大きな始動トルクを持つため、DC モーターは電動工具、車両、家庭用電化製品で広く使用されています。 ![j124](./media/j124.png) 130 モーターは PWM による速度制御が可能です。使用時には2本のピンを接続して制御します。ファンの回転速度を調整する必要がある応用(PC 冷却や工業生産など)に適しており、小型・軽量で取り付けが容易なため実用的です。 **回路図:** ![Img](./media/cou712.png) HR1124S チップがモーター駆動を補助します。ただしモーターは大電流を必要とするためトランジスタでも直接 IO ポートでも駆動できません。モーターの両端に電圧を加えることで回転させることができます。回転方向は電圧の向きによって変わります。定格電圧範囲内では、電圧が高いほどモーターは高速に回転し、逆に電圧が低いほど回転は遅くなり、場合によってはまったく回転しないこともあります。 制御方法は、高低レベルによる制御(回転/停止)と PWM による制御(回転速度)があります。 **パラメータ:** - 動作電圧: DC 5V - 動作電流: (Max)400mA@5V - 最大出力: 2W - 回転数: (16000+10%) r/min@5V ![Img](./media/2bottom.png) #### 3.3.1.3 必要な部品 | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 メインボード ×1 | micro:bit シールド ×1 |OLED ディスプレイ ×1 | |![Img](./media/motor.png) |![Img](./media/usb.png) |![Img](./media/4pin.png)| |130 モーター ×1| micro USB ケーブル ×1 |4ピン配線 ×2 | |![Img](./media/fan.png) |![Img](./media/batterycase.png)| ![Img](./media/AAbattery.png)| |ファン ×1|電池ホルダー ×1|単3電池(**自分で用意**) ×6| #### 3.3.1.4 配線図 ⚠️ **配線時は、配線の色にご注意ください。** | 130 モーター | 配線色 | micro:bit シールド ピン |micro:bit ボード ピン | | :--: | :--: | :--: | :--: | | G | 黒 | G | G | | V | 赤 | V2 | V | | IN+ | 青 | 2 | P2 | | IN- | 緑 | 16 | P16 | | OLED ディスプレイ | 配線色 | micro:bit シールド ピン |micro:bit ボード ピン | | :--: | :--: | :--: | :--: | | GND | 黒 | G | G | | VCC | 赤 | V2 | V | | SDA | 青 | 20 | P20 | | SCL | 緑 | 19 | P19 | ![Img](./media/couj1.png) #### 3.3.1.5 コードのフロー ![Img](./media/flow-chart-1.png) #### 3.3.1.6 テストコード ⚠️ **if() 条件内のしきい値 28 は実際の状況に応じて変更できます。** **完全なコード:** ![Img](./media/couj01.png) ⚠️ **注: コードでは ℃ の代わりに C を使用しています。OLED に表示すると ℃ が文字化けするためです。** ![Img](./media/line1.png) **簡単な説明:** ① OLED のピクセルを初期化し、OLED をクリアし、micro:bit の 5×5 LED ドットマトリクスが ![Img](./media/ab3.png) を表示します。 ![Img](./media/cou00.png) ② OLED に温度値を1行で表示します。 ![Img](./media/cou01.png) ③ 改行を挿入します。 ![Img](./media/cou02.png) ④ 判断文: if()...else... センサーで検出した温度が 28℃ 以上の場合、OLED に “Fan on” と表示され、ファンが回転します。それ以外では、OLED に “Fan off” と表示され、ファンは動作しません。 ![Img](./media/cou04.png) ⑤ 1000ms(1秒)待機します。 ![Img](./media/cou05.png) #### 3.3.1.7 テスト結果 ![Img](./media/4top.png) 配線および micro USB ケーブルによる電源供給後、外部電源(単3電池6本)を接続して十分な電力供給を確保してください。 Windows 10 用 App ではダウンロードをクリックするだけです。ブラウザの場合は、生成された “.hex” ファイルを micro:bit ボードに送信してください。 テストコードを micro:bit ボードにアップロードすると、オンボードの 5×5 LED マトリクスが ![Img](./media/ab3.png) を表示し、OLED は温度とファンの状態をリアルタイムで表示します。 温度が 28℃ を超えるとファンが回転します。そうでない場合、ファンは動作しません。 ![Img](./media/dongtu-1.gif) ⚠️ **注: 実験で使用したブロックはこのキットに含まれていません。** (**ヒント:** 結果が表示されない場合は、micro:bit ボードのリセットボタンを押してください。) ![Img](./media/4bottom.png)