是不是觉得学了前面的python基础和进阶后没事干,那么来尝试下这个吧!
本文以极简的叙述来构建一个最基本最核心的传感网数据采集与应用的开发模型
实现效果:以龙芯1B作为数据采集节点的控制板,采集所连接的传感器的数据,将采集后的数据进行打包,通过自构建的局域网络发送给2K1000控制板进行处理与应用。
说起来简单,可是做起来还是会优点费事的,接下来,我将分别描述该做些什么。(迫于时间关系,代码我就先不写了哈,大家自行写就行。)
如果觉得下面的流程看的很迷糊,那么可以优先实现下面这个最基础基础基础基础的开发模型。
- 1B和2K1000都安装上zigbee设备(我这现成的)
- 1B写个串口4发送函数,发送字符串“hello bro!I am 1B ,Are you 2K?”(开玩笑哈)
- 2K1000写个串口接收函数,接收1B发来的字符串,并打印出来。
欢呼吧,你成功了,经验+1,等级level up !,自信心+1,成就感+1.
请离开新手村,向往下面的副本,建议冒险者3人配合组队挑战。
副本1.传感器数据采集
在1B上,连接传感器模块,根据在培训时所学知识,尝试将温湿度的数据采集到并打印出来。这里主要尝试使用串口4
如果忘记了如何在1B上采集传感器数据,请阅读下面的内容。
如果忘记了如何在1B上使用串口,请阅读下面的内容。
副本2.数据整理与打包
刚刚采集到的数据还是光秃秃的,如果离开这个设备,我们对这个数据就知之甚少,所以:
- 首先,我们需要判断数据是否有效,数据类型是否正确。如果数据不符合要求,我们需要进行错误处理或者忽略该数据。对于有效的数据,我们需要给它们打上标记,例如加入采集设备的MAC地址、时间戳、分类标签和校验码等,C语言开发的话可以考虑使用结构体来暂时存储这些标记。打上这些标记可以方便我们在数据传输过程中进行识别和验证,确保数据的完整性和正确性。
- 然后,我们将打好标记的数据进行打包,以便在网络上传输。打包的过程包括将数据头部添加采集设备的MAC地址、时间戳、分类标签和校验码等,并将其组装成json格式等适合网络传输的字符串进行存储和传输
点击下面了解更多:
json格式串的基础入门相关知识副本3.局域网络构建
要想发送数据,只有通过有线或者无线方式,由于传感器网络的特性,使用无线局域网是一种较为理想的选择。主要的是要理解组网与入网,数据的在网中传输的基本实现的流程。
这个想要实现通信的网络,可以由很多组网设备完成,基本理论类似,学会一项有利于学会其他项。
我这里有已经开发现成的zigbee组网的软硬件,这一节可以直接拿来用。对于无线局域网的构建,这里我们使用 Zigbee 终端设备和 Zigbee 协调器设备构建一个局域网。
主要就是以下:
- 1B通过串口通信发送上一步的数据格式串给Zigbee终端设备。(1B↔uart↔Zigbee终端)
- Zigbee终端设备将会通过网络将数据发送至Zigbee协调器设备。(Zigbee终端↔Zigbee网络↔Zigbee协调器)
- Zigbee协调器通过串口通信发送刚从终端接收的数据格式串给2K1000主控板
具体来说,我们可以通过串口通信将打好标记的数据格式串发送给 Zigbee 终端设备。Zigbee 终端设备将会通过网络将数据发送至 Zigbee 协调器设备。最终,Zigbee 协调器通过串口通信将数据发送给 2K1000 主控板。通过这样的局域网构建方式,我们可以实现传感器数据的远程传输。
副本4.接收数据、拆包处理和数据分析
当 2K1000 主控板从 Zigbee 协调器收到数据后,需要对数据进行拆解,并进行分类存储,等待下一步写入数据库。数据拆解的过程是将之前打包好的数据进行解包,得到原始数据。
在解包的过程中,我们需要解析数据头部,提取出采集设备的 MAC 地址、时间戳、分类标签和校验码等信息。然后,将数据体解码,获得传感器采集到的数据值。解包后的数据需要按照分类进行存储,以便进行下一步的分析和展示。
具体来说,我们可以将数据分为两类:实时数据和历史数据。
实时数据是指当前时间段内采集到的数据,我们可以将其存储在内存中,并实时更新显示在数据展示页面上。在存储实时数据时,需要注意数据的实时性和可靠性,保证数据的准确性和稳定性。
历史数据是指过去一段时间内采集到的数据,我们可以将其存储在数据库中。在存储历史数据时,需要注意数据的存储方式和存储周期。对于不同的数据类型,可以采用不同的存储方式,比如使用关系型数据库、时间序列数据库或者文本文件等。在存储周期方面,可以根据业务需求和存储空间的限制进行设置。
因此,在数据处理与分析阶段,我们需要进行以下工作:
- 解析采集到的数据包,获取MAC地址、分类、时间戳和校验码等信息;
- 将实时数据存储在内存中,并实时更新展示页面;
- 将历史数据存储在数据库中,采用合适的存储方式和存储周期;
- 进行数据分析和处理,提取有价值的信息和知识。
副本5.数据库存储
在第4节中,我们已经成功拆解了采集到的数据,并对其进行了分类存储。现在我们需要将这些数据存储到数据库中以供后续的分析和应用。我们选择使用Python的sqlite3数据库进行存储。以下是具体实现步骤:
- 导入sqlite3库
- 连接数据库
- 创建数据表
- 插入数据
在这一步中,我们可以定义不同的数据表来存储不同种类的数据,也可以对数据进行一定的处理再存储。
副本6.页面展示可视化数据
在第5节中,我们已经将采集到的数据存储到数据库中。现在我们需要将这些数据以可视化的形式呈现出来,方便用户进行观察和分析。
有两种方案可以实现页面展示可视化数据:
- 用C语言编写GTK并交叉编译后在2K1000上运行数据显示页面,这种方案需要具备较高的技术能力,但是可以实现本地化展示和处理数据。
- 用Python Web编写一个本地页面用来可视化显示数据,可结合echarts的图例库。这种方案相对较简单,可以使用Python的Flask或Django等Web框架来实现。在页面上,我们可以使用各种图表库(如echarts、matplotlib等)来展示数据,并提供一些交互式的功能(如筛选、排序等)来方便用户进行数据的分析和应用。