14.1.人体赤外線感応センサーによる侵入警報システム
プロジェクト概要
最近は治安が悪くなっています。このため外部からの侵入警報の需要が増えています。このプロジェクトでは、人体赤外線感応センサーによる侵入警報システムを作成します。センサーの仕様は以下です。
電源電圧: DC4.5~20V
出力信号: HIGH 3.3V、LOW 0V
動作モード: L:再検知しない, H:再検知あり
検知時間: 0.5s
出力時間: 3~200s※調整可能
感知範囲、距離: 100°、センター 5~7m、サイド 3~4m
以下、3つの調整可能項目があります。
ジャンパーはH、Lに設定可能です。Hの時は、リピートトリガーで、検出されると常に規定の時間オンします。Lの時は、シングルトリガーとなり、オンの時間は、ポテンションメーターで設定します。正面向かって、電解コンデンサー側のポテンションメーターで設定します。反時計周り最小で3秒、時計周り最大で200秒となります。もう一つのポテンションメーターは感度で設定で、反時計周り最小距離、時計周り最大距離となります。
本システムはシングルトリガーで、最小のオン時間としております。
検出されると、標準出力に”ALARM! Montion detected!"と表示され、ブザーがオンされます。タクトスイッチがオンされるまでブザーは、鳴り続け、再検出もされません。タクトスイッチで、アラームはリセットされます。
部品リスト
HC-SR501人体赤外線感応モジュール 1 アマゾン
電子ブザーPKB24SPCH3601 1 秋月電子通商
配線図

ソースリスト
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "pico/stdlib.h"
#define LED_PIN PICO_DEFAULT_LED_PIN
#define BUZZER_PIN 2
#define BUTTON_PIN 3
#define PIR_PIN 10
//setup ----------------------
//-----------------------------
int main()
{
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
gpio_init(BUTTON_PIN);
gpio_set_dir(BUTTON_PIN, GPIO_IN);
gpio_pull_down(BUTTON_PIN);
gpio_put(LED_PIN, 0);
gpio_put(BUZZER_PIN, 0);
WaitTerminalStartup(30*1000);
printf("\nTerminal connected\n");
bool alarmOn = false;
uint8_t pvalue = 0, bvalue = 0;
uint8_t value;
while(true){
if(!alarmOn) {
value = gpio_get(PIR_PIN);
if(pvalue == 0 && value == 1) {
alarmOn = true;
gpio_put(BUZZER_PIN, 1);
printf("ALARM! Motion detected!\n");
}
pvalue = value;
} else {
value = gpio_get(BUTTON_PIN);
if(bvalue == 0 && value == 1) {
alarmOn = false;
gpio_put(BUZZER_PIN, 0);
}
bvalue = value;
}
sleep_ms(10);
}
return 0;
}

コメントをお書きください