概要 †
マイコンボード Digispark を使った、キーボードとして認識される USB 温度計です。
PC の USB 端子に接続して、別のキーボードの ScrollLock キーを4連打すると、現在の温度が文字として入力されます。疑似的にキーボードを押すことで文字を出力していますので、メモ帳や検索欄など、どこにでも入力できます。Digispark 上のマイコン Tiny85 に内蔵された温度センサーを使っています(精度は高くありません。また個体差が大きいため最初に校正が必要です)。追加部品は不要で、Digispark にファームウェアを書き込むだけで作れます。
使い方 †
- Digispark を USB 端子に挿しこみ、文字が入力できるところにカーソルを合わせて、キーボードの ScrollLock キーを,1秒以内に4回押すと、現在の温度が表示されます。
- Digispark 上の LED は ScrollLock の状態に連動して点滅します。
- ScrollLock ランプがついたままの状態にすると、1分間に1回温度が表示され続けます。
- Digispark を USB 接続した直後は正しい温度が得られません(実際より4~6℃低い値になります)。3分間ほど待って安定してから測定してください。
作り方 †
書き込みツールの準備 †
Digispark にファームウェア(HEXファイル)を書き込むツールを準備してください。
温度センサーの校正 †
今回使った Tiny85 に内蔵された温度センサーは、チップごとのばらつきが非常に大きいため、はじめに校正する必要があります。別途、現在の室温がわかる温度計を用意してください。
- 校正用ファームウェアの書き込み
ZIP ファイル中の temp-cal.hex を Digispark に書き込みます。
# micronucleus --run temp-cal.hex
- 温度センサー値の確認
Digispark を USB コネクタに挿しこむと、キーボードとして認識されて、5秒ごとに温度センサーの値がキーボードから出力されます。メモ帳などに入力して値を確認します。
- 3分以上待機する(重要)
センサーの値が安定するまで 3分~5分間程度かかります。必ず安定してから読み取ってください。
- 使うファームウェアの決定
センサーの値から現在の室温 を引き算します。その値のラベルの付いたファームウェアを使うと、自動的に校正されます。
(例) センサーの値が 310 で現在の室温が26℃の場合は、310-26=284 なので、temp-284.hex を使います。小数になった場合は四捨五入してください。
ファームウェアの書き込み †
上記の手順で選んだファームウェアを書き込めば完成です。
# micronucleus --run temp-284.hex
ダウンロード †
Digispark-temp-1.0.zip
余談 †
- 入力キーに ScrollLock を使う理由: キーボードに情報を伝える手段は CAPS, Scroll Lock, NUM Lock ランプの ON/OFF しかありません。当初 CAPS を使おうとしたのですが、SHIFT を同時に押さないと CAPS ランプを点滅させられない PC があり、SHIFT を押していると、数字を表示させようとしても記号になってしまいます。また NUM Lock は常時 ON のケースが多いと考えて、ScrollLock を使いました。
- 温度センサについて: Tiny85 の A/D コンバータの入力で内蔵温度センサを選択すると、A/D 変換の結果として温度が返ってきますが、オフセット値の個体差が大きく、手持ちの10個の Digispark で同じ温度を測定したところ、10℃くらいの個体差がありました。校正は、このオフセット値を補正しているだけです(温度 = A * AD変換値 + B の B のみ補正しています)。
- Digispark の発熱について: Digispark はオーバークロックで動作しているためか、電源を入れると自己発熱して温度が上がっていきます。3分ほどで電源 ON 直後より 4~6℃ 程度高くなるため、上記の手順のように、温度が上がり切った状態で校正しています。そのため、電源 ON 直後は正しい温度が得られません。
- A/D 変換について: A/D 変換終了割り込みを使って、測定中はマイコンを Sleep 状態にしています。また毎回64回測定して平均をとっています。
- 書き込みツール micronucleus.exe について: Windows(MinGW/msys)で、スタティックリンク版が作れれば添付したかったのですが、作成できませんでした。作り方が分かる方がいましたら教えてください。
- 温度表示のフォーマットは [スペース][符号][数字][数字][C][ENTER] の6文字で、
先頭に空白が入っています。これは Excel に入力するときに、先頭に + が入っていると = と同じ意味として扱われてしまうためです。Excel は ScrollLock が ON だと、カーソルキーの機能がスクロールになります。
- ScrollLock がないキーボードがありました。Windows10 のソフトウェアキーボードでも操作できました。
Counter: 5470,
today: 3,
yesterday: 3