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