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