obniz Advent Calendar 8 日目の記事です。
ダイエットの冬
最近、ランニングをしている人を良く見かけます。
皆さんは運動した後のシューズケアしていますか?
IoT の力を借りて、シューズケアをしましょう。
できたもの
これを靴の中に入れる #obniz #protoout pic.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)
const Obniz = require('obniz');
const obniz = new Obniz('OBNIZ_ID_HERE');
obniz.onconnect = async function() {
const leds = obniz.wired('WS2811', {gnd: 6, vcc: 5, din: 4}); // フルカラーLED
const speaker = obniz.wired('Speaker', {signal: 2, gnd: 0}); // スピーカー
obniz.io11.output(true); // 湿度センサーのvcc
obniz.io10.output(false); // 湿度センサーのgnd
obniz.io7.output(false); // DCファンのgnd
while (true) {
let ave = 0; // 湿度を1秒間におよそ100回測定して、平均を取る
for (let i = 0; i < 100; i++) {
const voltage = await obniz.ad9.getWait(); // 湿度センサーのvoutの値を読み取る
const humid = voltage * 100; // 電圧->湿度の変換(%)
ave = ave + humid;
await obniz.wait(10);
}
ave = ave / 100; // 100回の平均を取る
const humid = ave > 100 ? 100 : ave; // 湿度100%以上になる場合、100%にする
console.log('湿度: ' + humid + ' %');
let rgb = [0, 0, 255];
if (humid > 90) {
rgb = [255, 0, 0]; // LEDを赤色に変更
obniz.io8.output(true); // DCファンを回す
speaker.play(1000); // スピーカーを鳴らす
} else if (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 #protoout pic.twitter.com/xG6nIKBSyy
— Takahiro Mitsuoka (@t_mitsuoka) November 13, 2019
わかりにくいですが、ランニング後の僕の靴は湿度 90%超のようでした。
これで臭い靴とはおさらば!
振り返り
- シューキーパーに全部の装置を収める・貼り付けるのがとても難しかった。安定感を求めるなら、ちょうど良い容器を見つけるか 3D プリントする必要があると感じた。
- 環境を測定→制御→測定→…のループを実装出来てよかった。
- たまに電圧をかけても DC ファンが回らないことがある。ハードのトラブルシューティングの知識を身に着けたい。
- 小型化とか電池駆動できるようにしたい。
12/9の記事は…
@kohbis さんの「◯◯◯◯」です!