芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
萤火工厂CEM5826-M11测评三: 雷达监控
原创 发布时间:2024/10/16 20:24
版块:
安信可
简介:毫米波雷达与小安派结合,实现当检测到物体移动时, 进行拍摄记录。

一、简介

使用萤火工场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
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
小鳄鱼
创作者认证
目录

一、简介

二、毫米波雷达

三、电路连接

四、程序

五、效果展示

最新帖子
树莓派pico 2测评 - 初体验【工程师经验】+ 飞线【开源】zvs142857 2.1A,3A快充 充电宝迷你UC3842 开关电源优化全解析:攻克常见难题,提升性能飞腾CPU × DeepSeek大模型,双芯加持全系列稳跑
热门版块
查看更多
维修技术
电子元器件
萤火工场
电子DIY
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计
开源项目

207

收藏

分享

微信扫码
分享给好友

评论