帰宅。
今日は日本ITストラテジスト協会関東支部の月例会があったが、仕事と用事が重なり、行けなかった。今回の月例会のテーマ別ディスカッションもぜひ聞きたいと思っていた内容だったので、残念である。人生、なかなか、こうしたいああしたい、と、思ったようには運ばぬものだ。
忙中有閑。仕事は朝に引けたから、帰りに秋葉原へ寄り、挨拶がわりにヨドバシのスタインウェイをちょっと弾く。
いつものショパン3曲弾くなど。
千石電商と秋月電子で少し買い物をする。2000円ほども使えばたっぷり楽しめる。我ながらなんとささやかなこと。
今回買ったもののうちでも、出色の傑作は、このたった250円の小さなキットだろう。
これは、TTL5VでAC100Vを扱うためのリレーなのだが、昔のリレーとは違って、機械電磁式ではなく、電子式の無接点で、部品点数も極めて少ない。しかも100Vで25Aも流せる。これは、この方のブログ記事で見て知ったのである。
それから、もうひとつはこれだろう。Arduinoのシールド基盤に小さなブレッドボードを載せることができるもの。
帰宅してみると、先週作った「メールサーバお知らせランプ」、赤い点滅で、100通以上の未読がある。
電子メールを読み出すと、動画のように緑色の点灯に変わる。
さて、一週間、誤動作なく動いていた「メールサーバお知らせランプ」だが、さっさと回路をバラしてしまい、次の作品を作ることにする。
秋葉原で買ってきたものを取り出し、半田鏝を温めて、なにやらごそごそと活動する。
なにやら組み立てる
このちっぽけな基盤がAC100VをTTLで扱うためのキモである。
これを、Arduinoにつなぐ。先日買った超音波センサを、今日買ったブレッドボードシールドに取り付け、回路はこんな具合にする。
スケッチを書く。こんな感じだ。
//
// superSonic2AC100.ino
// 27.06.21(日) 1500~
// SatoToshio
// Arduino + 超音波センサ + ソリッドステートリレーで、
// 人が近接したら扇風機などを回す。
//
const int TRIG = 8, ECHO = 9, SSR = 10;
float ranges[10];
int arrcount = 0;
const float THRESHOLDRNAGE = 100.0;
void setup() {
Serial.begin(9600);
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
pinMode(SSR, OUTPUT);
digitalWrite(SSR, LOW);
}
void loop() {
float range = 0.0;
delay(1000);
range = ranging();
ranges[arrcount++] = range;
if(arrcount >= 9){
arrcount = 0;
}
// THRESHOLDRANGE以下が何割かを調べる。雑音除去のため。
int rangecount = 0, i = 0;
for(i = 0; i <= 9; i++){
if(ranges[i] < THRESHOLDRNAGE){
rangecount ++;
}
}
Serial.println(range);
Serial.println(rangecount);
if(rangecount >= 6){
digitalWrite(SSR, HIGH);
}else{
digitalWrite(SSR, LOW);
}
}
float ranging(){
float time = 0.0, range = 0.0;
digitalWrite(TRIG,LOW);
delayMicroseconds(1.1);
digitalWrite(TRIG,HIGH);
delayMicroseconds(1.1);
digitalWrite(TRIG,LOW);
time = pulseIn(ECHO,HIGH);
if (time > 0.0) {
range = (time / 2.0) * 340.0 * 100.0 / 1000000.0;
if(range > 500.0){
range = 500.0;
}
return(range);
}else{
return(9999.0);
}
}
で、これで何をするかというと、「人が近づくと部屋のミニ扇風機が回る」というのをやりたかったわけだ。暑いから(笑)。
組み付けたプロトはこんな感じだ。100円ショップで買ったアクリルの仕切りグッズにスペーサーで取り付けてある。
自分の部屋に入ると、扇風機が回り出し、涼しい。