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

4.3.1.1 概要

Img

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

Img

4.3.1.2 コンポーネントの知識

Img

Microbit 温度センサー

Img

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

検出範囲は -40 ~ 105℃ です。

OLED ディスプレイ

Img

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

130 モーター モジュールには、電磁誘導とローレンツ力に基づいて動作する直流モーターが搭載されています。主にステーター、ローター、整流子で構成されます。ステーターは固定磁場を発生し、ローター(電機子)はコイル巻線で構成され、通電時に磁場を生成します。ブラシと整流子を通ってローターのコイルに電流が流れると、ローターの磁場がステーターの磁場と相互作用してローレンツ力が発生し、ローターを回転させます。この回転中に整流子が電流の方向を切り替えることで、ローターに常に同じ方向の力が作用し続け、回転が維持されます。電磁誘導とローレンツ力により、直流モーターは電気エネルギーを機械エネルギーに変換します。

優れた速度制御性能と大きな始動トルクを持つため、直流モーターは電動工具、車両、家庭用電化製品などで広く使われています。

j124

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

回路図:

Img

HR1124S チップがモーターの駆動を補助します。ただし、モーターは大電流を必要とし、トランジスタでは駆動できず、ましてや IO ポートから直接駆動することはできません。モーターの両端に電圧を加えるだけで回転させることができます。電圧の方向により回転方向が変わります。定格電圧範囲内では、電圧が高いほどモーターは速く回転します。逆に電圧が低いほど回転は遅くなるか、場合によっては回転しないこともあります。

制御方式は、高・低レベルによる制御(回転と停止の制御)と PWM による回転速度の制御の 2 種類があります。

仕様:

  • 動作電圧: DC 5V

  • 動作電流: (Max)400mA@5V

  • 最大出力: 2W

  • 回転速度: (16000+10%) 回/分 @5V

Img

4.3.1.3 必要な部品

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

130 motor ×1

micro USB cable ×1

4 pin wire ×2

Img

Img

Img

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

Img

4.3.1.5 コードフロー

Img

4.3.1.6 テストコード

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

Img

⚠️ 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 を使用しています。

Img

簡単な説明:

① microbit と oled_ssd1306 のライブラリをインポートします。

from microbit import *
from oled_ssd1306 import *

② Microbit の 5×5 LED マトリックスが Img を表示します。

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 テスト結果

Img

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

Img

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

Img

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

Img

⚠️ 注意: OLED 表示では ℃ が文字化けするため、本コードでは C を使用しています。

⚠️ 注意: 実験で使用されているブロックはこのキットに含まれていません。

Tip: 結果が表示されない場合は、micro:bit ボードのリセットボタンを押してください。)

Img