項目采用數字微波傳感器和Arduino控制板,實現了一個人體探測系統,可探測到墻壁后方的活動物體。相較紅外傳感器、超聲波傳感器、PIR接近傳感器和TOF飛行時間傳感器方案,本項目對各種物體都敏感,而且傳感器的數據不受室內溫度的影響。
了解微波傳感器
微波傳感器是利用微波特性來檢測一些物理量的器件,可感應物體的存在、運動速度、距離、角度等信息。
工作時,由發射天線發出的微波,遇到被測物體時將被吸收或反射,使功率發生變化。若利用接收天線接收通過被測物體或由被測物反射回來的微波,并將它轉換成電信號,再由測量電路處理,就實現了微波檢測。
結構上,微波傳感器主要由微波振蕩器和微波天線組成。微波振蕩器是產生微波的裝置,如速調管、磁控管或某些固體元件等。微波振蕩器產生的振蕩信號需用波導管傳輸,再通過天線發射出去。為了使發射的微波具有一致的方向性,天線應具有特殊的構造和形狀。
相較PIR等,微波傳感器性能不受光纖、溫度、濕度、噪聲、灰塵等影響,廣泛應用于液位檢測、自動洗衣機、車速測量、自動門運動檢測、車輛傾覆、生產線材料檢測、自動燈控、高階安防警報系統等。
數字微波傳感器V2.0
使用來自DFrobot的重力數字微波傳感器V2.0,可非接觸檢測任何物體,其讀數不受溫度、濕度、噪聲、空氣、灰塵和光線的影響,具有較強的抗RF干擾能力,非常適合苛刻環境應用。由于輸出功率小,對人體沒有傷害,加上檢測范圍寬,還可用來檢測非生命類物體。
主要特點包括:
工作電壓:5V
工作電流:最大60mA,典型值為37mA。
探測距離:2-16米,可通過電位器調節。
探測角度:與天線并行方向72°,垂直方向為36°。
調頻精度: 3MHz
輸出功率(Minimum): 13dBm EIRP
諧波輻射: <-10dBm
平均電流: 2mA typ.
脈沖寬度(Min.): 5uSec
負荷周期(Min.): 1%
接收:敏感度(10dB信噪比) 3Hz to 80Hz帶寬: -86dBm
3Hz to 80Hz 帶寬簇: 10uV
天線增益: 8dBi
垂直3dB寬帶: 36 degrees
紅色LED為電源指示燈,黃色為信號指示LED。沒有活動物體時間。由于沒有信號,LED保持熄滅狀態,只有傳感器檢測到活動物體時點亮。
黃色PCB為天線接口板,紅色引線為5V,黑色線為GND,綠色線為輸出。
微波傳感器測試
微波傳感器光線的“ON”持續時間可按照需求進行改變,采用更高階微波傳感器可獲得更高級的性能體驗。
項目要求每隔3秒,就通過OLED顯示模塊顯示一下發生中斷的數目。這些中斷只在出現移動物體,或者人體時才發生,數字越大意味著運動越多。
微波傳感器的探測距離為2-16米,模塊上的藍色電位器就是用來調節測量距離的。
為了測試傳感器的性能,我將其固定在房門上,安裝時要將微波傳感器的正面朝向被檢測區域,看看能否檢測到弟弟的活動。
果然,傳感器成功檢測到了房間里的弟弟。
構建人體探測系統
該系統可探測躲藏于墻壁后方的運動物體及人類,參見該探測系統電路圖。
系統中,微波傳感器的輸出引腳連接于D2開發板的D2引腳,5v及GND兩個引腳分別連接于Arduino的5v和GND引腳。
電路圖左上側是基于LM7805穩壓器的5V穩定電壓,J1是DC電源的母頭。這里,我們連接了一個12v適配器、鋰離子電池,或者太陽能電池板。
電路圖右側為一個i2c接口的SSD1306 OLED模塊,其SCL引腳和SDA引腳分別鏈接于Arduino板子的A5、A4引腳。
以下是本活體探測系統代碼:
#include
#include //Timer interrupt function library
#include
#include
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3D
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int pbIn = 0; // Define interrupt 0 that is digital pin 2
int ledOut = 13; // Define the indicator LED pin digital pin 13
int number=0; //Interrupt times
volatile int state = LOW; // Defines the indicator LED state, the default is not bright
void setup()
{
Serial.begin(9600);
pinMode(ledOut, OUTPUT);//
attachInterrupt(pbIn, stateChange, FALLING); // Set the interrupt function, interrupt pin is digital pin D2,
//interrupt service function is stateChange (),
//when the D2 power change from high to low , the trigger interrupt.
MsTimer2::set(3000, Handle); // Set the timer interrupt function, running once Handle() function per 1000ms
MsTimer2::start();//Start timer interrupt function
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
}
void loop()
{
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,5);
display.println("status: ");
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(0,30);
display.println(number);
display.display();
display.clearDisplay();
delay(10);
}
void stateChange() //Interrupt service function
{
number++; //Interrupted once, the number + 1
}
void Handle() //Timer service function
{
number = 0;
}
這樣,將電路安裝于墻壁上,微波傳感器系統就能探測到墻壁的另一方是否有人在活動,并將結果顯示在OLED顯示屏上。
審核編輯:湯梓紅
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756559 -
探測系統
+關注
關注
0文章
59瀏覽量
11335 -
Arduino
+關注
關注
188文章
6477瀏覽量
187813
發布評論請先 登錄
相關推薦
評論