去年購入して手をつけていなかった音声録音モジュールを使ってみたら意外に機能がしっかりしているので「お客さんが近づくと声をかける」サウンドボトルを作ってみました。ヨーグルトの空きボトルでスピーカーボックスを作ったのでしっかりした音量で再生します。音質は誰が録音したのかわかる程度に良い音です。
モジュールにはマイクがハンダ付けされていたので取り外してボトルに取り付けました。マイクを外した時に基板のパターンも剥がれて、それを修復するのに苦労しましたのであまりお勧めしません。
主な部品
ISD1820 音声録音再生モジュール 169円
Arduino Nano互換機 330円
超音波距離センサー 164円
USBポート付き充電用電池ボックス(100円ショップのCan Do(キャンドゥ))
タクトスイッチ、ブレッドボードなど
動作
タクトスイッチを押しながらマイクに向かって最長10秒録音する。物体が75cmよりも近づくと録音してある音声を再生する。
スケッチ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
int Trig = 5; int Echo = 6; int Duration; float Distance; int Sound = 4; int DistNear = 75; boolean SenseNear=LOW; int farCount=3; int ResetNear=3; int RecSW = 2; int Rec = 3; void setup() { //Serial.begin(9600); pinMode(Trig,OUTPUT); pinMode(Echo,INPUT); pinMode(Sound,OUTPUT); pinMode(RecSW,INPUT_PULLUP); pinMode(Rec,OUTPUT); } void loop() { while(digitalRead(RecSW)==LOW){ digitalWrite(Rec,HIGH); delay(10); } digitalWrite(Rec,LOW); digitalWrite(Trig,LOW); delayMicroseconds(1); digitalWrite(Trig,HIGH); delayMicroseconds(11); digitalWrite(Trig,LOW); Duration = pulseIn(Echo,HIGH); if (Duration>0) { Distance = Duration/2; Distance = Distance*340*100/1000000; // ultrasonic speed is 340m/s = 34000cm/s = 0.034cm/us if(Distance < DistNear && SenseNear== LOW){ digitalWrite(Sound,HIGH); delay(50); digitalWrite(Sound,LOW); SenseNear = HIGH; farCount=ResetNear; } else if (Distance >= DistNear && SenseNear== HIGH){ farCount--; if(farCount<=0){ SenseNear = LOW; } } /* Serial.print(Duration); Serial.print(" us "); Serial.print(Distance); Serial.println(" cm"); */ } delay(500); } |