加速度传感¶
采样可以说是本项目最重要的功能之一。它允许我们收集和存储来自传感器的数据,以便后续分析和处理。由于Arduino性能非常有限,本项目采用一边采样一边存储的方式来实现数据采集。由于没有引入实时操作系统,存储的过程会对采样造成一定的影响,所以无法实现很高的采样频率,但是由于本项目的展示和教学性质,采样频率不需要很高。经过测试200Hz的采样频率完全可以实现,而且由于是一边采样一边存储,所以数据上限基本上等同于SD卡的容量。
-
采样开始时间和结束时间:这一部分是在MQTT命令回调时就已经完成。
-
calling
sensing_prepare()
:在采样状态预备状态时调用,打开SD卡文件并写入采样元数据。在这个函数中调用了一个load_log_number()
函数来加载当前日志编号,并在文件名中使用它。文件名格式为N001_001.txt
,其中N001
是节点ID,001
是日志编号。在SD卡中有个文件记录了当前日志编号,采样完成后会自动增加。 -
calling
sensing_sample_once()
:在采样状态中重复调用,读取传感器数据并写入SD卡文件。每次采样都会检查是否达到了设定的采样频率(sensing_rate_hz
),如果达到了,就读取传感器数据并写入文件。在主程序的loop中,当当前时间减去上次采样时间大于等于1000 / sensing_rate_hz
时,就进行一次采样。采样数据包括时间戳和加速度传感器的三个轴向数据(ax, ay, az),并将其写入SD卡文件。 -
calling
sensing_stop()
:在采样状态结束时调用,关闭SD卡文件并打印采样结果。这个函数会打印采样的总数,并将文件内容重新打开以便打印到串口。
Info
本项目中,由于串口输出速度很慢,会拖累采样和存储,所以在采样过程中,我们只做存储而不做串口输出。采样完成后可以重新打开文件并打印内容到串口。