この記事では、M5StickCとLED搭載の冷却ファンを使ったLED発光制御の方法について紹介します。
前回は、M5StickCで冷却ファンを使った回転速度制御をおこないましたが、今回はLEDです。
使用するLEDは、複数のLEDを1個ずつ異なる色で発光させることができる「アドレサブルRGB」という機能を搭載した冷却ファンを使用します。
今回の冷却ファンは次のものを使います。 パソコン用の120㎜冷却ファンでLED搭載なので光らせることができます。
前回、冷却ファンの回転制御で使用した電子回路を使って、LEDへの電源供給を行うための回路を追加します。
Cooler Master MasterFan MF120 Halo
LEDを光らせる仕組みとは?
LEDを光らせるために、LEDの仕組みを確認します。 冷却ファンなどに組み込まれているLEDは、複数のLEDが一つのストラップ上の基板に実装されています。 この複数のLEDは、製品によって以下の3種類の仕組みが存在しています。
- LED:単色LEDが実装されたもの。電源につなぐとあらかじめ決められた色に発色します。
- RGB:RGB信号で発光色が変更できるLEDが実装されたもの。
ファンに複数配置されたLEDをすべて同じ色で発光させる。つまり、ファン全体が同じ色に光ります。
注)コネクタの逆刺しを行うと故障するので注意です。 - ARGB(アドレサブルRGB):複数配置された個々のLEDを別の色で発光させることができるもの。
こちらはファン内を虹色などに光らせることができます。
注)コネクタの逆刺しを行うと故障するので注意です。
※今回使用する冷却ファンは、ARGB対応のものですので単色、グラデーションなど色を変えて発光させることができます。
ファンにはどんなLEDが入っているのか?
ファンの外周のLED部分には、次のようなLEDストラップが入っています。
LEDは「SK6812」というものでした。(製品名表示がつぶれていて見ずらいですが。。。)
写真のように複数のLEDが一定間隔で16個配置されていました。
ファンの中心部にもLEDが入っていますが、ファンの取り外しが難しいので今回は確認していません。
冷却ファンの仕様としては、LEDが24個となっているので、次の構成だと思います。
- ファン中心部:LED 8個
- ファン外周部:LED 16個
ARGBの仕組みをもう少し詳しく見てみよう
120㎜FANのARGBのコネクタは写真のようになっています。
このコネクタは、FANに搭載されているLEDへの電源供給とLED制御信号のための3つの線で構成されています。コネクタ部は以下のような仕様になっています。
左からGND(ー)、なし、LED制御信号、Vin(+)という構成になっています。
ARGB(アドレサブルRGB)対応のLEDは、LEDの中にICが含まれており、このIC部分でLED制御信号を読み取ります。
コントローラ(今回はM5StickCが該当)からLED制御信号線(Din)に送られた信号は、一列に配置されたLEDで順番に信号を読み取って次のLEDへ信号を渡していきます(Dout)。
信号の先頭24ビット分を1セットとして読み取ります。
1セットの信号は次のとおり発光色をRGB(24ビット)で表現します。(図は赤の場合)
信号は1ビットを1サイクル(1.25μsec)で表現し、「1」と「0」は、次の図のように1サイクルにおけるHighとLowの長さを変えて表現します。
- 「1」→1.25μsecの先頭0.8μsecがHighレベル
- 「0」→1.25μsecの先頭0.4μsecがHighレベル
※1ビット(1.25μs)であるので、1つのLED(24ビット)で30μsとなります。
終了時は50μsをLow状態にします。
ARGBで使用できるArduino向けライブラリ
これまで説明したARGBの仕組みをArduinoで使いたときには、次のライブラリを利用できます。
Adafruit NeoPixel Library
Adafruit 社が販売しているLEDストリップなどを制御するためのArduinoライブラリです。
Adafruit社の製品で使用されているLEDは「WS2812B」や「SK6812」が使われているものがあり、今回のようなものも同様に制御できます。
GitHubのライブラリページはこちら(Adafruit NeoPixel Library)
FastLED
adafruit(Neopixel、DotStar、LPD8806)、Sparkfun(WS2801)、aliexpressなどで販売されているものなど、さまざまなLEDチップセットを簡単かつ効率的に制御するためのライブラリです。
LEDへの書き込みに加えて、このライブラリには、RGB値を操作するための高性能8ビット計算用の関数や、ピンやSPIハードウェアへのアクセスを抽象化するための低レベルクラスが含まれています。
上記の2つのライブラリは、Arduino IDEのライブラリマネージャでダウンロード、設定ができます。
詳しくは、以下の記事で紹介しています!
本記事は、Arduino IDE 1.8.xバージョンのライブラリ管理方法を紹介した記事です。 Arduino IDEは、より新しいバージョン「2.0.x」が発表されています。 機能がよりリッチになった「Ardu[…]
LEDに電源とM5StickCをつなぐ回路を製作する
それでは、実際に冷却ファンに電源とM5StickCをつないでみましょう。
今回は5Vの電圧を使用する回路を使用します。(※5Vよりも高い電圧をかけると危険ですので注意してください)
回路図を次のとおり書いてみました。
DCジャックから電源を取っていますが、前回までの12Vと違い5Vですので注意してください。
実際にブレッドボード上で作ると次の図のとおりになります。
冷却ファンのLEDとM5StickCは同じ5Vですので同じ電源から取得するようにしています。
これで仕組みの理解、電子回路の準備が整いました。
次はいよいよプログラミングを行い、LEDを光らせていきます。
M5StickCで冷却ファンのLEDを光らせてみる
それではPWM信号を使用してM5StickCから冷却ファンのLED発光制御をしてみましょう。 LED発光は以下を順番に行っていくプログラムを考えます。ライブラリとしては「FastLED」を使います。
- LEDを順番にひとつずつ順番に発光させていく
- 全てのLEDを同じ色(単色)で発光させる
- グラデーションで発光させる
- グラデーションをローテーションさせてアニメーションさせる
また、M5StickCのディスプレイ上には、発光パターンを表示し、自動的に発光パターンが変わっていくようにします。
ファンの回転速度用プログラムにLED発光制御部分を追記してもよいでしょう。
冷却ファンのLED発光制御プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
M5Stack/M5StickCへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。 この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
- 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5StickCを起動すると動画のように自動的に発光パターンが切り替わります。
プログラム例で紹介した内容はファンの回転制御をしないものですが、動画ではファンを回転させた場合の発光パターンのイメージも撮影してみましたのでぜひご覧ください!
今回の記事は以上になります。
次回は、M5StickCにWebサーバを作ってWebブラウザから冷却ファンの回転速度や、LEDの発光パターンを変更できるように作りこんでみます。
これまでご紹介したM5StickCシリーズのプログラミング要素が盛りだくさんの内容となりますのでご期待ください!
Cooler Master MasterFan MF120 Halo
これからはじめる方にお勧めの参考図書はこちら!