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