暑熱をばひとつ

投稿日:

 黙々と呟き続ける我が作品、「ネット便器」である。いや、便器そのものを作ったのはINAX社であるから、私の作品と言うこともあるまいが、まあ、こんな下品かつ無意味なものを作ることができるのもDIY、というかMAKERS精神なればこそ、である。

ツイートする私の作品「ネット便器」(笑)

 ちなみに、こういう手作りは、数年前からDIYとは言わず、Makersムーブメントと言うようになったのだそうな。DIYとの違いは、ざっくり言えばネットのあるなしである。

 それにしても、暑い。暑熱である。秋とは暦ばかり、なんて暑いんだ。

 私の家には温度計がないのだが、今日のような折ふし、たまさかには室温が知りたくもなる。知ったところで「うわっ32度だってよ余計に暑くなったゾなんてこったいッ!」などとうわ言のようにうそぶきつつ興奮する以外にないのだが、それでもやっぱり知りたいのである。

 エアコンのリモコンに設定温度とは別に温度計がついており、一応それで用は足りているのだが、1℃単位のザックリした温度計なので、不満である。

 こんなこともあろうかと、私こと佐藤は常々周到怠りない。我が作品「ネット便器」は、気温をツイートできるのだ!!トイレに行き、便器のフタを開け閉めしてから部屋に戻り、ツイッターを見ると、自宅の気温がだいたいわかるわけである。おお、なんとスンバラシイ。Arduino万歳。とっとと内紛やめて楽しくやろうぜベイベー!!

 ……。

 めんどくさい。

 だいたい、気温ぐらいその場でわかるようにすべきではなかったのか。便器のフタを開け閉めしてツイッター見なきゃ気温が分からん家なんて、どうなっとるんだ一体ッ!?。ネット便器の本体に気温を表示すべきだ!!っていうか、なんで便所で気温を測らねばならんのだ!!

 というわけで、発作的に自宅を飛び出し、向かったのは八潮の秋月電子である。

 「どうして近所の100円ショップで温度計を買わんのだ?」という愚問は禁止の方向でお願いしたい。

 秋葉原に行けばよいのだが、自宅からは八潮の秋月電子のほうが近いのである。それに、秋葉原の秋月電子は、人でごった返して足の踏み場がなく、店頭で品定めをする余裕が全くない。八潮の秋月電子は空いているので、店内でのんべんだらりとデータブックを読みながら部品を選ぶことも可能である。

 目当ては、日立「HD44780」という液晶ドライバの、互換ICを搭載した液晶ディスプレイである。大概の液晶ディスプレイは、この30年も前に開発された名作IC互換になっているのである。

 他に、7セグメントLEDで気温を表示させることも考えたが、実は思いのほか、Arduinoでの表示に限っては液晶ディスプレイのほうがラクなのだ。7セグメントLEDは簡素なだけに意外に奥が深く、多くの桁を表示させるためのダイナミック点灯やその明るさ補償、足りない電流を他の電源から持って来るなど、やることが多い。

 さて、秋月電子八潮店である。

 店内にはズラリと液晶ディスプレイが並んでいる。手ごろなところで、バックライト付きの液晶ディスプレイ、「SD1602 HUOB-XA」という型番のものを購入した。900円。

 他に、後で遊ぶためにアノードコモンの7セグメントLEDを買う。これは例の「TLC5940NT」に接続して遊ぶのである。ひとつ60円。

 それから、切らしてしまったQIコネクタのピン端子も買う。シースが見当たらないので、店員さんに「これのシースありませんか」と聞くと、ハウジングのことですか?この端子にはハウジングみたいなものはありませんよ、と答えるではないか。うーん。秋葉原の千石電商なら、左奥の抽斗にザクザク入っているのだが、どうも、八潮の秋月電子にはないらしい。というか、実は八潮の秋月の店員さん、QIコネクタにはシースがあるってことを知らんのではなかろうか。

 それはそれとして……。

今日買ったもの
IMG_3220

 帰宅して早速とりかかる。

 製品はこういうものがビニール袋に封入されているので、付属のピンヘッダを半田付けする必要がある。ちょいちょいちょい、と素早い仕事だ。

ピンヘッダをつける
IMG_3224
IMG_3225

ちょいちょいっとな、……っと。
IMG_3230

 ネットで情報を漁る。

 あるサイトによると、基盤ウラの「J3」というプリントをショートし、「R9」というプリントに100Ωの抵抗を付けると、基盤の電源でバックライトが光らせられる、とあるので、早速真似をする。

 ところが、他の回路とともに作動させてみると、どうも不安定である。バックライトの電流は、データシートによると40mAとある。電流を実回路で測定してみたところ、データシートに記載の値よりは少ないものの、37~38mAくらい流れていることが分かった。Arduinoで安心して流せるのは20mAまでなので、これはどうも過大かもしれない。Arduinoは50mAくらいまで流すことができるが、余裕は十分にあったほうがよいだろう、ということで、R9に取り付けた100Ωのジャンプ抵抗は取り外した。

 液晶ディスプレイのみ単体ならば余裕はあるものの、他の回路を接続するのであれば外部電源で点灯した方が良いように思われる。

 で、データシートと、Arduino IDEの「サンプルスケッチ」の中にある「LiquidCrystal」のコメントを参考にブレッドボードを結線する。ブレッドボードには「Seeedstudio SIDEKICK BASIC KIT」に入っていたサーミスタを、1kΩの抵抗とともに取り付けてアナログ1番ピンに入れる。

ブレッドボードの様子
IMG_3233

回路図
「暑熱をばひとつ」の回路図

 スケッチはこんなふうにゴリゴリと書いて、動けとばかりArduinoに注入し、荒い息を吐く。

//
//  thermistor2LCD.ino
//    サーミスタで気温を測り、LCDに表示する。
//    佐藤俊夫
//    27.08.09(日) 1900~
//
#include <stdio.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int THERMISTOR = 1;

void setup() {
  lcd.begin(16, 2);
  pinMode(THERMISTOR, INPUT);
}

void loop() {
  char tempStr[16], dispStr[32];
  lcd.setCursor(0, 0);
  dtostrf(tempMesure(), 5, 2, tempStr);
  sprintf(dispStr, "Temp. %s C", tempStr);
  lcd.print(dispStr);
  delay(500);
}
//
float tempMesure(){
  const float B = 4350.0, Ta = 25.0, Rt0 = 50000.0;  //  MF11-503Kスペックシート記載
  const float K = 273.15;  //  熱力学温度の定数
  const float v0 = 5.0, r0 = 1000.0;  //  Arduino +5Vと電流調整抵抗1kΩ
  const int resolution = 1024;  //  アナログ入力の分解能
  int srcVal = 0;
  float vt = 0.0, rt = 0.0;
  
  srcVal = analogRead(THERMISTOR);
  vt = srcVal * (v0 / (resolution - 1));
  rt = (v0 * r0 - vt * r0) / vt;
  return(1.0 / (log(rt / Rt0) / B + 1.0 / (Ta + K)) - K);
}

 こうして、液晶ディスプレイに気温が表示できるようになった。

……ていうか、暑ッ!(笑)
IMG_3232