一、简介
使用萤火工场CEM5826-M11高灵敏度人体存在检测雷达模块(24GHz
毫米波雷达)来触发安信可小安派-Cam-D200开发板进行拍摄。
实现当检测到物体移动时, 进行拍摄记录。
二、毫米波雷达
CEM5826-M11
是一款高灵敏度24GHz
毫米波人体微动存在检测雷达模块。区别于传统雷达通过检测人体移动的大幅度动作或肢体动作来判断人体存在,本模块主要特点是在传统人体感应雷达的功能基础上,同时具备检测积累人体微动幅度的运动,来判断人体的存在的功能。因此相比传统多普勒雷达来说,具备一定范围内的存在检测,准确率更高。不易漏报。
毫米波雷达模块引脚定义如下:
管脚 | 名称 | 备注 |
---|---|---|
1 | VCC | 电源 5V 供电 |
2 | GND | 接地 |
3 | OUT | 感应输出管脚 |
4 | RX | TTL 串口接收 |
5 | TX | TTL 串口发射 |
本案例中只需要使用VCC、GND、OUT
引脚, 使用OUT
引脚输出高低电平去触发拍摄。
其中OUT
说明如下:
- 高电平指示检测到目标,低电平指示未检测到目标。(当然也可以通过串口配置来实现反转)
具体配置方法见下方的配置指令:
th=xx: 检测阈值,默认值为 200。
vmin=xx:设置最小检测速度,单位为 km/h,默认值为 0。
vmax=xx:设置最大检测速度,单位为 km/h,默认值为 100。
led_on_100ms=xx: 设置 led 电平维持时间,时间为 xx*0.1s,默认值为 10。
led_iflag=xx: 设置 led 指示模式,led_iflag 默认值为 0。
当 led_iflag=0 时,高电平指示检测到目标,低电平指示未检测到目标。
当 led_iflag=1 时,高电平指示未检测到目标,低电平指示检测到目标。
save: 将当前参数存储到 flash 中,确保参数掉电不丢失。
get_all: 获取当前参数值。
VER: 获取软件版本号。
所有指令带回车换行发送有效
三、电路连接
- 使用面包板进行电路的搭建工作, 将毫米波雷达模块的
OUT
引脚与小安派Cam-D200
开发板的IO18
引脚相连, 并使用小-Cam-D200
开发板的5V和GND
引脚给毫米波雷达模块供电 - 使用TTL传串口工具连接小安派
Cam-D200
开发板, 以便后续程序的烧录 - 将TF存储卡插入小安派
Cam-D200
开发板
连接图如下:
四、程序
篇幅有限, 仅展示主要部分的程序内容, 详细程序见文章末尾的附件。
qyq_module_button_type_t qyq_module_button;
qyq_module_button_config_t qyq_module_button_config;
uint16_t qyq_module_button_contimer_value[8] = {20, 20, 20, 20, 20, 20, 20, 20}; // 短按与双击的间隔时间
uint16_t qyq_module_button_longtimer_value[1] = {200}; // 长按时间值s
struct bflb_device_s *gpio;
volatile static uint8_t wifi_status = 0;
volatile static uint8_t led_status = 0;
extern uint8_t *pic_addr;
extern uint32_t pic_size;
extern uint8_t s_led_status;
uint8_t qyq_module_button_statusin(void) { // 需要适配,按键输入引脚
if (bflb_gpio_read(gpio, GPIO_PIN_2) == 1) {
return 1;
}
return 0;
}
void bl618_button_task(void *msg){
uint16_t value = 0;
gpio = bflb_device_get_by_name("gpio");
bflb_gpio_init(gpio, GPIO_PIN_2, GPIO_INPUT | GPIO_PULLDOWN | GPIO_SMT_EN | GPIO_DRV_0); // s2按键
bflb_gpio_init(gpio, GPIO_PIN_16, GPIO_OUTPUT | GPIO_PULLDOWN | GPIO_SMT_EN | GPIO_DRV_1); // led开关引脚
bflb_gpio_init(gpio, GPIO_PIN_18, GPIO_INPUT | GPIO_PULLDOWN | GPIO_SMT_EN | GPIO_DRV_0); // 雷达信号输入引脚
bflb_gpio_reset(gpio, GPIO_PIN_18);
printf("bl618_button_task\r\n");
qyq_module_button_config.qyq_module_button_contimer_value = null;
qyq_module_button_config.qyq_module_button_longtimer_value = qyq_module_button_longtimer_value;
qyq_module_button_config.qyq_module_button_number = 1;
qyq_module_button_config.qyq_module_button_statusin = qyq_module_button_statusin;
qyq_module_button_create(&qyq_module_button, &qyq_module_button_config);
while (1){
// 如果按键被按下
if (qyq_module_button.qyq_module_button_get_buttonvalue(&qyq_module_button, &value) != 0){
switch (value){
// 如果短按
case 1:
if(s_led_status){
bflb_gpio_set(gpio, GPIO_PIN_16);
vTaskDelay(pdMS_TO_TICKS(300));
take_photo(pic_addr,pic_size);
bflb_gpio_reset(gpio, GPIO_PIN_16);
}
else{
take_photo(pic_addr,pic_size);
}
break;
// 如果长按
case 3:
s_led_status = !s_led_status;
printf("led_ctrl:%d\r\n",s_led_status);
break;
default:
break;
}
}
// 如果雷达引脚接收到信号
if (bflb_gpio_read(gpio, GPIO_PIN_18)){
if(s_led_status){
bflb_gpio_set(gpio, GPIO_PIN_16);
vTaskDelay(pdMS_TO_TICKS(300));
take_photo(pic_addr,pic_size);
bflb_gpio_reset(gpio, GPIO_PIN_16);
}
else{
take_photo(pic_addr,pic_size);
}
}
// 按键扫描时间 200ms
vTaskDelay(pdMS_TO_TICKS(200));
}
}
int main(void){
// 板卡初始化
board_init();
bl618_wifi_init();
filesystem_init();
bl616_uart_init();
xTaskCreate(bl618_wifi_task, (char *)"bl618_wifi_task", 4096, NULL, 22, &bl618_wifi_task_handle);
xTaskCreate(bl618_button_task, (char *)"bl618_button_task", 4096, NULL, 23, &bl618_button_task_handle);
xTaskCreate(bl618_camera_task, (char *)"bl618_camera_task", 4096, NULL, 20, &bl618_camera_task_handle);
vTaskStartScheduler();
while (1){
}
}
烧录部分见: 安信可小安派-Cam-D200测评二:搭建开发环境
五、效果展示
通过串口可以观察到毫米波雷达检测到的移动物体的照片已经拍摄并存储
使用电脑查看TF存储卡中的图片:
选几张移动物体的照片进行展示, 可以看出, 还是非常灵敏的。
工程附件
AiPi-CAM-D200.zip
2024/10/16 20:24
全部评论