微波運動傳感器是利用多普勒雷達原理設計的微波移動物體探測器。不同于一般的紅外探測器,微波傳感器通過通過檢測物體反射的微波來探測物體的運動狀況,檢測對象將并不會局限于人體,還有很多其他的事物。
微波傳感器不受環(huán)境溫度的影響,探測距離遠,靈敏度高,被廣泛應用于工業(yè)、交通及民用裝置中,如車輛測速、自動門、感應燈、倒車雷達等。由于微波傳感器檢測對象存在普遍性,在實際的生活應用中,會搭配另一個傳感器來做針對性的檢測。如微波傳感器+紅外熱釋電傳感器,能夠有效的判斷是否有人經過,不會被陽光,被衣物顏色所干擾,也不會對其他物體產生反應。
一、模塊來源
資料下載鏈接:https://pan.baidu.com/s/110NZE7hM3ifS1ho53fxmoA
密碼:2cz6
二 規(guī)格參數(shù)
工作電壓:5V±0.25V
工作電流:30~50mA
探測距離:2-16m 連續(xù)可調
尺寸: R=30.6mm
輸出方式: GPIO
管腳數(shù)量:3 Pin
以上信息見廠家資料文件
三移植過程
我們的目標是將例程移植至CW32F030C8T6開發(fā)板上【能夠判斷測量一定距離內是否物體運動】。首先要獲取資料,查看數(shù)據(jù)手冊應如何實現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。
3.1查看資料
由于微波傳感器檢測對象存在普遍性,即只要有物體動作,都能夠檢測到,因此只需要檢測OUT引腳的高低電平變化即可。
3.2引腳選擇
模塊接線圖
3.3查移植至工程
移植步驟中的導入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_mh100x.c與bsp_mh100x.h。這里不再過多講述,移植完成后面修改相關代碼。
在文件bsp_mh100x.c中,編寫如下代碼。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#include "bsp_mh100x.h"
#include "board.h"
#include "stdio.h"
/******************************************************************
* 函 數(shù) 名 稱:MH100X_GPIO_Init
* 函 數(shù) 說 明:MH100X初始化
* 函 數(shù) 形 參:無
* 函 數(shù) 返 回:無
* 作 者:LC
* 備 注:無
******************************************************************/
void MH100X_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結構體
RCC_OUT_ENABLE(); // 使能GPIO時鐘
GPIO_InitStruct.Pins = GPIO_OUT; // GPIO引腳
GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP; // 上拉輸入
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 輸出速度高
GPIO_Init(PORT_OUT, &GPIO_InitStruct); // 初始化
}
/******************************************************************
* 函 數(shù) 名 稱:OUTPIN_Scanf
* 函 數(shù) 說 明:返回OUT引腳電平狀態(tài)
* 函 數(shù) 形 參:無
* 函 數(shù) 返 回:1=未檢測到物體移動 0=檢測到物體移動
* 作 者:LC
* 備 注:無
******************************************************************/
char OUTPIN_Scanf(void)
{
return OUT_IN;
}
在文件bsp_mh100x.h中,編寫如下代碼。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#ifndef _BSP_MH100X_H_
#define _BSP_MH100X_H_
#include "board.h"
#define RCC_OUT_ENABLE() __RCC_GPIOC_CLK_ENABLE()
#define PORT_OUT CW_GPIOA
#define GPIO_OUT GPIO_PIN_1
#define OUT_IN GPIO_ReadPin(PORT_OUT, GPIO_OUT)
void MH100X_GPIO_Init(void);//引腳初始化
char OUTPIN_Scanf(void);//微波雷達的輸入狀態(tài)
#endif
?04移植驗證
在自己工程中的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_mh100x.h"
int32_t main(void)
{
board_init(); // 開發(fā)板初始化
uart1_init(115200); // 串口1波特率115200
uint8_t flag = 0;
uint16_t time = 0;
MH100X_GPIO_Init();
printf("Demo Startrn");
while(1)
{
//檢測到有物體移動
if( OUTPIN_Scanf() == 0 )
{
flag = 1;
}
if( flag == 1 )
{
if( time == 0 ) //打開門
{
printf("openrn");
}
time++;
if( time >= 2000 )//超過兩秒則關門
{
time = 0;
flag = 0;
printf("closern");
}
delay_ms(1);//時間基準
}
}
}
移植現(xiàn)象:對準自己,當檢測到移動時,發(fā)送open,超過兩秒之后發(fā)送close,反復循環(huán)。
模塊移植成功案例代碼:
鏈接:https://pan.baidu.com/s/1teceTRuqamboxT4F8lULvQ?pwd=LCKF
提取碼:LCKF