正規のオンライン小売業者:
このレッスンでは、Raspberry Piを使用してPIRモーションセンサー(ヒューマンボディパイロ電気赤外線センサー)を制御し、アラームシステムを作成する方法を紹介します。
1 * Raspberry Pi
1 * ブレッドボード
1 * ブザー
1 * PIRモーションセンサー
いくつかのジャンパーワイヤー
ソフトウェア準備:
注意:このレッスンでは、PC上のPuTTyを介してRaspberry Piをリモートで制御します。 Raspberry Piの設定方法については、レッスン1:Raspberry Piのはじめ方をご覧ください。
パッシブ赤外線センサー(PIRモーションセンサー)は、一定距離内のオブジェクトから放射される赤外線(IR)の量の変化を検出する電子センサーです。 センサーは、入射する赤外線放射を電圧信号に変換します。
PIRセンサーの検出範囲は8〜12umであり、人体の温度は約10umのIRを放射します。 したがって、PIRセンサーはアラームシステムで人間の動きを検出するためによく使用されます。
このプロジェクトのPIRセンサーには3つのピン(VCC、OUT、GND)、2つのポテンショメータ(感度調整用と時間遅延調整用)があり、以下の画像に示されています。
以下の接続図に従って、PIRセンサーとブザーをPiに配線してください。
サンプルコード
C言語ユーザーの場合は、以下の手順に従ってください:
1) 次のターミナルコマンドを入力して、Cのサンプルコードをダウンロードします。
cd ~
sudo wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_16/pirsensor.c
注:サンプルコードファイルをカスタマイズする場合は、以下のコマンドを入力してソースコードを編集することができます。
sudo nano pirsensor.c
2)コードをコンパイルする
gcc -Wall -o pirsensor pirsensor.c -lwiringPi
4) プログラムを実行する
sudo ./pirsensor
5) 実行結果
プログラムが実行を開始すると、ターミナルにプログラムに応じたメッセージが表示されます。Raspberry PI PIRセンサーの前に移動すると、パイゾブザーが鳴動するはずです。離れると、ブザーは鳴動を停止します。
C言語のサンプルコード解析
#include < wiringPi.h> #include < stdio.h> #include < stdlib.h> #define BuzzerPin 1 //output buzzer signal to wiringPi pin#1(BCM#18) #define PIRPin 0 //input PIR sensor signalfrom wiringPi pin#0(BCM#17) int main(void) { // When initialize wiring failed, print messageto screen if(wiringPiSetup() == -1){ printf("setup wiringPi failed !"); exit(1); } pinMode(BuzzerPin, OUTPUT); pinMode(PIRPin,INPUT); printf("\n"); printf("========================================\n"); printf("| Alarm |\n"); printf("| ------------------------------ |\n"); printf("| PIR connect to wPi#0 |\n"); printf("| |\n"); printf("| Buzzer connect to wPi#1 |\n"); printf("| |\n"); printf("| OSOYOO|\n"); printf("========================================\n"); printf("\n"); while(1){ if(!(digitalRead(PIRPin))){ digitalWrite(BuzzerPin, HIGH); printf("\n"); printf("-------------------|\n"); printf("| no alarm... |\n"); printf("-------------------|\n"); delay(1000); } else{ digitalWrite(BuzzerPin, LOW); delay(500); printf("\n"); printf("===================|\n"); printf("| alarm... |\n"); printf("===================|\n"); } } return 0; }
Pythonユーザーの場合は、以下の手順を実行してください。
1) 以下のコマンドを入力して、Pythonサンプルコードをダウンロードしてください。
cd ~
sudo wget –no-check-certificate https://osoyoo.com/driver/pi3_start_learning_kit_lesson_16/pirsensor.py
2)プログラムを実行する
sudo python ./pirsensor.py
3) 実行結果
プログラムが実行を開始すると、ターミナルにプリントメッセージが表示されます。Raspberry PI PIRセンサーの前に移動すると、パイゾブザーが鳴動するはずです。離れると、ブザーの鳴動が停止します。
Pythonサンプルコード解析:
import RPi.GPIO as GPIO import time # set BCM_GPIO 17(wPi#0) as PIR pin PIRPin = 17 # set BCM_GPIO 18(wPi#1) as buzzer pin BuzzerPin = 18 #print message at the begining ---custom function def print_message(): print ('==================================') print ('| Alarm |') print ('| ----------------------- |') print ('| PIR connect to GPIO0 |') print ('| |') print ('| Buzzer connect to GPIO1 |') print ('| ------------------------ |') print ('| |') print ('| OSOYOO|') print ('==================================\n') print ('Program is running...') print ('Please press Ctrl+C to end the program...') #setup function for some setup---custom function def setup(): GPIO.setwarnings(False) #set the gpio modes to BCM numbering GPIO.setmode(GPIO.BCM) #set BuzzerPin's mode to output,and initial level to HIGH(3.3V) GPIO.setup(BuzzerPin,GPIO.OUT,initial=GPIO.HIGH) GPIO.setup(PIRPin,GPIO.IN) #main function def main(): #print info print_message() while True: #read Sw520dPin's level if(GPIO.input(PIRPin)!=0): GPIO.output(BuzzerPin,GPIO.LOW) #time.sleep(0.5) print ('********************') print ('* alarm! *') print ('********************') print ('\n') time.sleep(1) else: GPIO.output(BuzzerPin,GPIO.HIGH) print ('====================') print ('= Not alarm... =') print ('====================') print ('\n') time.sleep(1) #define a destroy function for clean up everything after the script finished def destroy(): #turn off buzzer GPIO.output(BuzzerPin,GPIO.HIGH) #release resource GPIO.cleanup() # # if run this script directly ,do: if __name__ == '__main__': setup() try: main() #when 'Ctrl+C' is pressed,child program destroy() will be executed. except KeyboardInterrupt: destroy() pass
DownLoad Url osoyoo.com
You must be logged in to post a comment.
The operating voltage of this PIR motion sensor is 5V to 20V. Better connect the VCC pin to 5V.
Hi, I’m a newbie to raspberry pi. I’m having difficulty with lesson 16. The buzzer is always on when I run the program. Everything is wired correctly. Can anyone advise how to test to see what’s wrong?
Hi, Please turn sensitivity adjustment and time delay adjustment of IR motion sensor according to the instruction. what’s more, the sensor will be affected by environment(such as sunshine, wind and so on)
Hi Elaine, I moved the VCC connection to 5v as suggested by amiya. Works perfectly now 🙂