Digispark互換をAmazonで購入し、まだ世に出てないっぽい「Digispark CPU Meter」を作ってみた。CPU負荷の他にパフォーマンスモニタ風に表示した。
(YouTube)
##利用場面
ノートPCに
サーバーなどに
RaspberryPiで
#ハード
- Digispark(Amazonで300円/1個)
- SSD1331 96x64 OLEDディスプレイ(Amazonで1,300円/1個)
- Windows10(母艦)
- ユニバーサル基板、ワイヤ、抵抗、コンデンサ等(回路図参照)
- ケースは 100均のフォトスタンドの透明プラスチックを切って作った
- ネジは M2x20
##Digispark
Amazon
開発元はここなのですが、Amazonで買えるのはほとんど互換品。PB5ピンが初期では使えなくなっているとかあり、他は問題なく使えている。Windows10で開発するには こちらのサイト通りに行った。USB-HIDとして使用する分にはドライバのインストールは不要なのだが、ArduinoIDEで開発するには開発用ドライバのインストールが必要だった。
プログラム用メモリが実質6KBしかないので、使用するライブラリはかなりシビア。有名所のグラフィックライブラリはほとんど使えなかった。
#開発環境
- ArduinoIDE 1.8.12
- Visual Studio 2019 (Community 無料版)
#システム概要
##CPUメーター(Digispark+OLED)
Digisparkと OLED(SSD1331)を SPI接続する。回路図は下記参照。
DigisparkのP3,P4は USB で使用するため他の用途では使用できない。中華Digisparkでは P5 は REST になっているため初期状態では使えません。
なのでP0,P1,P2の3つでSPIをするのに苦労した。使えそうなディスプレイ+SPIライブラリがないか色々探したところ、ここにたどり着きました。このページでは生ATtiny85だが、Digisparkも中身はATtiny85なのでバッチリ。
スケッチは、ArduinoIDEで作成。HIDライブラリは v-usb を使用した。
RapsberryPi用は以下を有効にする。
//#define _RASBERRYPI // to use RaspberryPi
###USB転送方式
今回のUSB転送方式は、コントロール転送 を使った。比較的簡単に扱えるが転送データ量は小さいため、コマンドぐらいの用途で使用されるのが一般的。
今回は、ホストプログラムから データ5byte を デバイスに送るようになっている。
###回路図
※5V/GND はDigisparkのUSBより供給される。 ※SSD1331は3.3Vに降圧した方が良いかもしれません。Windows10
Windows10環境では、タスクマネージャーの下記赤線部を表示している。
- スクショのタイミングが違うので写真と一致していない。
- Network は、送受信の合計を Kbps/Mbps で表示。目安程度かな。
USB は HID を使うため、実行環境にドライバをインストールする必要はない。ただしCPU負荷などをDigisparkに送るホストプログラムが必要。
ホストプログラム(CPUMeter.exe)は、C# で作成した。HIDライブラリとして HIDSharp を使用した。
##RaspberryPi
RaspberryPi環境では $ dstat
コマンド の出力の下記赤線部を表示している。
- スクショのタイミングが違うので写真と一致していない。
- Memoryはpagingのout値が1以上だと [swap] が赤くなる。
- TempはCPU温度(
$ vcgencmd measure_temp
)。 - CPU は、100 - idl を表示した。
- Network は、送受信の合計を Kbps/Mbps で表示。目安程度かな。
ホストプログラム(CPUMeter.js)は、Node.js で作成した。
HIDライブラリとして node-hid、USB 監視ライブラリとして usb-detection を使用した。
パフォーマンス収集として dstat の 標準出力を利用している。よって、dstat のインストールが必要。
$ sudo node CPUMeter.js > /dev/null &
#ソースコード
HID周りのコードは、こちらのコードを利用させて頂きました。
SSD1331ディスプレイ制御用のコードは、こちらのコード を利用させて頂きました。回路も参考にさせて頂きました。
github:https://github.com/nori-dev-akg/Digispark-CPU-Meter
#おわりに
もちょっとキレイなケースなどにすれば、千円ぐらいで売れるんじゃないかな?と思うぐらいの出来になりました。材料で2千円弱なので大赤字。ディスプレイが500円ぐらのを見つければ行けるかな。Macを持っていないのでMac版は作れていません。
YoutTube
#Special Thanks!!!
- https://qiita.com/takeru@github/items/42873e1a7e0aef830eea
- http://milkandlait.blogspot.com/2017/09/digisparkgcc-usb-hid.html
- http://www.technoblogy.com/show?2EA7
- https://github.com/obdev/v-usb
- https://www.zer7.com/software/hidsharp
- https://wave.hatenablog.com/entry/2017/03/11/083000
- https://qiita.com/ryuichi1208/items/387fa1cba44690c3db9b