obniz + 거리 센서 + MP3 모듈로 Amazon Echo 시작

Amazon Echo 사면 역시 음성 접수 시스템 만들고 싶지요?
그리고 센서를 사용하여 자동으로 스킬 기동시키고 싶네요?

그렇다고 해서, 주회 지연의 재료입니다만, 이하의 기사에 인스파이어 되어, obniz로 해 보았습니다
  • M5Stack 및 초음파 거리 센서로 Amazon Echo를 시작합니다.

  • 사용한 것



    htps : // 코 m / h - 타카 우마 / ms / 24135 39cf4b80519 2
    ※배선 더럽고 미안해
  • obniz

  • 초음파 거리 센서 HC-SR04
  • grove 커넥터이므로 obniz와의 연결에는 변환 케이블이 필요합니다
  • Amazon Echo를 시작하는 음성을 mp3로 만들어 microSD에 넣어 둔다

  • 아날로그 스피커
  • 100균으로 구입했습니다

  • Amazon Echo Show

  • 동영상



    Grove MP3 모듈

    코드



    50cm의 거리에서 5초간이라는 것이 기준입니다. 배선은 코드를 참조하십시오.

    우선 수중의 Mac에서 움직이고 있습니다. 그 중 RPi Zero W로 옮길 예정.

    로직은 alexaとgoogle homeでAPL対応音声受付システムをvoiceflowで作ってみた+距離センサーによるスキル自動起動付き 을 매우 참고로 했습니다. 고마워요.
    $ npm init
    $ npm install obniz —-save
    

    index.js
    var Obniz = require("obniz");
    var obniz = new Obniz("OBNIZ_ID_HERE");
    
    const DISTANCE = 500; 
    const DETECT_COUNT = 5;
    
    obniz.onconnect = async function () {
    
      // mp3初期化
      const mp3 = obniz.wired("Grove_MP3", { gnd: 5, vcc: 6, mp3_rx: 7, mp3_tx: 8 });
      await mp3.initWait();
    
      // 距離センサー初期化
      const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
      hcsr04.temp = 20;
    
      let sayFlg = false;
      let count = 0;
    
      // ループ
      while(true) {
    
        let avg = 0;
        let cnt = 0;
    
        for (let i=0; i<3; i++) { // measure three time. and calculate average
          const val = await hcsr04.measureWait();
          if (val) {
            cnt++;
            avg += val;
          }
        }
        if (cnt > 1) {
          avg /= cnt;
        }
    
        if (!sayFlg) {
          if (avg < DISTANCE) {
            count++;
            if (count >= DETECT_COUNT) {
              sayFlg = true;
              count = 0;
              await mp3.play(1);
            }
          } else {
            count = 0;
          }
        } else {
          if (avg > DISTANCE) {
            count++;
            if (count >= DETECT_COUNT) {
              sayFlg = false;
              count = 0;
            }
          } else {
            count = 0;
          }
        }
    
        console.log("----------------")
        console.log(`DISTANCE: ${avg}`);
        console.log(`COUNT: ${count}`);
        console.log(`SAYFLG: ${sayFlg}`);
    
        await obniz.wait(1000);
      }
    }
    

    실행
    $ node index.js
    DISTANCE: 307.03373200276
    COUNT: 0
    SAYFLG: true
    ----------------
    DISTANCE: 308.4072286603679
    COUNT: 0
    SAYFLG: true
    ・・・
    

    Alexa 스킬은 이 이야기의 본질이 아니므로 할애합니다. 자세한 내용은 아래를 참조하십시오.

    기타


  • Amazon Echo를 시작하기 위한 음성은 Amazon Polly에서 만들었습니다.
  • 생각 외에 스피커로부터의 음성이 작았기 때문에, ffmpeg로 mp3 파일의 음량을 올리고 있습니다.
  • 거리 센서의 정밀도는 조금 미묘하지만 이런 것일까라는 인상입니다.

  • 요약



    Alexa 스킬과 같은 Node.js로 쓸 수 있으므로 다르다는 것을 기억하지 않아도 좋고 (라고는 말하면서 이번은 논코딩으로 만든 스킬입니다만), 공식적으로 샘플 코드도 많이 있으므로, 나와 같이 보자 보네요 로 코드 쓰고 있는 레벨이라면 매우 도움이 됩니다.

    다른 센서와도 그 중 시도해보고 싶습니다.

    좋은 웹페이지 즐겨찾기