人體紅外感應(yīng)模塊使用的是熱釋電紅外傳感器,它是利用溫度變化的特征來(lái)探測(cè)紅外線的輻射,利用雙靈敏元互補(bǔ)的方法抑制溫度變化產(chǎn)生的干擾,提高了傳感器的工作穩(wěn)定性。產(chǎn)品應(yīng)用廣泛,例如:保險(xiǎn)裝置、防盜報(bào)警器、感應(yīng)門、自動(dòng)燈具、智能玩具等。
一、模塊來(lái)源
模塊實(shí)物展示:
資料下載鏈接:
https://pan.baidu.com/s/1Bu0DL-1quXvY1Ede4c9ELw
資料提取碼:8888
工作電壓:4.5~20V
工作電流:< 50uA
電平輸出:高3.3V/低0V
感應(yīng)角度:< 100度錐角
輸出方式: GPIO
管腳數(shù)量:3 Pin
以上信息見(jiàn)廠家資料文件
三、移植過(guò)程
我們的目標(biāo)是將例程移植至CW32F030C8T6開(kāi)發(fā)板上【能夠測(cè)量人體】。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。
3.1查看資料
全自動(dòng)感應(yīng):人進(jìn)入其感應(yīng)范圍則輸出高電平, 人離開(kāi)感應(yīng)范圍則自動(dòng)延時(shí)關(guān)閉高電平,輸出低電平;
兩種觸發(fā)方式:(可跳線選擇)
不可重復(fù)觸發(fā)方式: 即感應(yīng)輸出高電平后,延時(shí)時(shí)間段一結(jié)束,輸出將自動(dòng)從高電平變成低電平;
可重復(fù)觸發(fā)方式:即感應(yīng)輸出高電平后,在延時(shí)時(shí)間段內(nèi),如果有人體在其感應(yīng)范圍活動(dòng),其輸出將一直保持高電平,直到人離開(kāi)后才延時(shí)將高電平變?yōu)榈碗娖健?/p>
HC-SR501人體感應(yīng)模塊使用說(shuō)明
感應(yīng)模塊通電后有一分鐘左右的初始化時(shí)間,在此期間模塊會(huì)間隔地輸出0-3 次,一分鐘后進(jìn)入待機(jī)狀態(tài)。
避免燈光等干擾源近距離直射模塊表面的透鏡,以免引進(jìn)干擾信號(hào)產(chǎn)生誤動(dòng)作;盡量避免流動(dòng)的風(fēng),風(fēng)也會(huì)對(duì)感應(yīng)器造成干擾。
感應(yīng)模塊采用雙元探頭,探頭的窗口為長(zhǎng)方形,雙元(A 元B 元)位于較長(zhǎng)方向的兩端,當(dāng)人體從左到右或從右到左走過(guò)時(shí),紅外光譜到達(dá)雙元的時(shí)間、距離有差值,差值越大,感應(yīng)越靈敏,當(dāng)人體從正面走向探頭或從上到下或從下到上方向走過(guò)時(shí),雙元檢測(cè)不到紅外光譜距離的變化,無(wú)差值,因此感應(yīng)不靈敏或不工作;所以安裝感應(yīng)器時(shí)應(yīng)使探頭雙元的方向與人體活動(dòng)最多的方向盡量相平行,保證人體經(jīng)過(guò)時(shí)先后被探頭雙元所感應(yīng)。為了增加感應(yīng)角度范圍,本模塊采用圓形透鏡,也使得探頭四面都感應(yīng),但左右兩側(cè)仍然比上下兩個(gè)方向感應(yīng)范圍大。
3.2引腳選擇
模塊接線圖
3.3移植至工程
移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_HumanIR.c與bsp_HumanIR.h。這里不再過(guò)多講述,移植完成后面修改相關(guān)代碼。
在文件bsp_HumanIR.c中,編寫(xiě)如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "bsp_HumanIR.h" #include "board.h" /****************************************************************** * 函 數(shù) 名 稱:HumanIR_Init * 函 數(shù) 說(shuō) 明:人體紅外模塊初始化 * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:無(wú) * 作 者:LC * 備 注:無(wú) ******************************************************************/ void HumanIR_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體 RCC_HUMANIR_ENABLE(); // 使能GPIO時(shí)鐘 GPIO_InitStruct.Pins = GPIO_HUMANIR; // GPIO引腳 GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP; // 上拉輸入 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 輸出速度高 GPIO_Init(PORT_HUMANIR, &GPIO_InitStruct); // 初始化 } /****************************************************************** * 函 數(shù) 名 稱:Get_HumanIR * 函 數(shù) 說(shuō) 明:獲取人體紅外輸出引腳的電平狀態(tài) * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:0=感應(yīng)到人體紅外 1=未感應(yīng)到人體紅外 * 作 者:LC * 備 注:無(wú) ******************************************************************/ char Get_HumanIR(void) { return ( GPIO_ReadPin(PORT_HUMANIR, GPIO_HUMANIR)?GPIO_Pin_SET:GPIO_Pin_RESET); }
在文件bsp_HumanIR.h中,編寫(xiě)如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #ifndef _BSP_HUMANIR_H_ #define _BSP_HUMANIR_H_ #include "board.h" #define RCC_HUMANIR_ENABLE() __RCC_GPIOA_CLK_ENABLE() #define PORT_HUMANIR CW_GPIOA #define GPIO_HUMANIR GPIO_PIN_1 void HumanIR_Init(void); char Get_HumanIR(void); #endif
四、移植驗(yàn)證
在自己工程中的main主函數(shù)中,編寫(xiě)如下。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "board.h" #include "stdio.h" #include "bsp_uart.h" #include "bsp_HumanIR.h" int32_t main(void) { board_init(); // 開(kāi)發(fā)板初始化 uart1_init(115200); // 串口1波特率115200 HumanIR_Init(); printf("Start.....rn"); while(1) { printf("%drn", Get_HumanIR() ); delay_ms(500); } }
移植現(xiàn)象:檢測(cè)到人時(shí)輸出1,未檢測(cè)到人時(shí)輸出0;
模塊移植成功案例代碼:
鏈接:https://pan.baidu.com/s/1G8KjRf8hsS41wngW8cC_8w?pwd=LCKF
提取碼:LCKF
審核編輯 黃宇
-
紅外傳感器
+關(guān)注
關(guān)注
9文章
519瀏覽量
47570 -
CW32
+關(guān)注
關(guān)注
1文章
203瀏覽量
640
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論