20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

obnizAdvent Calendar 2019

Day 8

obnizの力を借りて、スポーツ後の靴を早く乾かす

Last updated at Posted at 2019-11-13

obniz Advent Calendar 8 日目の記事です。

ダイエットの冬

最近、ランニングをしている人を良く見かけます。
皆さんは運動した後のシューズケアしていますか?
IoT の力を借りて、シューズケアをしましょう。

できたもの

用意したもの

締めて¥8,570 でした。

システム構成

Obniz と各種センサーを使って以下のような構成で作りました。
グループ 9.png

ピン接続

ピンは以下の通り接続します。

  • スピーカー
    • signal: 2, gnd: 0

10911238722523.jpg

  • フルカラーLED
    • gnd: 6, vcc: 5, din: 4

10911238731664.jpg

  • DC ファン
    • vcc: 8, gnd: 7

10911238781825.jpg

10911238764264.jpg

  • 湿度センサー
    • vcc: 11, gnd: 10, din: vout: 9

10911238896730.jpg

10911238890552.jpg

全部つなぐとこんな感じになりました。
10911238668239.jpg

ソースコード

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の色を変える
  }
};

いざ実践

上記で作成したものをシューキーパーに貼り、実際にランニングシューズの中に入れてみる。
10911509568750.jpg

わかりにくいですが、ランニング後の僕の靴は湿度 90%超のようでした。
これで臭い靴とはおさらば!

振り返り

  • シューキーパーに全部の装置を収める・貼り付けるのがとても難しかった。安定感を求めるなら、ちょうど良い容器を見つけるか 3D プリントする必要があると感じた。
  • 環境を測定→制御→測定→…のループを実装出来てよかった。
  • たまに電圧をかけても DC ファンが回らないことがある。ハードのトラブルシューティングの知識を身に着けたい。
  • 小型化とか電池駆動できるようにしたい。

12/9の記事は…

@kohbis さんの「◯◯◯◯」です!

20
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?