スポーツの秋
最近涼しくなってきて、ランニングをしている人を良く見かけるようになりました。
皆さんは運動した後のシューズケアしていますか?
IoTの力を借りて、シューズケアをしましょう。
できたもの
これを靴の中に入れる #obniz#protooutpic.twitter.com/xG6nIKBSyy
— Takahiro Mitsuoka (@t_mitsuoka) November 13, 2019
用意したもの
- Obniz
- 湿度センサー:CHS-UGR
- LED:WS2811
- ファン:DC超小型冷却ファン
- スピーカー:圧電スピーカー
- シューキーパー
- ダイソーで売ってるもの
- ¥150
締めて¥8,570でした。
システム構成
Obnizと各種センサーを使って以下のような構成で作りました。
ピン接続
ピンは以下の通り接続します。
- スピーカー
- signal: 2, gnd: 0
- フルカラーLED
- gnd: 6, vcc: 5, din: 4
- DCファン
- vcc: 8, gnd: 7
- 湿度センサー
- vcc: 11, gnd: 10, din: vout: 9
ソースコード
Node.jsで書きました。
ソースコード全量はGitHubからご覧いただけます。(https://github.com/mono0423/pos-shoes-care)
constObniz=require('obniz');constobniz=newObniz('OBNIZ_ID_HERE');obniz.onconnect=asyncfunction(){constleds=obniz.wired('WS2811',{gnd:6,vcc:5,din:4});// フルカラーLEDconstspeaker=obniz.wired('Speaker',{signal:2,gnd:0});// スピーカーobniz.io11.output(true);// 湿度センサーのvccobniz.io10.output(false);// 湿度センサーのgndobniz.io7.output(false);// DCファンのgndwhile(true){letave=0;// 湿度を1秒間におよそ100回測定して、平均を取るfor(leti=0;i<100;i++){constvoltage=awaitobniz.ad9.getWait();// 湿度センサーのvoutの値を読み取るconsthumid=voltage*100;// 電圧->湿度の変換(%)ave=ave+humid;awaitobniz.wait(10);}ave=ave/100;// 100回の平均を取るconsthumid=ave>100?100:ave;// 湿度100%以上になる場合、100%にするconsole.log('湿度: '+humid+' %');letrgb=[0,0,255];if(humid>90){rgb=[255,0,0];// LEDを赤色に変更obniz.io8.output(true);// DCファンを回すspeaker.play(1000);// スピーカーを鳴らす}elseif(humid>60){rgb=[255,255,0];// LEDを黄色に変更obniz.io8.output(true);// DCファンを回す speaker.play(800);// スピーカーを鳴らす}else{rgb=[0,0,255];// LEDを青色に変更obniz.io8.output(false);// DCファンを止めるspeaker.play(0);// スピーカーを止める}leds.rgbs([rgb]);// LEDの色を変える}};
いざ実践
上記で作成したものをシューキーパーに貼り、実際にランニングシューズの中に入れてみる。
これを靴の中に入れる #obniz#protooutpic.twitter.com/xG6nIKBSyy
— Takahiro Mitsuoka (@t_mitsuoka) November 13, 2019
わかりにくいですが、ランニング後の僕の靴は湿度90%超のようでした。
これで臭い靴とはおさらば!
振り返り
- シューキーパーに全部の装置を収める・貼り付けるのがとても難しかった。安定感を求めるなら、ちょうど良い容器を見つけるか3Dプリントする必要があると感じた。
- 環境を測定→制御→測定→…のループを実装出来てよかった。
- たまに電圧をかけてもDCファンが回らないことがある。ハードのトラブルシューティングの知識を身に着けたい。
- 小型化とか電池駆動できるようにしたい。