先日、東京でもついに開花宣言があり、まさにお花見シーズンの到来ですね。私は今年もお花見の予定はありません。
しかし、みなさんの中には、お花見の予定が組まれている方も多いのではないでしょうか。そこで今回、お花見に持って行くと目を引く&便利であろうデバイスを作ってみました。
お花見が盛り上がると同時に気温がドンドン下がり、そのうち風邪を引いた、なんて経験ありませんか?お花見経験0な私はもちろんそんな経験ないのですが、そんな話を小耳にはさんだので、「寒くなると自動で光りだすネクタイ」を作ってみることにしました。手芸+電子工作と言ったら、やっぱり導電糸とLilyPadですね。と、安直に選んだのはいいのですが、もっとちゃんと検討すべきだったと後に後悔することになるのでした。
材料は以下のとおりです。
以上のものはネクタイを除き、全てスイッチサイエンスで販売しております。一気に見れるリストはこちら。
これに加え、いきなり導電糸で繋いで試作するのは大変なので、ワニ口クリップや、クリップ付きワイヤがあると便利です。
あとは、参考資料として「LilyPad & Arduinoを使ったテクノ・クラフト(マイコンと電子工作 No.4)」があると分かりやすいです。今回はP.30~32あたりを参考にしています。
また、電子工作に詳しい方はリチウムイオンポリマー電池の充電器は?と思われると思いますが、なんとLilyPad Arduino USBには充電機能が付いています。充電ICと回路図から、充電電流も100mAhのようなので、今回使う電池も安全に充電できます。初期の頃のLilyPadから比べると、便利になりましたね。
1.まずは温度を測る
さて、まずは実際に温度が正常に測れるか確かめるため、温度センサだけをLilyPadに繋ぎます。繋ぎ方は下図のとおり。
スケッチを書いていって、とりあえずシリアルモニタに温度を表示してみます。
float temperature; float indata; void setup(){ Serial.begin(9600); } void loop(){ indata = analogRead(2); temperature = (5000.0 * indata / 1024 - 500) / 10; /* センサからの入力値を温度に変換 */ Serial.print("indata="); Serial.print(indata); Serial.print("temperature="); Serial.println(temperature); delay(1000); }
この室内は現在60度前後のようです……って、そんなわけない!
もう一度ちゃんと確認をしたところ、書籍に載っているLilyPadは5Vで動作させているのに対し、今回使っているLilyPadは3.3V動作。原因はこれですね。*(3.3 / 5)として無理やり3.3V用に数値を変換します。温度に変換する箇所の5000.0を3300.0にした方が効率的には良いのですが、今回は分かりやすくするため、こっちでいきます。
float temperature; float indata; void setup(){ Serial.begin(9600); } void loop(){ indata = analogRead(2) * (3.3 / 5); /* 3.3V用の値を取得 */ temperature = (5000.0 * indata / 1024 - 500) / 10; /* センサからの入力値を温度に変換 */ Serial.print("indata="); Serial.print(indata); Serial.print("temperature="); Serial.println(temperature); delay(1000); }
再度シリアルモニタを開きます。今度こそ、ちゃんと室温が出るはずです。
出ました。が、どうも値が安定しない。たまにすごく値が外れます。データシートを読んだところ、この温度センサ搭載のチップは、±4度くらいのブレがでるようです。
他にも要因はありそうなのですが、とりあえず、あとはスケッチでどうにかすることにします。値を100回取得してきて、並び替えて、上下10個ずつのデータを捨てたあと、平均取ることにしました。
float temperature; float indata; float sum[100]; int i, j, temp; void setup(){ Serial.begin(9600); } void loop(){ indata = 0.0; for(i = 0; i < 100; i++){ sum[i] = analogRead(2) * (3.3 / 5); /* 3.3V用の値を100回取得 */ } /* ここからバブルソート */ for(i = 0; i < 99; i++){ for(j = 99; j > i; j--){ if(sum[99] > sum[j]){ temp = sum[j]; sum[j] = sum[j - 1]; sum[j - 1]= temp; } } } /* ここまで */ /* ここから上下10個ずつの外れ値を除外 */ for(i = 0; i < 90; i++){ if(i < 10){ } else{ indata = indata + sum[i]; } } /* ここまで */ indata = indata / 80.0; /* 平均取ります */ temperature = (5000.0 * indata / 1024 - 500) / 10; /* センサからの入力値を温度に変換 */ Serial.print("indata="); Serial.print(indata); Serial.print("temperature="); Serial.println(temperature); delay(1000); }
2.LEDを付けてみる
さて、無事温度も取れるようになったので、今度は温度センサの温度に応じて、LEDを光らせていきます。回路図はこんな感じ。
スケッチは今までのとあわせて、下記のとおり。
float temperature; float indata; float sum[100]; int i, j, temp; void setup(){ pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,HIGH); } void loop(){ indata = 0.0; for(i = 0; i < 100; i++){ sum[i] = analogRead(2) * (3.3 / 5); /* 3.3V用の値を100回取得 */ } /* ここからバブルソート */ for(i = 0; i < 99; i++){ for(j = 99; j > i; j--){ if(sum[99] > sum[j]){ temp = sum[j]; sum[j] = sum[j - 1]; sum[j - 1]= temp; } } } /* ここまで */ /* ここから上下10個ずつの外れ値を除外 */ for(i = 0; i < 90; i++){ if(i < 10){ } else{ indata = indata + sum[i]; } } /* ここまで */ indata = indata / 80.0; /* 平均取ります */ temperature = (5000.0 * indata / 1024 - 500) / 10; /* センサからの入力値を温度に変換 */ /* 温度が10度以下で3つのLEDを順番に光らせます */ if(temperature < 10.0){ digitalWrite(9,LOW); delay(500); digitalWrite(10,LOW); digitalWrite(9,HIGH); delay(500); digitalWrite(11,LOW); digitalWrite(10,HIGH); delay(500); digitalWrite(11,HIGH); } else{ digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,HIGH); } /* ここまで */ }
これに従って、クリップ付きワイヤで接続したら無事、温度に応じて光りました(写真は撮り忘れました)。
3.ネクタイに裁縫
さて、ここまで来たら後は縫い付けるだけ。簡単ですね。さて、糸を針に通した後……通した後、どうすればいいんでしたっけ……
ここで気づく衝撃の事実。裁縫は中学家庭科以来やったことなかったのでした!なんでLilyPad選んだんだ……
様子を見にきてくれた社員に「玉結び」というありがたい言葉を教わりつつ(そういえばそんなのありましたね)、1時間玉結びと格闘して徹夜を覚悟したあたりで、ちょっと裁縫の出来る系男子のT君が颯爽と現れ、ササッと一つ目を縫いつけてくれました。
すごい(すごくはない)。
そのまま焼き肉で買収し彼が全て縫ってくれたのですが、導電糸は扱いに注意する点がいくつかあるそうです。
- 糸の摩擦係数が大きく、普通の感覚で縫うとすぐに絡まる
- 強度がないので、強く引っ張るとすぐに切れる
- ネクタイなど、折れる可能性のあるものは糸が交差し、ショートが心配である
などなど。今回みたいに表に糸が見えないものは、手芸や裁縫に自信がある方を除き、被覆付きの線材などを使う方が良いのでは、と感じました。もちろん、帽子やバッグなど、表に見える場合には導電糸をオススメします。
なお、今回は細かく縫わなかったのもあり、不安な部分の絶縁にはホットボンドを使用しました。糸も楽に固定できますし、絶縁も出来て安心です。また、うまく導通しない部分には導電インクを流すと通電するようになるとの情報ももらいました(導電糸にははんだが乗らないので)。
と、色々苦戦しつつ、完成したのがこちら。お察しください。
実際に光らせてみるとこんな感じです(室温を10度以下にするのは辛かったので冷蔵庫に入れてみました)。
さて、以上悪戦苦闘した末に完成した「寒くなると自動で光りだすネクタイ」ですが、活躍する予定は今のところありません。ぜひみなさまも面白いガジェットを作って、お花見へ持って行ってみてはいかがでしょうか。