DIY ボイスモジュール JQ6500 ハロウィーンの電子工作

モーションセンサーPIR/フィールドセンサーボイスモジュール JQ6500 を組み合わせた電子工作

簡単 AVRマイコン ATMEGA328Pを使ってボイスモジュールをコントロール

PIRモーションセンサーからのトリガー信号を使って音声による警告システムを作ってみました。

システムのコントロールにはATMEGA328Pを使ってボイスモジュール JQ6500 に任意の音声による文章情報や擬音を録音させ そのサンプルファイルをスピーカーに出力させます。

JQ6500 ボイスモジュール は、5つのトラックを持っています K1 K2 K3 K4 K5 この各トラックはマイナス信号で起動しプログラムされたファイルを出力端子に出力します。

* JQ6500 ボイスモジュールの 入力/出力ピンの詳細はこの様になります。

今回は、K1 ( 1番トラック) に警告する文章を録音して システムの7m以内に近づくとサイレンから任意の警告音や警告音声が出力されると言った作動をするシステムになります。

このシステムのポイントと 次の問題をどの様にクリアーするかを説明します。

人または動物が このシステムの7m以内に侵入して 長時間の間そのトリガーゾーンの中を移動した場合 PIR モーションセンサーから ATMEGA328P に送られるトリガー信号が連続した形になるところが問題になります。

この PIR センサーからのトリガー信号が連続した場合に高価なPIRセンサーの場合はセンサー側で制御する事も可能ですが、簡単な構造のタイプのモデルでは JQ6500 ボイスモジュールが作動している時に次次とトリガー信号が送られて誤作動してしまいます。

この様な場合には、AVRマイコンを使ってJQ6500 ボイスモジュールに入るトリガー信号をディレイさせる指令文を使う事により この様な長時間トリガーゾーン内で連続した移動を行っても予め指令文で定義した設定内容により PIR センサーからのトリガー信号が連続して出力された場合ても この命令文の働きで JQ6500 ボイスモジュール が作動中には この JQ6500 ボイスモジュールに入るトリガー信号をマイコンが制御して ATMEGA328P の出力端子から JQ6500 ボイスモジュールへの起動信号は送りません。

また AVRマイコン使う事により システムが警告するタイミングをコントロールしたり 2回目の警告の間隔も同様に制御ができます。

なかなか 興味深いシステムです。

* 今回の配線はこの様になります。

この実験では、ブレッドボード専用の 3.3V / 5.0V パワーサプライを使いましたが 通常の5V用の電源で代用する事が可能です。

* 今回使ったスケッチはこちらです ———————-

int led = 13; // the pin that the LED is atteched to
int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)

void setup() {
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}

void loop(){
val = digitalRead(sensor); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
delay(300); // delay 100 milliseconds

if (state == LOW) {
Serial.println(“Motion detected!”);
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(18000); // delay 200 milliseconds

if (state == HIGH){
Serial.println(“Motion stopped!”);
state = LOW; // update variable state to LOW
}
}
}


実際には この様な感になります。

上記のスケッチを1部変更すると異なるトリガータイミングや連続して警告する場合にその時間の間隔を変える事も出来ます。

スポンサーリンク