1. 程式人生 > >arduino專案-1. 以弱控強,阻止犯罪繼續

arduino專案-1. 以弱控強,阻止犯罪繼續

目錄

1.1 情景說明

說明

漆黑的夜晚,當有人非法進入一所房屋,房屋內的燈在恰當的時間亮起,也許會有效阻止非法活動的繼續。

效果展示

1.2 實驗器材

器材名稱 數量
繼電器 1
人體紅外感應器 1
按鈕 1
杜邦線 若干
主控板UNO 1
LED燈 1

1.3 實驗目的

  1. 瞭解繼電器原理
    用微控制器去開啟或關閉一個電壓220V的電燈,由於微控制器工作在5V, 而電燈是220V,因此需要由微控制器控制一個繼電器,通過控制這個繼電器充當電燈的開關。
  2. 瞭解人體紅外感測器
  3. 熟悉程式設計中的條件語句
  4. 展開頭腦風暴,構思自己的作品。

1.4 認識繼電器

1. 繼電器真容

在這裡插入圖片描述

  • 圖模組下方有三個管腳,構成輸入迴路,其中(圖中右側)標註‘-’的管腳接地(GND), 標註"+”的管腳接 5V, (圖中左側)標註‘S’的管腳接訊號(數字I/O)
  • 繼電器有三個接線口,中間的接正極,用電錶量一下,0和1接線口之間是不通的(常開),0和2接線口之間是通的(常關)
  • 繼電器的型號是: SRD-05VDC-SL-C, 說明輸入電壓為直流5V
  • 看繼電器上的標註:輸出為10A 250VAC(即: 支援最高250V交流電壓, 10A電流),或 10A 30VDC(即: 支援最高30V直流電壓, 10A電流)

2. 繼電器原理

繼電器結構原理圖

  • 輸入迴路中有一個電磁鐵線圈,當輸入迴路有電流通過,電磁鐵產生磁力,吸力使輸出迴路的觸點接通,則輸出迴路導電(通)。
  • 當輸入迴路無電流通過,電磁鐵失去磁力,輸出迴路的觸點彈回原位,斷開,則輸出迴路斷電(斷)。
  • 輸入迴路與輸出迴路沒有接線關係,因此繼電器具有隔離功能。

1.5 認識人體紅外感測器

人體紅外感測器
被動式(Passive)紅外移動感測器,而紅外線(Infrared)英文簡稱IR,所以此感測器又稱為PIR移動感測器,一般通稱為“人體紅外線感測器”,所謂“被動式”偵測,代表這種感測器內部有兩個偵測“視窗”,被偵測物體必須要水平移動,它才能比較出紅外線的變化,若朝向它的正面移動,就比較不容易被偵測到。

1.6 電路圖

電路圖
說明:繼電器空頭線接市電火線,led燈的空頭接市電零線

1.7 測試程式碼

1.7.1測試繼電器

1. 程式碼
int pinRelay = 3; //管腳D3連線到繼電器模組的訊號腳
 
void setup() {
	  pinMode(pinRelay, OUTPUT); //設定pinRelay腳為輸出狀態
}
 
void loop() { 
	   digitalWrite(pinRelay, HIGH);//輸出HIGH電平,繼電器模組閉合
	   delay(5000); //等待5000毫秒
 
	   digitalWrite(pinRelay, LOW);//輸出LOW電平,繼電器模組斷開
	   delay(8000); //等待8000毫秒
}
2. 執行效果:
  1. 蜂鳴器"pa"一聲,閉合,持續5秒。(此時用萬用表測量 常開變成閉合, 常閉變成斷開)
  2. 蜂鳴器"pi"一聲,斷開,持續8秒。(此時用萬用表測量 常開變回斷開, 常閉變成閉合)

1.7.2 試驗全部程式碼

const byte PirPin = 5;  //紅外線引腳
const byte RelayPin = 8; //繼電器引腳
const int Btn_Pin = 2;   //按鈕引腳
bool btn_flag = false;   //記錄按鈕狀態
void setup() {
  pinMode(RelayPin, OUTPUT);  //設定繼電器引腳為輸出模式
  pinMode(PirPin, INPUT);     //設定人體紅外線引腳為輸入模式
  pinMode(Btn_Pin, INPUT);    //設定按鈕引腳為輸入模式
  Serial.begin(9600);        //初始化串列埠
}

void loop() {
  if (not digitalRead(Btn_Pin)) {
    //如果按鈕狀態為按壓一次,則說明是主人認為開燈,
    //第二次按壓按鈕應該關閉燈
    if (btn_flag) digitalWrite(RelayPin, LOW);  
    btn_flag = not btn_flag;                    //切換按鈕狀態
  }
  if (btn_flag) {    //如果是主人按壓按鈕,且是第一次按壓,則開燈
    digitalWrite(RelayPin, HIGH);
  } else {           //否則切換到人體感應模式
    int hasPerson = 0;
    hasPerson = digitalRead(PirPin);  //讀取紅外感測器狀態
    if (hasPerson) {                  // 如果檢測到人,延時5秒亮燈
      delay(5000);
      digitalWrite(RelayPin, HIGH);
    }
  }
}

1.8 完成專案

以小組為單位,一起完成任務。
人員分工表

姓名 任務說明

1.9 頭腦風暴

根據本次課,希望同學們展開頭腦風暴,構思出自己的作品,在下一次課中實現它。現在請同學們開展小組討論,將想法填入表格中

小組名稱 構思介紹

所需實驗器材

器材名稱 數量