M5Stack과 초음파 거리 센서로 Amazon Echo 시작

Twitter에서 본 M5Stack을 속공 구입해 여러가지 시험해 놀아 보았습니다.
우치의 회사는 Amazon Echo를 사용한 접수 시스템을 채용하고 있습니다만, iPad를 사용한 I-FACE과의 치열한 접수 시스템 배틀이 전개되고 있습니다.

거기서, 사람이 접수 시스템에 가까워지면 「알렉사, 접수를 열어」라고 말해 강제적으로 음성 접수 시스템을 시작할 계획을 기획했습니다.



소개



쉽게 M5Stack 소개. M5Stack은 5cm 사방에 320x240 컬러 TFT, USB, Grove의 커넥터, 스피커, 핀 헤더, 핀 소켓, wi-fi, Bluetooth 탑재, microSD 카드 슬롯과 엄청난 모듈입니다.
외형의 귀여움에 반해서 바로 구입해 버렸습니다.

Grove 커넥터가 있기 때문에 납땜하지 않고 즉시 초음파 거리 센서를 사용할 수있었습니다.



완성 동영상



접수 시스템을 M5Stack과 거리 센서를 사용하여 자동 응답 해 보았습니다. # 단맛


환경





1. 초음파 거리 센서 모듈 라이브러리 얻기



초음파 거리 센서 모듈 라이브러리를 아래에서 다운로드합니다.

다운로드 한 Arduino 스케치 - 라이브러리를 포함 -. ZIP 형식 라이브러리를 설치를 선택하여 설치합니다.





M5Stack Gray(9축 IMU 탑재)



2. 스케치 예



방문자가 거리 센서의 30cm 이내에 5초간 있을 때 M5Stack에 탑재되어 있는 스피커로부터 「알렉사, 접수를 열고」라고 하는 SD카드에 보존하고 있는 mp3파일을 재생하고 있습니다.

지속적으로 작동하는 것을 방지하기 위해 아무도 없어지고 5초가 지나면 감지 모드를 다시 시작합니다.



초음파 거리 센서의 Grove 번호는 22이므로 22를 지정합니다.




sample.ino

#include "Ultrasonic.h"
#include <M5Stack.h>
#include "AudioFileSourceSD.h"
#include "AudioFileSourceID3.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2S.h"

#define DISTANCE 30

bool sayFlg = false;
int count = 1;

AudioGeneratorMP3 *mp3;
AudioFileSourceSD *file;
AudioOutputI2S *out;
AudioFileSourceID3 *id3;

long messageSentAt = 0;

// 距離センサー22番を指定
Ultrasonic ultrasonic(22);

void setup()
{
  Serial.begin(115200);

  M5.begin();
  delay(500);

  // ボリューム調整
  M5.Speaker.setVolume(1);

  // mp3初期化
  file = new AudioFileSourceSD("/alexa_voice.mp3");
  id3 = new AudioFileSourceID3(file);
  out = new AudioOutputI2S(0, 1); // Output to builtInDAC
  out->SetOutputModeMono(true);
  mp3 = new AudioGeneratorMP3();

  M5.Lcd.setTextFont(4);
  M5.Lcd.setCursor(0, 0);

}

void loop()
{
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    long RangeInCentimeters;

    // 距離センサーから取得
    RangeInCentimeters = ultrasonic.MeasureInCentimeters();

    // 画面クリア
    M5.Lcd.clear();
    M5.Lcd.setCursor(0, 0);

    // 画面に距離を表示
    M5.Lcd.printf("%d cm", RangeInCentimeters);

    delay(250);

    long now = millis();

    // 1秒ごとに距離をチェック
    if (now - messageSentAt > 1000) {
      messageSentAt = now;

      if (!sayFlg) {
        // 距離が30cm以下ならカウントアップする
        if (RangeInCentimeters < DISTANCE) {
          count++;

          // 5カウント(5秒)経過
          if (count > 5) {
            sayFlg = true;
            count = 1;

            // SDカードに保存している音声mp3データ再生
            file = new AudioFileSourceSD("/alexa_voice.mp3");
            id3 = new AudioFileSourceID3(file);
            out = new AudioOutputI2S(0, 1); // Output to builtInDAC
            out->SetOutputModeMono(true);
            mp3 = new AudioGeneratorMP3();
            mp3->begin(id3, out);

          }
        } else {
          count = 1;
        }

      } else {
        // 距離が30cm以上ならカウントアップする
        if (RangeInCentimeters > DISTANCE) {
          count++;

          // 5カウント(5秒)経過
          if (count > 5) {
            // 検出再開
            sayFlg = false;
            count = 1;                
          }
        } else {
          count = 1;
        }

      }
    }  

  }
  M5.update();
}




3. 연결 예



M5Stack과의 연결 예입니다. Grove 실드에 꽂는 것만으로 사용할 수 있으므로, 매우 편리하게 이용할 수 있습니다.

M5Stack에는 조금이지만 배터리가 탑재되어 있으므로 무선으로 가동시킬 수 있습니다.



GROVE - 초음파 거리 센서 모듈



요약



M5Stack은 그 작은 인클로저이면서 다양한 모듈이 도입되어 있습니다. 부족한 기능은 별매의 모듈을 Stack 하는 것으로 점점 파워 업 해 갑니다.



이번은 간단한 거리 센서를 사용한 예였습니다. 아이디어에 따라 더 재미있을 수 있다고 생각합니다.

거리 센서는 미묘하게 정밀도가 나쁘기 때문에, 생각한 값을 취득할 수 없거나 하기 때문에 실운용에는 엄격한 인상이었습니다. 바삭 거리를 측정하는 분에는 확실하지 않지만.



그럼 멋진 M5Stack 생활을!



시스템화의 검토나 상담은 당사에 문의해 주세요.

아마존 에초


좋은 웹페이지 즐겨찾기