PCの電源を入れる前にARGB LEDのチェックをしたい。ファンのチェックをしたい。PCレスで動作チェックをするためのデバイスを作りました。

光りモノが多すぎる

今水冷PCの2号機を組んでいるところなんですが、今は何でもかんでも光りますよね。私も当初は否定的でしたが、今は好んで虹色に光るゲーミングPCにしています。ところがいろいろな光るパーツを集めていると、メーカーによってコネクタの形状が全然違うことに気づきました。そこで様々なコネクターに対応できるように複数のコネクタを用意。せっかくなのでファンのスピードも制御できるようにしました。

M5Stack Din Meterなら12V入力できる

今回はM5Stack Din Meterを使用することにしました。Din Meterはロータリーエンコーダーが付いてるので、メニュー表示や値の変更をする操作に適しています。また電源がUSBだけでなく、入力電圧6~36Vの電源ポートがあるのも特徴です。内部のDC-DCコンバーターで5Vを作ってるので、12Vを入力すればファン用の12Vと、LED用の5Vの両方が取り出せるというわけです。

いろんなコネクタ形状に合わせる

ARGBのコネクタというと、2.54mmピッチの丸ピンヘッダ(4列のうち3本のピンがあるやつ)だけかと思ったら、メーカーによって違うんですよね。とりあえず手持ちで自分が使うコネクタをカバーできるようにしてみました。

左の2つは4ピンのファン、その隣の2つはAcool、その隣はマザーボードに生えてる丸ピンのやつ、その隣は不明、そして奥の2つはBARROWという水冷メーカーのものです。

Din Meterには2つのGroveポートがあるので、最大4つまでのGPIOポートが任意に使用できます。今回はARGB LEDのデータ用、ファンのスピード制御(PWM)用、ファンの回転数取得用の3つを使用しました。

ユーザーインターフェース

UIはシンプルなものにしました。ロータリーエンコーダーで4つのメニューを移動し、押すとメニューに入って値を変更できるというものです。

メニューはLED/ファンのオン・オフ、ファンのスピード、LEDの色の変化スピード、LEDの明るさです。

プログラム

今回作ったプログラムは GitHub にアップしました。

ESP32 Arduino Core 2.0系から3.0系で破壊的な仕様変更があり、今まで動いていたPWM関連のプログラムがコンパイルエラーになりました。最初何が起こったのかわからず混乱しましたが、修正することで動作するようになりました。

#define PWM_FREQ 25000        // PWM周波数
#define PWM_BIT 8             // PWMの分解能bit
#define ADC_RESOLUTIUON 4095  // ADCの分解能(0-4095)

pinMode(GPIO_PWM_PIN, OUTPUT);  // FAN PWM Pin

ledcSetup(PWM_CH, PWM_FREQ, PWM_BIT);  // pwm ch0 setting     : for ESP32 Arduino Core before v3
ledcAttachPin(GPIO_PWM_PIN, PWM_CH);   // pwm ch0 attach GPIO : for ESP32 Arduino Core before v3
attachInterrupt(digitalPinToInterrupt(GPIO_RPM_PIN), tachISR, FALLING);

ledcSetup() ledcAttachPin() が attachInterrupt() になりました。チャンネル指定は自動でやってくれるらしいです。

ケースを作る

ケースはDin Meterを上から埋め込んでカチッと固定する形にしました。ケースのフタは横からスライドして止めます。こうゆうケースのフタって作るのが面倒で悩ましいところなんですが、最近超簡単な方法を見つけました。

両サイドを< >の形にしただけです。ケースとフタのクリアランスは0.05mmで(両サイドで0.1mm)。これで結構しっかりと固定されます。幅が広いと押したときにたわんでしまいますが、小さめのケースならこれで十分です。

今回作成したケースのSTLファイルもGitHubにアップしてあります。

LINEで送る
Pocket