这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » [物联网系列][ESP-IDF系列]HomeAssistant集成雷达

共1条 1/1 1 跳转至

[物联网系列][ESP-IDF系列]HomeAssistant集成雷达

工程师
2025-04-06 00:32:41     打赏

简介

在23年的时候买了一个深圳觅感科技的5.8G低功耗雷达模块,它的输出足够简单(当检测到有物体移动的时候输出高电平, 如果没有物体移动的话输出低电平),最近开了个物联网模块的专题, 于是想着能不能把它也集成到HA里, 其应用场景还是蛮多的。 比如说检测到有人移动之后触发摄像头进行拍照。


488e63de11cccdd7f0a24115f6fbdb4.jpg


接线图示意:

7d497ebdb7f62fb84b48bfa3856c415.jpg

接线比较简单, 仅仅是引出了一个条线到GPIO6.


代码部分

当前的工程是在上一个文章【分享评测,赢取加热台】集成AHT10湿温度传感器到Homeassistant 的工程上修改的。 首先需要初始化GPIO6 为输入模式。

void init_radar()
{
    gpio_config_t io_conf = {
        .pin_bit_mask = (1ULL << GPIO_NUM_6),  // 设置 GPIO6
        .mode = GPIO_MODE_INPUT,               // 设置为输入模式
        .pull_up_en = GPIO_PULLUP_DISABLE,     // 不使能上拉
        .pull_down_en = GPIO_PULLDOWN_DISABLE, // 不使能下拉
        .intr_type = GPIO_INTR_DISABLE         // 不使能中断
    };
    gpio_config(&io_conf);
}


然后创建一个任务,不间断的读取这个IO的状态(或者使用中断)


void radar_task(void *param)
{
    while (1)
    {
        int level = gpio_get_level(GPIO_NUM_6);
        printf("GPIO6 level: %d\n", level);
        vTaskDelay(pdMS_TO_TICKS(100));
    }
}


此时烧录之后的现象如下, 如果雷达检测到有物体移动的话,那么输出高电平。 否则输出低电平、

image.png

然后在上述的雷达任务中做一点小小的修改, 使其发送MQTT消息到MQTT服务器

void radar_task(void *param)
{
    while (1)
    {
        cJSON *root = cJSON_CreateObject();
        int level = gpio_get_level(GPIO_NUM_6);
        char level_str[2];
        sprintf(level_str, "%d", level);
        cJSON_AddStringToObject(root, "target", level_str);
        char *json_string = cJSON_PrintUnformatted(root);
        cJSON_Delete(root); // 别忘了释放 cJSON 对象

        if (json_string)
        {
            printf("JSON Data: %s\n", json_string);
            esp_mqtt_client_publish(client, "radar", json_string, 0, 1, 0);
            free(json_string);
        }

        vTaskDelay(pdMS_TO_TICKS(100));
    }
}


接着将程序烧录到开发板中, 使用MQTT客户端观察MQTT观察现象。 此时已经可以正确的接受雷达传感器的数据了。 接下来我们将它接入到HA

image.png


首先连接上远程的香橙派, 然后登录进HA的docker 容器

image.png

编辑configuration.yml

mqtt:
  sensor:
    - name: "Bedroom Temperature"
      state_topic: "bedroom/temperature"
      unit_of_measurement: "..C"
      value_template: "{{ value_json.temperature }}"

    - name: "Bedroom Humidity"
      state_topic: "bedroom/temperature"
      unit_of_measurement: "%"
      value_template: "{{ value_json.humidity }}"

    - name: "Radar Presence"
      state_topic: "radar"
      value_template: "{{ value_json.target }}"


多加了一个雷达的配置。 然后在HA的控制台中重新加载HA的配置image.png



此时便可以在HA的实体中找到这个雷达的配置选项了。

image.png


手机端

31062dd9e5dccf4f7c3a86eecebf8c3.jpg


总结

在本篇文章中我们成功的将雷达传感器接入打了HA, 使其当人员移动的时候用户可以在手机或者web页面进行实时查看。 并且还支持查看历史记录。 之后也可以将它作为触发器来完成其他的自动化操作等。



附件:

oled_mqtt.zip




关键词: ESP-IDF     物联网     HA     雷达    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]