【Raspberry Pi】第2回:空冷ファンのON/OFFを行う

Raspberry Pi

前回は温度センサーの動作までを確認

ラズパイ4に温度センサーを接続し、コマンドで温度を確認できるところまで実施しました。

第2回ではラズパイに空冷ファンを接続してコマンドでON/OFFを制御できるところまで確認します。

次回は測定結果をpythonで整形、出力したいと思います。 」

こんなことを第1回では予告していたな・・・

あれは嘘だ

もうちょっと先でやります

用意するもの

空冷ファン

CPUクーラー虎徹のCPUファンを再利用します。

最低3.3Vで動くファンなら何でもOKです。

▼ちなみにコネクタは4pinでPWM制御対応なのですが今回はON/OFFのみ使います。

DC/DCコンバータ

秋月電子さんで購入した昇圧型の可変出力電源モジュールです。

  • 入力電圧範囲:2.3~5.5V
  • 出力電圧範囲:5~25V

通販コードは「 K-04377 」なのですが、2020年11月現在は取扱いが無い模様・・・

今購入するなら以下のパーツをおすすめ。

最大24V出力 昇圧型スイッチング電源モジュール LMR62421使用キット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作最大24V出力 昇圧型スイッチング電源モジュール LMR62421使用キット秋月電子通商 電子部品通信販売
DC/DCコンバータを使う理由

コンバータ無しでもCPUファンは一応は使えます。

ただし、CPUファンは12Vまで対応していますがラズパイの5Vのままだと回転数が足りなくて風量が全く無いので今回は5V→12Vまで電圧を昇圧させる必要があります。

空冷ファンの取り付け方法

空冷ファンの配線

ファンコネクタは4pinタイプで、配線は以下のようになっています。

今回はPWM制御をせず、マイナスとプラスの配線のみを使います。

DC/DCコンバータの配線

①~⑤の配線があるのですが、以下の仕様となっています。

  • ⑤出力ON/OFF制御
  • ④入力(+2.3~+5.5V)
  • ③GND
  • ②GND
  • ①出力(+5~+25V)

配線のポイントは以下の通りです。

  • ⑤(出力ON/OFF制御)はラズパイのGPIO17へ接続
  • ④(入力)はラズパイのGPIO(5V)へ接続
  • ③(GND)はラズパイのマイナスへ接続
  • ②(GND)はファンのマイナスへ接続
  • ①(出力)はファンのプラスへ接続

上部のトグルスイッチの仕様は以下の通り。

  • 左側に倒す:電圧はそのまま透過する(ラズパイの5Vのまま使うならここにセット)
  • 真ん中:ON/OFF制御する場合はこの位置にセットする(今回はここにセット)
  • 右側へ倒す:単純に昇圧/降圧だけする場合はこの位置(今回は使わない)

電圧の昇圧/降圧(青いパーツ)の動作は以下の通りです。

  • 時計回りにダイヤルを回す:昇圧する
  • 反時計回りにダイヤルを回す:降圧する

全体の配線

ということでで、配線の全体像は以下の通りです。

今回追加する空冷ファンのパーツが無いのでまたもやLEDを代わりに記載しました。

GPIOのピンアサインはいつも通り公式を参考にしました。

Raspberry Pi Documentation - Raspberry Pi OS
The official documentation for Raspberry Pi computers and microcontrollers

電圧を昇圧してみた

12.1Vくらいまでコンバータのダイヤルを回して昇圧してみました。

ファンの風量は増大し、ファンの音が大きいですwww

ただし、GPIO17でON/OFF制御してもOFF時にファンが回り続けるんですよね・・・

OFF制御時にGPIO17の電圧が0Vになるのは確認したのでDC/DCコンバータの仕様なのかもしれません。

つまりファンが常に回転している状態ですwww

その他の動作は問題無さげなので、次はラズパイからファンをON/OFFしてみます。

GPIOの操作方法

GPIOの状態を表示する

$ gpio readall
Oops - unable to determine board type... model: 17

あれ?表示できないw

GPIOコマンドのバージョンを確認

$ gpio -v
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Unknown17, Revision: 02, Memory: 0MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi 4 Model B Rev 1.2
  * This Raspberry Pi supports user-level GPIO access.

古いらしい。下記を参考にバージョンアップしましょう。

$ cd /tmp/

$ wget https://project-downloads.drogon.net/wiringpi-latest.deb

$ sudo dpkg -i wiringpi-latest.deb

$ gpio -v
gpio version: 2.52
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 4B, Revision: 02, Memory: 4096MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi 4 Model B Rev 1.2
  * This Raspberry Pi supports user-level GPIO access.

バージョンは2.50→2.52にアップ。無事にGPIOのステータスを表示できました。

$ gpio readall
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
ピン番号の指定方法

GPIOピン番号は「BCM」の列が該当します。

例:GPIO17 → BCM列の17(=Physical列の11)

物理のピン番号をコマンドなどで指定することもできます。

例:物理11 → Physical列の11(=BCM列の17)

ちょっと混乱しやすいですが、プログラムに記載などするときは指定方法に注意しましょうw

PythonでGPIOを操作する

今回の本題です。

以下が動作確認プログラムです。vimまたはnanoあたりで作成します。

$ cat fan_control.py
from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(5)
    led.off()
    sleep(5)

gpiozeroを利用しました。

gpiozero — GPIO Zero 1.6.2 Documentation

LEDのライブラリですが動作的に問題なかとです。

GPIO17をONにして5秒経過したらOFF。5秒経過したら再びONのループです。

実行は下記のコマンドで。

$ python fan_control.py

問題点

GPIOをONしたときは電圧が3.15V程度流れます。

前述したようにOFF時は電圧は0.0Vまで下がりますがファンは回ったまま/(^o^)\

最終的には温度センサーの取得値によって空冷ファンをON/OFF制御できるようにしたいので、どうにかファンを完全停止させたいところ・・・

GPIOの5VをON/OFF制御できれば解決できそうなんですが、手段が無さそう・・・

・・・とりあえずはファンを制御できるようになったので、今回はここまで。

次回は温度センサーと空冷ファンの制御をpythonで組み合わせてみます。

まとめ

  • gpiozeroを使えばGPIO制御は簡単
  • GPIOのOFF時に空冷ファンが完全停止しないwww

GPIOを制御する方法は他にも多く存在するのでお好きな方法を!

コメント

タイトルとURLをコピーしました