单片机录波系统

1 开发目标

(1)基于TIM+ADC+DMA实现固定频率的电压连续采集

(2)基于esp8266+AT指令+tcp的波形数据分包传输

(3)模拟物联网架构,编写边设备的数据收集程序与边缘计算程序

(4)搭建mqtt broker,并完成qt端和linux-c端的主题订阅与发布

(5)Qt应用程序展示波形数据

2 系统设计

2.1 系统结构

单片机录波系统_第1张图片

2.2 模块划分

序号

程序名称

主要功能

1

Qt应用程序

可视化展示波形数据,下发实时采集指令

2

边缘计算程序

基于采集的实时波形进行边缘计算(最大值、最小值、平均值及数据单位转换),报文协议的整合与转换,将数据发布到Mqtt Broker

3

数据接收程序

汇总不同装置装置的多种采集数据

4

U5单片机

数据采集

2.3 通信接口

序号

接口名称

使用模块

1

MQTT协议

Qt应用程序、边缘计算程序

2

IPC消息队列格式

边缘计算程序、数据接收程序

3

自定义通信协议

数据接收程序、U5单片机

3 通信接口

3.1 MQTT协议

3.1.1 命令:装置上传装置ID指令

主题

cmd_deviceid

功能

让装置立马上传自己的deviceid

发布者

Qt应用程序

订阅者

边缘计算程序

示例

{

}

3.1.2 命令:装置采集波形指令

主题

cmd_wave

功能

立马采集一条波形

发布者

Qt应用程序

订阅者

边缘计算程序

示例

{

    "deviceid":"1111"

}

3.1.3 数据:装置上传装置ID

主题

data_deviceid

功能

获取在线装置列表

发布者

边缘计算程序

订阅者

Qt应用程序

示例

{

    "deviceid":"1111",

    "online-time":"2020-12-12 10:10:10"

}

3.1.4 数据:装置上传采集的波形数据

主题

data_wave

功能

传输波形数据。注意:波形数据固定传输1000个点

发布者

边缘计算程序

订阅者

Qt应用程序

示例

{

    "deviceid":"1111",

    "takeTime":"2020-12-12 10:10:10",

    "takeMs" : 123,

    "maxValue" : 100,

    "minValue" : 10,

    "avgValue" : 50,

    "dataLen" : 1000,

    "datas" : [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]

}

3.2 IPC消息队列格式

采集指令:msgtype=1 数据域1字节

波形数据:msgtype=2 数据域4000字节,1000个点,每个点unsigned int类型

3.3 自定义通信协议

  • 报文格式

  • 报文种类
  • 报文类型==1  采集波形指令
  • 报文类型==2  波形数据传输

4 部分模块设计

4.1 Qt应用程序

没什么好写的,贴两张效果图:

(1)波形列表,双击表格中的某一行以图形的方式展示具体的波形

单片机录波系统_第2张图片(2)波形图

4.2 边缘计算程序设计

单片机录波系统_第3张图片

5 上源码

[email protected]/录波系统

你可能感兴趣的:(单片机,linux编程,QT)