4.3.1 スマート温度制御ファン
4.3.1.1 概要

室内温度が設定した基準値を超えると、スマートファンが作動して室温を快適な温度まで冷却します。さらに、OLED 表示は現在の室温とファンの動作状態をリアルタイムで表示し、直感的な温度制御のフィードバックをユーザーに提供します。

4.3.1.2 コンポーネントの知識

Microbit 温度センサー

micro:bit メインボードは実際には専用の温度センサーを搭載しておらず、nRF52833 チップを用いて温度検出を行っています。そのため、検出値はプロセッサーの温度に近く、周囲温度とは多少のズレが生じる場合があります。
検出範囲は -40 ~ 105℃ です。
OLED ディスプレイ

OLED 技術は豊かな色表現、高いコントラスト、広い視野角という顕著な利点があり、特に黒色表現が優れ、鮮明で生き生きとした画像を提供します。
OLED 表示の各ピクセルはバックライトを必要とせず自発光するため、比較的低消費電力です。小型(0.96 インチ)、高解像度(128×64 ピクセル)、低消費電力であるため、ウェアラブル機器に非常に適しています。
⚠️ 注意: 本プロジェクトでは、OLED 表示モジュールの SDA インターフェースをピン P20 に、SCL をピン P19 に接続します。
仕様:
動作電圧: DC 3.3V-5V
動作電流: 30mA
インターフェース: ピンヘッダ間隔 2.54mm
通信方式: I2C 通信
内部ドライバーチップ: SSD1306
解像度: 128×64
視野角: 150° 以上
130 モーター

130 モーター モジュールには、電磁誘導とローレンツ力に基づいて動作する直流モーターが搭載されています。主にステーター、ローター、整流子で構成されます。ステーターは固定磁場を発生し、ローター(電機子)はコイル巻線で構成され、通電時に磁場を生成します。ブラシと整流子を通ってローターのコイルに電流が流れると、ローターの磁場がステーターの磁場と相互作用してローレンツ力が発生し、ローターを回転させます。この回転中に整流子が電流の方向を切り替えることで、ローターに常に同じ方向の力が作用し続け、回転が維持されます。電磁誘導とローレンツ力により、直流モーターは電気エネルギーを機械エネルギーに変換します。
優れた速度制御性能と大きな始動トルクを持つため、直流モーターは電動工具、車両、家庭用電化製品などで広く使われています。

130 モーターは PWM による速度制御が可能です。使用時には制御のために 2 本のピンを接続する必要があります。パソコン冷却や産業生産など、ファン速度を調整する必要がある用途に適しています。小型、軽量で取り付けが簡単なため非常に実用的です。
回路図:

HR1124S チップがモーターの駆動を補助します。ただし、モーターは大電流を必要とし、トランジスタでは駆動できず、ましてや IO ポートから直接駆動することはできません。モーターの両端に電圧を加えるだけで回転させることができます。電圧の方向により回転方向が変わります。定格電圧範囲内では、電圧が高いほどモーターは速く回転します。逆に電圧が低いほど回転は遅くなるか、場合によっては回転しないこともあります。
制御方式は、高・低レベルによる制御(回転と停止の制御)と PWM による回転速度の制御の 2 種類があります。
仕様:
動作電圧: DC 5V
動作電流: (Max)400mA@5V
最大出力: 2W
回転速度: (16000+10%) 回/分 @5V

4.3.1.3 必要な部品
|
|
|
|---|---|---|
micro:bit V2 main board ×1 |
micro:bit shield ×1 |
OLED display ×1 |
|
|
|
130 motor ×1 |
micro USB cable ×1 |
4 pin wire ×2 |
|
|
|
fan ×1 |
battery holder ×1 |
AA battery(self-prepared) ×6 |
4.3.1.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 |
16 |
P16 |
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 |

4.3.1.5 コードフロー

4.3.1.6 テストコード
⚠️ Tip 1: Microbit ボードにコードをダウンロードする前に、ライブラリファイル “oled_ssd1306.py” をインポートしてください。参照: “Import Library on MU” .

⚠️ Tip 2: if() 条件内の閾値 28 は実際の状況に応じて変更できます。
全コード:
"""
Theme: smart temperature control fan
Function: OLED displays the temperature value and the microbit temperature sensor controls the on and off of the fan
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
"""
# import related libraries
from microbit import *
from oled_ssd1306 import *
display.show(Image.HAPPY) # LED matrix displays a happy pattern
# initialize and clear oled
initialize()
clear_oled()
while True:
clear_oled() # clear OLED
Temperature = temperature() # Read microbit temperature sensor
add_text(0, 0, "Temperature:") # Display the character string in the corresponding position of OLED
add_text(13, 0, str(Temperature) + " C") # Display temperature in the corresponding position of OLED
if Temperature >= 28: # when Temperature >= 28℃, fan rotates
add_text(0, 2, "Fan on") # Display the character string in the corresponding position of OLED
pin2.write_analog(500) # set P2 pin to analog 500
pin16.write_analog(0) # set P16 pin to analog 0
else: # or fan does not work
add_text(0, 2, "Fan off") # Display the character string in the corresponding position of OLED
pin2.write_analog(0) # set P2 pin to analog 0
pin16.write_analog(0) # set P16 pin to analog 0
sleep(1000)
⚠️ Tip 3: OLED 表示では ℃ が文字化けするため、本コードでは C を使用しています。

簡単な説明:
① microbit と oled_ssd1306 のライブラリをインポートします。
from microbit import *
from oled_ssd1306 import *
② Microbit の 5×5 LED マトリックスが
を表示します。
display.show(Image.HAPPY) # LED matrix displays a happy pattern
③ OLED のピクセルを初期化し、OLED をクリアします。
initialize() # initialize oled
clear_oled() # clear oled
④ 温度値を読み取り、OLED に表示します。
Temperature = temperature() # Read microbit temperature sensor
add_text(0, 0, "Temperature:") # Display the character string in the corresponding position of OLED
add_text(13, 0, str(Temperature) + " C") # Display temperature in the corresponding position of OLED
⑤ 判断文: if()…else…
センサーで検出した温度が 28℃ 以上のとき、OLED に “Fan on” と表示され、ファンが回転します。それ以外では OLED に “Fan off” と表示され、ファンは動作しません。
if Temperature >= 28: # when Temperature >= 28℃, fan rotates
add_text(0, 2, "Fan on") # Display the character string in the corresponding position of OLED
pin2.write_analog(500) # set P2 pin to analog 500
pin16.write_analog(0) # set P16 pin to analog 0
else: # or fan does not work
add_text(0, 2, "Fan off") # Display the character string in the corresponding position of OLED
pin2.write_analog(0) # set P2 pin to analog 0
pin16.write_analog(0) # set P16 pin to analog 0
⑥ 1000ms(1 秒)待機します。
sleep(1000)
4.3.1.7 テスト結果

配線と micro USB ケーブルでの通電後、外部電源(6 本の AA 電池)を接続して十分な電力供給を確保し、“Flash” をクリックしてコードを micro:bit ボードにダウンロードします。

テストコードをアップロードした後、micro:bit の裏面にあるリセットボタンを押します。

オンボードの 5×5 LED マトリックスが
を表示し、OLED は温度とファン状態をリアルタイムで表示します。温度が 28℃ を超えるとファンが回転し、それ以下ではファンは動作しません。

⚠️ 注意: OLED 表示では ℃ が文字化けするため、本コードでは C を使用しています。
⚠️ 注意: 実験で使用されているブロックはこのキットに含まれていません。
(Tip: 結果が表示されない場合は、micro:bit ボードのリセットボタンを押してください。)









