profile-photo

温湿度計

DHT11とArduino pro/miniで、小型LEDに表示


そもそもは秋葉原のa店でこのLEDがディスカウントされていたことが発端だ。 「ひとつ10円」に釣られて、ポチってしまった。10個買っても100円は嬉しかった。 4桁・高さ9mmの小さな表示器だ。 届いたものを見て、「さて何に使おう?」 たまたま、 「歳を取ると温度・湿度に関する感度が悪くなるので熱中症に注意しましょう。」 と言う注意を何かで読んだ。そして、その前にArduino UNOで遊んだDHT11と言う温湿度センサが手元にあった。 それで、これを作る気になった。 ただし、この小さなLEDをシールドに付けてUNOで表示させるのはバランスが悪い。何よりUNOは高価だ。 ネットで調べるとArduino Pro/Miniなら小さくて安い。ATMEGA328PのCPUが単体で250円程するのに、ProMiniはチップも載って350円程だった(!)CPUのピンを全部配線することを考えると、ProMiniのC/Pが際立っていた。 「これなら沢山作って知り合いにあげても良いかな?」と、量産も見据えてスタートしたのがこのプロジェクト(笑)だった。

 

001

使用CPUはArduino pro/mini(5V/16MHz)
LEDは5Vで点灯。また全体を小さくするため、一番小さいCPUを選んだ。

002

センサと表示器を配置した基板
電源は5V供給にしたので、USBに接続できる。パソコンの脇にちょっと置いておくと便利。
特にデスクトップの場合がペストマッチ。

003

背面にArduinoのソケットと電源用microUSBコネクタ

004

使用CPUはArduino pro/mini(5V/16MHz)
写真がちょっとピンぼけで申し訳ありません。

005

横から

006

背面

007

これが試作1号機。CPUは「あちゃんでいいの」を使用。ともかく小さく作ってみたかったのでかなり無理な配線をしている。

7セグLEDのダイナミック点灯

今回使用したLEDは4桁のものだ。7セグなので、一桁当たりLEDが7つ(DPを除いて)。4桁だと7×4で、28個のLEDがある。 ArduinoにはMEGAを除いてそんなに沢山の出力ポートはないので、工夫がいる。(もとよりこのLEDは7セグメントが全部並列に接続されている) このような表示器の場合、ダイナミック点灯方式を取るのが一般的だ。 7セグは並列に7つのポートに繋ぎ、桁選択を4つのポートに接続すれば、7+4=11個のポートで制御できる。 ただし、同時に1桁しか表示出来ない。しかし人間の目には残像効果があるので、速い速度で切り替えてゆくと、全部の桁が表示されているように見えるのだ。 今回は消費電力を少なくしたかった。そうすると表示はどうしても暗くなってしまう。Githubなどで7セグ用のドライバも公開されている。最初はこれを使わせて貰うつもりだったが、ひとつの桁の消灯から次の桁の点灯までの処理が長くてなお表示が暗くなってしまった。 止む無く、このLEDに特化した専用のドライバを開発することになってしまった。

小型化の悩み

LEDが9mmと小さいので、何としても小型化を目指したかった。 そのため、CPUとLEDの接続には苦労した。途中に限流抵抗を入れなくてはならない。立体配線にしたり、SMDタイプを使ったり色々工夫を凝らした。 写真のものは5号機で、これが割と小さくかつ作りやすく配置できたものの1つだ。 1号機は「あちゃん」を使って表裏を抵抗と配線で繋いで苦労したが、思ったほど小さくはならなかった。


参考までにハードウェア・ソフトウェアの情報を。ただしこれらは僕の覚えであり、正確に改版を反映していない可能性があります。この通り作って動かないからと、怒らないで欲しい。