ESP-CSI:使用ESP32进行CSI(信道状态信息)采集

Github 项目链接:ESP-CSI
console_test

前言

在开始使用项目之前,请确保所有准备工作全部完成,包括熟悉代码逻辑,目录结构,烧录流程等

esp-idf 环境安装请看:ESP-IDF安装及使用

正文

  • Git下来或者下载代码,确保完整

  • 下载完成后,打开项目目录,进入examples\esp-radar\console_test,用vscode打开console_test

  • console_test目录中加入.vscode文件夹,配置c_cpp_properties.json文件

  • 打开项目,配置串口和模块信息

  • 按照官方示例的操作命令,在终端中进行操作

  • 确保烧录的端口相同,并烧录到芯片中

    • 官方的烧录方式是idf.py flash -b 921600 -p /dev/ttyUSB0 monitor ,/dev/ttyUSB0是Linux下的端口,Windows下格式为idf.py flash -b 921600 -p COMX monitor,X为端口号,921600是波特率,按照这个波特率可能后面无法通信(idf SDK Configuration Editor中搜索baud rate,可以修改波特率),建议直接使用idf自带的烧录选项烧录!
      配置波特率
  • 安装python插件,配置环境

  • ESP-IDF Terminal中终端中打开py脚本,确保脚本命令中的端口和芯片连接的端口相同

    • 注意波特率,可以在python代码中修改,如下图(我的ESP32 默认是115200,官方代码给的波特率为200000,烧录后串口显示为乱码,在代码和menuconfig中进行了修改)
      python修改波特率

    • 注意区分powershellESP-IDF Terminal两个终端,idf.py命令都要在 IDF 终端中使用!

  • 连接wifi,查看波形,测试数据

  • 具体步骤请阅读官方教程

py脚本运行ESP32 CSI Tool
在这里插入图片描述
ESP32 采集到的CSI数据
在这里插入图片描述
保存到的数据就可以进行其他的处理了,比如训练模型,深度学习等。

可能遇到的一些问题

  • 检测到#include错误
    • 一般为.vscode下的配置文件问题,需要配置正确的gcc编译器
  • 终端输入idf.py flash -b 921600 -p /dev/ttyUSB0 monitor报错
    • 注意区分powershellESP-IDF Terminal两个终端
    • 注意端口是否占用,ESP-IDF Terminal串口监视器可能会占用端口
    • 注意端口选择是否正确,Windows下是COMX
  • 运行esp_csi_tool.py图形化界面后,连接wifi无反应
    • 检查烧录时波特率是否正确,界面中的操作基本都是以串口读写的方式实现
      连接WiFi
### ESP32采集和处理CSI数据的方法 #### 工具与环境准备 为了在ESP32上成功采集并处理CSI数据,需准备好特定的工具和设置好开发环境。这包括但不限于ESP32开发板(如ESP32-WROOM-32或ESP32-WROVER)、安装好的ESP-IDF环境以及可用作信号收发端的WiFi路由器[^3]。 #### 安装ESP-CSI库 借助ESP-CSI这一专门设计给ESP32/ESP32-S2平台使用的库来简化CSI数据的获取过程。该库充分利用了上述芯片内置的支持能力,使得开发者能够轻松获得关于无线信道特性的重要参数——CSI信息,从而为进一步的研究工作打下了坚实的基础[^2]。 #### 编程实例:基于Python脚本调用ESP32 CSI Tool 下面给出了一段简单的Python代码片段,展示了怎样通过`esp_csi_tool.py`这个图形化界面工具来进行CSI数据收集的工作流程: ```python import esp_csi_tool as csi def main(): try: # 初始化设备连接 device = csi.Device(port='COM3', baudrate=115200) # 连接到指定SSID的Wi-Fi网络 wifi_ssid = 'your_wifi_ssid' wifi_password = 'your_wifi_password' device.connect_to_wifi(wifi_ssid, wifi_password) # 开始记录CSI数据流至本地文件 output_file_path = './csi_data.csv' with open(output_file_path, mode='w') as file: while True: sample = device.get_next_sample() if not sample: continue timestamp, channel_info = sample['timestamp'], sample['channel'] line = f"{timestamp},{','.join(map(str, channel_info))}\n" file.write(line) except KeyboardInterrupt: print('Data collection stopped by user.') if __name__ == '__main__': main() ``` 此段代码实现了如下功能: - 建立与ESP32模块之间的稳定通讯链路; - 尝试接入预设名称及密码保护下的Wi-Fi热点; - 循环读取来自ESP32所感知到的新鲜CSI样本,并将其序列化成CSV格式存储于外部介质之上; 需要注意的是,在实际部署过程中可能还会碰到诸如编译器路径配置不当或是串口号冲突等问题,这些问题通常可以通过调整VSCode内的`.vscode`目录下相应JSON文件的内容得以解决,同时也建议确认正在使用的命令行工具是否正确指向到了ESP-IDF自带的那个版本而非系统默认提供的其他解释器[^4]。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隼尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值