arduino 초음파 센서로 현관 환영 음성 장치

하고 싶은 일


  • 누군가(대개는 가족)가 현관에 들어왔을 때, 조금 안심할 수 있도록(듯이) 말을 걸고 싶다.
  • 남은 arduinoUNO와 초음파 센서 HC-SR04와 ISD1840 탑재 녹음 재보드를 조합하여 뭔가 만들고 싶다.

  • 했던 일



    준비물


  • arduino (UNO R1) 아마 호환기에서도 움직인다.
  • HC-SR04 아마 아마존에서 샀다.
  • ISD1840을 쌓은 보드 어디에서 샀는지 잊었다. 백수십엔이었다.

  • 작동 원리



    초음파 센서로 거리를 실시간 측정하고, 정해진 거리 이하가 되면 녹화 재보드에 재생 신호를 보낸다.

    배선의 모습



    P-E에 접속하면, 1회의 신호 입력으로 끝까지 한번에 재생된다.
    아래 이미지는 arduino 4번 핀에서 P-E에 연결되어 있습니다.



    arduino 측면 핀. 소스에도 쓰여져 있지만,
  • 2번 핀→초음파 센서의 에코
  • 3번 핀→초음파 센서의 트리거
  • 4번 핀→녹화 재보드로의 재생 트리거

  • 입니다. 화상의 「재생용」의 4번 핀이 녹화 재보드의 P-E에 연결되어 있습니다.
    Vcc는 초음파 센서의 Vcc와 브레드보드에서 공유합니다.


    전체



    우선 동작하면 좋으니, 이런 식으로.
    초음파 센서의 초음파가 나오는 부분을 현관측에 세트하고 있습니다.


    코드



    uss-isd1820.c
    //********************************************************************
    //*超音波センサを使って距離を表示するプログラム
    //
    //*ピンアサイン
    // 基板を正面(超音波がでる裏側)から見たときの左から順に
    // GND Echo Trig Vcc
    //********************************************************************
    #define echoPin 2 // Echo Pin
    #define trigPin 3 // Trigger Pin
    #define soundPin 4 // Playback Pin
    #define waittime 30 // playback waittime
    #define dt 10 // trigger time
    #define therm 24 // therm
    #define LED 13 // if <10.0cm , blink LED13
    #define LIMIT 50 // LIMIT distance 10cm
    
    double Duration = 0; //受信した間隔
    double Distance = 0; //距離
    
    void setup() {
    Serial.begin( 9600 );
    pinMode( echoPin, INPUT );
    pinMode( trigPin, OUTPUT );
    pinMode( soundPin, OUTPUT );
    digitalWrite( soundPin, LOW );
    pinMode( LED, OUTPUT );
    }
    void is10cm(double dist)
    {
      if (dist < LIMIT)
      {
        digitalWrite( LED, HIGH);
        digitalWrite( soundPin, HIGH);
        delay( waittime ); //この行がなくても動いた。
        digitalWrite( soundPin, LOW);
      } else
        digitalWrite( LED, LOW);
    }
    void loop() {
      digitalWrite(trigPin, LOW); 
      delayMicroseconds(2); 
      digitalWrite( trigPin, HIGH ); //超音波を出力0
      delayMicroseconds(dt); //
      digitalWrite( trigPin, LOW );
      Duration = pulseIn( echoPin, HIGH ); //センサからの入力
      if (Duration > 0) {
        Duration = Duration/2; //往復距離を半分にする
        Distance = Duration*(331.45+therm*0.6)*100/1000000; // 音速を340m/sに設定
        Serial.print("Distance:");
        Serial.print(Distance);
        Serial.println(" cm");
        is10cm(Distance);
      }
      delay(200);
    }
    

    동작의 모습



    일단, 「귀가」라고 말하고 있습니다. 들릴까요?

    좋은 웹페이지 즐겨찾기