Open5

トイレの電気は消しましょう(obnizを活用したIoTプロトタイプの作成)

のりまきさんのりまきさん

アイデアだし

トレイの電気を消し忘れて常に娘に叱られるので消し忘れたら音がなる装置を作りたい!

  • トイレの電気はそもそもついてないか問題

    • トイレの電気は用を足すときにはついている
    • 小と大だとついている時間は異なる
    • 電気が「ついたら鳴る」だと用を足している時ずっとなりっぱなしになる
    • そんなせわしないトイレは困る
  • トイレの電気はそもそもついてないか問題

  • 小を前提として電気がついてから30秒後に音が鳴るようにする
  • 大を前提としたら小の場合トイレから離れてしまうので音が聞こえないので消し忘れる

プログラムをChatGTPに作ってもらう

  • obnizを使っていること
  • 照度センサーとスピーカーを使いたいこと

を前提にきいてみた。

const obniz = new Obniz("YOUR_OBNIZ_ID"); // Obniz_IDに自分のIDを入れます

obniz.onconnect = async function () {

  // 照度センサーを利用
  const photoresistor = obniz.wired("PhotoReflector", { anode: 0, cathode: 1 });

  // スピーカーを利用
  const speaker = obniz.wired("Speaker", { gnd: 2, signal: 3 });

  // obnizディスプレイ(初期表示)
  obniz.display.clear();
  obniz.display.print('obniz Ready');

  let lightDetected = false;

  setInterval(async () => {
    // 照度を取得
    let lightLevel = await photoresistor.getWait();
    // 照度をコンソールに表示
    console.log('Light level:', lightLevel);
    // 照度をobnizディスプレイに表示
    obniz.display.clear();
    obniz.display.print('Light level: ' + lightLevel);

    // 照度が一定以上の場合
    if (lightLevel > 700) { // 700は例としてのしきい値
      if (!lightDetected) {
        lightDetected = true;
        // 30秒後に音を鳴らす
        setTimeout(() => {
          speaker.play(440); // 440Hzの音を鳴らす
          setTimeout(() => {
            speaker.stop();
          }, 3000); // 3秒間音を鳴らす
        }, 30000); // 30秒後に実行
      }
    } else {
      lightDetected = false;
    }
  }, 1000); // 1000ミリ秒 = 1秒ごとに実行
}

ありがとう!GTPくん!!

ここで問題です。
プログラムが書けても、obnizの設定がわからん。
どこに刺すん???
はぁ!?!?!?!

GTPくんが教えてくれてたので、とりあえず言われたとおりに刺す。

使用するセンサーとピン接続
照度センサー(Photo Reflectorなど):
アノード(正極): 0
カソード(負極): 1
スピーカー:
GND(接地): 2
Signal(信号): 3
このコードを開発者コンソールに貼り付けて実行することで、照度センサーが一定の明るさを検出したときに30秒後にスピーカーが音を鳴らす動作を確認できます。

鳴らへんねんけど?😇

のりまきさんのりまきさん

なにか足らない?

音が鳴らない。原因も分からない。なんでなんで?

ぐるぐると検索してたら、この記事発見!!
夕方になると夕焼け小焼けがなるらしい。
なんて素敵な!!
https://qiita.com/PmanRabbit/items/371b2efebb7134efec9e

使っているセンサーも同じだと思うのでセンサーとかブレッドボードとかで設定してみる。

鳴らない

なんでなんで?😇

ここで"ものしりじいさん"投入
FFでいうと情報を教えてくれる人らしい。
FFせんから知らんけど😇

そもそも使ってるセンサー名が違っていたらしい。

ファイル名
  // 照度センサーを利用
  const photoresistor = obniz.wired("PhotoReflector", { anode: 0, cathode: 1 });

このセンサーじゃないですよっと。
それは分からなかったし、勝手に信じていたよbaby
使用しているセンサー名に修正してみた。

鳴らない

なんでなんで?😇

冒険は続く。

のりまきさんのりまきさん

照度と刺す場所問題

ものしりじいさん「スピーカーどこ刺してますか?」

のりまき「1と2に刺してますよー」

ものしりじいさん「・・・コードに2と3って書いてるじゃろ?」

のりまき「ほんまや・・じいさん」

ファイル名
  // スピーカーを利用
  const speaker = obniz.wired("Speaker", { gnd: 2, signal: 3 });

刺す場所も指定してくれてるのも知らなかったよパトラッシュ🐶

ファイル名
  // 照度が一定以上の場合
    if (voltage > 2.5) { // 2.5Vは例としてのしきい値
      if (!lightDetected) {
        lightDetected = true;

ものしりじいさん「あとは照度かも。別のプログラムで照度の数値みてみたらよいかも。例って書いてるからそんなに出てないかも。」

のりまき「おかのした!」

照度と刺す場所指定を修正した。

無事に鳴った!!!

うれしい!!

のりまきさんのりまきさん

東京音頭作ってみた

とーきょーやくると の ると とその次の音階がまだ微妙・・・
これでファンだといえるのか!!!

https://twitter.com/n0rimaki_san/status/1801177652231016699

音階はコチラ

だれか教えて!ちなヤク民!!

      // 音階
      const Key = {
        "ド": 261.626,
        "レ": 293.665,
        "ミ": 329.628,
        "ファ": 349.228,
        "ファ2": 369.994,
        "ソ": 391.995,
        "ラ": 440.000,
        "シ": 493.883,
        "ド2": 523.251,
        "レ2": 587.330,
        "シ2":246.942,
      };
  // メロディシーケンス
  const melody = [
    { note: "ソ", duration: 800 }, { note: "休止", duration: 100 },
    { note: "レ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 300 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 300 }, { note: "休止", duration: 500 },
    { note: "ソ", duration: 800 }, { note: "休止", duration: 100 },
    { note: "レ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ソ", duration: 500 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 300 }, { note: "休止", duration: 100 },
    { note: "ラ", duration: 300 }, { note: "休止", duration: 500 },
  ];