LoginSignup
1
1

More than 1 year has passed since last update.

arduino+超音波センサーで玄関ウェルカムボイス装置

Last updated at Posted at 2021-08-10

やりたいこと

  • 誰か(大抵は家族)が玄関に入ってきたときに、ちょっとほっこりできるように声をかけてあげたい。
  • 余っているarduinoUNOと超音波センサーHC-SR04とISD1840搭載録再ボードを組み合わせて何か作りたい。

やったこと

準備物

  • arduino (UNO R1) 多分互換機でも動く。
  • HC-SR04 多分アマゾンで買った。
  • ISD1840を積んだボード どこから買ったか忘れた。百数十円だった。

動作原理

超音波センサーで距離をリアルタイム測定し、決められた距離以下になったら録再ボードに再生信号を送る。

配線の様子

P-Eに接続すると、1回の信号入力で最後まで一通り再生される。
下の画像は、arduino4番ピンからP-Eに接続されています。

bd.jpg

arduino側ピン。ソースにも書いてありますが、

  • 2番ピン→超音波センサーのエコー
  • 3番ピン→超音波センサーのトリガー
  • 4番ピン→録再ボードへの再生トリガー

です。画像の「再生用」の4番ピンが録再ボードのP-Eにつながってます。
Vccは、超音波センサーのVccとブレッドボード上で共有しています。
pin.jpg

全体

とりあえず動作すればいいや、なのでこんな感じに。
超音波センサーの超音波が出る部分を玄関側にセットしています。
genkan.jpg

コード

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);
}

動作の様子

一応、「お帰りっス」と言ってます。聞こえるかな?

1
1
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
1
1