在前兩篇《Windows on Device 項目實踐 1 - PWM調光燈制作》和《Windows on Device 項目實踐 2 - 感光燈制作》中,我們學習了如何利用Intel Galileo開發板和Windows on Device來設計並完成PWM調光燈和感光燈的制作。在這個項目中,我們會使用火焰傳感器和蜂鳴器,完成一個簡單的火焰報警器的制作。
火焰傳感器外形和LED很像,(即紅外接收三極管)是機器人專門用來搜尋火源的傳感器,本傳感器對火焰特別靈敏。火焰傳感器利用紅外線對火焰非常敏感的特點,使用特制的紅外線接收管來檢測火焰,然後把火焰的亮度轉化為高低變化的電平信號,輸入到中央處理器,中央處理器根據信號的變化做出相應的程序處理。
紅外接收三極管的短引線端為負極,長引線端為正極。按照下圖將負極接到5V接口中,然後將正極和10K電阻相連,電阻的另一端接到GND接口中,最後從火焰傳感器的正極端所在列接入一根跳線,跳線的另一端接在模擬口中。如圖1所示。
圖1:火焰傳感器的連接
這次實踐項目需要使用的元器件有:
1)蜂鳴器的連接
蜂鳴器有兩個引腳,標記為“正”極性的引腳接Galileo的數字接口輸出,“負”極性的引腳接Galileo的地。在程序控制上,Galileo數字接口輸出高低電平就可以控制蜂鳴器的鳴響。
2)火焰傳感器的連接
火焰傳感器按照上圖1所講述的火焰傳感器的接線方法,將火焰傳感器接到Galileo的模擬5接口。完成整個實驗的連線。
在有火焰靠近和沒有火焰靠近兩種情況下,模擬口讀到的電壓值是有變化的。實際用萬用表測量可知,在沒有火焰靠近時,模擬口讀到的電壓值為0.3V左右;當有火焰靠近時,模擬口讀到的電壓值為1.0V左右,火焰靠近距離越近電壓值越大。
所以在程序一開始,我們可以先存儲一個沒有火焰時模擬口的電壓值i。接著不斷的循環讀取模擬口電壓值j、同存儲的值做差值k=j-i、差值k與0.6V做比較。差值k如果大於0.6V,則判斷有火焰靠近讓蜂鳴器發出聲音以作報警;如果差值小於0.6V,則蜂鳴器不響。
// Main.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "arduino.h"
int _tmain(int argc, _TCHAR* argv[])
{
return RunArduinoSketch();
}
int flame = 0;//定義火焰接口為模擬0 接口
int Buzzer = 8;//定義蜂鳴器接口為數字8 接口
int val = 0;//定義數字變量
void setup()
{
pinMode(Buzzer, OUTPUT);//定義蜂鳴器為輸出接口
pinMode(flame, INPUT);//定義火焰傳感器為輸入接口
}
void loop()
{
unsigned char i, j;//定義變量
val = analogRead(flame);//讀取火焰傳感器的模擬值
Log(L"val: %d\r\n", val);//輸出模擬值,並將其打印出來
if (val >= 600)//當模擬值大於600 時蜂鳴器鳴響
{
for (i = 0; i<80; i++)//發出一個頻率的聲音
{
digitalWrite(Buzzer, HIGH);//發聲音
delay(1);//延時1ms
digitalWrite(Buzzer, LOW);//不發聲音
delay(1);//延時ms
}
for (i = 0; i<100; i++)//發出另一個頻率的聲音
{
digitalWrite(Buzzer, HIGH);//發聲音
delay(2);//延時2ms
digitalWrite(Buzzer, LOW);//不發聲音
delay(2);//延時2ms
}
}
else
{
digitalWrite(Buzzer, LOW);
}
}
4. 調試結果
啟動Galileo,利用TelNet建立連接,然後點擊調試。程序就會通過網口下載到Galileo上。當有火焰靠近火焰傳感器時,蜂鳴器發出報警。當火焰熄滅時,蜂鳴器報警停止。
調試的視頻鏈接如下,大家可以看到火焰報警的效果:http://v.youku.com/v_show/id_XODU5MzMwNDc2.html