前回は温度センサーの動作までを確認
ラズパイ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月現在は取扱いが無い模様・・・
今購入するなら以下のパーツをおすすめ。
空冷ファンの取り付け方法
空冷ファンの配線
ファンコネクタは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のピンアサインはいつも通り公式を参考にしました。
電圧を昇圧してみた
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--+---+------+---------+-----+-----+
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を利用しました。
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を制御する方法は他にも多く存在するのでお好きな方法を!
コメント