基于Ubuntu14.04和Intel 5300 Tools的WiFi感知中CSI信号的采集过程
1、基础知识
WiFi感知与CSI
WiFi感知是一种利用无线电波在空间中传播时受到环境影响而产生变化的特性,来实现对周围环境或物体状态的感知或识别的技术。WiFi感知有很多应用场景,例如人体姿态识别、行为识别、呼吸监测、室内定位、穿墙探测等。
为了实现WiFi感知,我们需要获取无线电波在空间中传播时所携带的信息。这些信息可以从不同层次上获取,例如物理层、链路层或网络层。其中,物理层上最重要且最丰富的信息就是信道状态信息(Channel State Information, CSI)。
CSI是指无线电波在发送端发射后,在经过多径衰落、反射、折射等效应后,在接收端接收到时所呈现出来的信道特征。CSI可以用复数矩阵来表示,每个元素代表一个子载波上信号的幅度和相位。不同子载波上信号受到不同程度的衰减或延迟,因此可以反映出不同频率下信道特征。
由于CSI可以直接反映出物理层上无线电波在空间中传播时所受到环境影响而产生变化的特性,因此它是实现WiFi感知最重要且最有效的信息源。
-
WiFi感知是利用WiFi信号的信道状态信息(CSI)来检测和识别环境中的人体运动或活动的技术,它具有低成本、隐私保护、无需安装额外设备等优点。
-
CSI是反映无线信号在多径传播环境中经历的衰减、相位变化和多普勒频移等特征的数据,它可以从WiFi设备中提取出来,用于分析信号与人体运动之间的关系。
-
为了采集CSI信号,需要使用特定的硬件和软件平台。其中一种常用的平台是Intel 5300网卡和Linux 802.11n CSI tool软件包,它们可以在Ubuntu14.04系统上安装和配置。
-
CSI信号的采集过程大致如下:
-
在发射端,使用一个普通的WiFi路由器作为信号源,设置好SSID、频段、带宽等参数,并将其放置在一个固定位置。
-
在接收端,使用一台安装了Intel 5300网卡和Linux 802.11n CSI tool软件包的电脑作为数据收集器,并将其连接到一个外部天线阵列。
-
在电脑上运行Linux 802.11n CSI tool软件包中提供的脚本或程序,设置好接收模式、日志文件名等参数,并开始监听发射端发出的WiFi信号。
-
在实验场景中进行人体运动或活动,并记录下对应的标签或描述。
-
在电脑上停止监听并保存日志文件,该文件包含了每个子载波上每个天线对之间每个数据包接收时刻所测量到的CSI值。
-
对日志文件进行预处理和分析,提取出有用的特征或模式,并应用到不同的WiFi感知任务中。
-
2、具体操作
为了收集CSI信号,我们使用Intel 5300网卡作为接收端,并使用Linux 802.11n CSI tool作为软件工具。
Linux 802.11n CSI tool是一个开源项目,它修改了Intel 5300网卡驱动程序,在保留原有功能基础上增加了获取并输出CSI数据包功能,并提供了一系列工具来处理这些数据包。
硬件设备
本文使用以下硬件设备:
-
发送端:普通路由器(型号待补充),2.4GHz天线2根
-
接收端:普通台式电脑(Lenovo 搭配Intel5300 网卡),Ubuntu 14.04 LTS
Intel 5300无线网卡的具体情况如下:
- 它是一种支持IEEE 802.11a/b/g/Draft-N1标准的无线网卡,可以在2.4 GHz和5.0 GHz频段下工作。
- 它有三个接收天线,可以提供更好的信号质量和覆盖范围。
- 它可以获得30个子载波信息,用于测量CSI数据。
其安装过程
搭建WiFi感知环境-基于Ubuntu 14.04.3+Intel 5300 Tools+matlab2016b安装
所搭建的WiFi数据采集平台概括:
-
Ubuntu14.04系统
-
小米(MI)RedMi AX6S路由器
-
插有Intel 5300无线网卡的PC一台
-
PHILIPS显示器一台
系统密码:123
开机后需要初始化:(实际使用的时候直接打开终端使用)
# 初始化
restart-my-wifi
# 运行之后wifi会重新连接,等待连接就好
# 完成初始化之后,打开一个新终端输入以下指令:
# 换了路由器后ping的这个ip,这个的目的是一直想向路由器发请求,然后路由器会发数据包给PC,从而获取CSI
ping 192.168.31.1 -i 0.2
# 这个是路由器的ip,可以调用以下命令查看
ifconfig -a # 获取ip地址,wlan0即为上述ip
# 采集
get-csi csi1.dat
'csi1.dat'是文件名,这个按需要命名就好,如果按照上述方法,qi
具体操作方式为:
gedit .bash_aliases
# 在打开的文件里填入,其名字可以修改,我的指令为'restart-my-wifi'和'get-csi'
alias restart-my-wifi='sudo modprobe -r iwlwifi mac80211;sudo modprobe iwlwifi connector_log=0x1;sudo killall wpa_supplicant'
alias get-csi='sudo linux-80211n-csitool-supplementary/netlink/log_to_file'
# 保存文件后重新配置你的bashrc
. ~/.bashrc
# 并检查您的新别名是否已加载
alias
然后直接调用指令就行,如