利用 ESP32系列的 WIFI CSI 技术打造5.8G及24G雷达的智能应用

Wi-Fi CSI(Channel State Information)ESP32 提供的一项技术,用于获取无线信道的状态信息。通过Wi-Fi CSI,ESP32能够在数据包发送和接收时测量信道的物理层状态,如信号强度、相位、噪声等。这些信息可以用来分析环境中的信道特性,从而进行精确的定位、手势识别或人体感知。

关键功能

  • 精确感知:通过信号反射等特性,可以感知移动物体和环境变化。
  • 低功耗:利用ESP32的Wi-Fi模块实现,不需额外硬件支持。
  • 应用场景:室内定位、活动监测、安全监控等。

要通过 Wi-Fi CSI 判断环境中是否有人的简单算法可以基于以下步骤:

步骤:

  1. 采集CSI数据:ESP32定期发送和接收Wi-Fi信号,通过API获取实时的Wi-Fi CSI数据。

  2. 处理数据

    • 计算CSI数据的幅度或相位变化。
    • 设置阈值:在无人的情况下,CSI数据变化幅度较小,而当有人在场时,CSI数据会发生明显变化。
  3. 检测变化

    • 如果CSI数据的变化超出预设的阈值,则认为有人在场。
    • 否则,判断无人。

简单示例代码框架

void processCSIData(float* csi_data) {
    float csi_variation = calculateCSIChange(csi_data);
    if (csi_variation > threshold) {
        Serial.println("Person detected");
    } else {
        Serial.println("No person detected");
    }
}

 

以下是基于 Wi-Fi CSI 数据进行基本变化计算的示例代码,帮助判断环境中是否有人的活动:

1. CSI 数据幅度计算

Wi-Fi CSI 数据通常以复数形式表示,可以使用公式计算其幅度:

float calculateAmplitude(float real, float imag) {
    return sqrt(real * real + imag * imag);  // 计算幅度
}

2. CSI 数据变化计算

通过计算连续 CSI 数据之间的变化幅度,判断环境中是否有人的活动:

float calculateCSIChange(float* csi_data, int num_subcarriers) {
    float variation = 0;
    for (int i = 0; i < num_subcarriers - 1; i++) {
        float real_diff = csi_data[2 * i] - csi_data[2 * (i + 1)];
        float imag_diff = csi_data[2 * i + 1] - csi_data[2 * (i + 1) + 1];
        variation += sqrt(real_diff * real_diff + imag_diff * imag_diff);  // 计算相邻子载波的变化
    }
    return variation;
}

3. 判断是否有人活动

使用一个简单的阈值判断是否有人活动

void processCSIData(float* csi_data, int num_subcarriers) {
    float csi_variation = calculateCSIChange(csi_data, num_subcarriers);
    float threshold = 50.0;  // 阈值根据实验调整
    if (csi_variation > threshold) {
        Serial.println("Person detected");
    } else {
        Serial.println("No person detected");
    }
}

解释:

  • calculateAmplitude 用于计算 CSI 数据的幅度。
  • calculateCSIChange 计算CSI数据的变化量。
  • 通过设置合适的阈值,可以判断是否有人的活动。

你可以根据实验环境调整阈值和处理逻辑,以提高算法的准确性。

 

esp-csi/examples/esp-radar/console_test/README_cn.md at master · espressif/esp-csi · GitHub 

 

GitHub - zikunliu/ESP32_Sniffer_beacon_csi

ESP32模组

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值