数据采集--实现串口数据的上传
写在最前面
华清远见教育集团
15年专注高端IT培训
做良心教育,做专业教育,做受人尊敬的职业教育创客学院官网:http://www.makeru.com.cn/
华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb
华清远见创客学院物联网课程链接:http://www.makeru.com.cn/iot
正文
底层实现对数据的采集、分类、打包、发送,同时还要可以接收并解析上位机传递下来的命令。这意味不是仅仅采集到数据就OK了的,还要把数据表述成上位机想要的格式。这里使用STM32F407的芯片实现的程序,由于原理上是一样的,所以不论用什么芯片来设计都不影响。还有就是由于笔者能力和时间比较仓促的缘故,还不能实现对多个数据源的采集。以后有机会的话可以多多学做下程序移植。
本文的重点从程序上分析,分析整个程序对数据采集-上报过程中的设计思想。
硬件资源
- LED灯 DS0(PF9) DS1(PF10)
- 定时器3(TIM3),配置为10ms中断一次,实现对不同时间段的标记
- 串口1 PA9(TX) PA10(RX) 用于输出程序运行时的提示信息
- 串口2 PA2(TX) PA3(RX) 用于完成与上位机的交互
- 按键 KEY0 PE4 KEY1 PE3 KEY2 P32 WK_UP PA0 作为输入设备,直接控制底层硬件(还没有实现控制环)
- 温度湿度传感器 DHT11(PG9) 作为输入设备,采集数据上传
- 光敏传感器 LSENS(PF7 - ADC3) 作为输入设备,采集数据上传
- 六轴姿态传感器 MPU6050(通过IIC读取) 作为输入设备,采集x-y-z轴陀螺仪(姿态角)原始数据上传
对上报数据的格式进行构造
参考这一篇的介绍:https://mp.csdn.net/postedit/84898279
数据头+数据类型+仓库号+温度+湿度+光度
typedef struct storage_goods_info
{unsigned char goods_type; // Goods type for example: APPLE, BANANA, PEAR, ...unsigned int goods_count; // Number of goods of each type.
} __attribute__((packed)) GOODS;typedef struct storage_info
{char index[2];unsigned char storage_status; // Storage No.unsigned char led_status; // Device status.unsigned char buzzer_status; // Device status.unsigned char key_status; // Device status.float temperature; // The current temperature of curtain reposity.float temperatureMIN; // The lowest limit to temperature for curtain reposity.float temperatureMAX; // The highest limit to temperature for curtain reposity.float humidity; // The current humidity of curtain reposity.float humidityMIN; // The lowest limit to humidity for curtain reposity.float humidityMAX; // The highest limit to humidity for curtain reposity.float illumination; // The strength of lightnss.float illuminationMIN; // The lowest limit to strength of lightnss for curtain reposity.float illuminationMAX; // The highest limit to strength of lightnss for curtain reposity.struct storage_goods_info goods_info[GOODS_NUM]; // Goods info for all types of goods.
} __attribute__((packed)) REPO_ENV;
主程序思路
在main中进行轮询,当标记变量被触发的时候,开始对传感器进行数据采集。通过定时器计时触发标记符来管理这个过程。
数据采集到变量
这里利用的第三方库函数来实现采集,分别采集的是温度湿度值和光强度,数据通过传感器被直接采集到相关变量上。
变量中的数据封装到结构体
按照预先定义的数据格式,将数据打包成一个数据包。
结构体中的数据串口发送
定时器1s触发一次To1SFlag标记,主程序的循环中实时判断这个标记。每隔1s上报一次,这里通过串口来实现,将结构体变量中的信息发送出去
最后通过串口助手捕获数据包
然后我们就可以在串口助手,查看程序上报的数据流了
数据采集--实现串口数据的上传相关推荐
- 利用串口网络助手上传数据、图片到OneNet平台以及获取数据(HTTP)
利用串口网络助手上传数据.图片到OneNet平台以及获取数据(HTTP) 使用网络助手连接OneNet服务器 HTTP上传数据至OneNet 获取数据 上传图片至OneNet 使用网络助手连接OneN ...
- 硬件采集数据怎么上传服务器,如何使用4G蓝牙网关进行数据采集和数据上传
原标题:如何使用4G蓝牙网关进行数据采集和数据上传 从技术效果上看,WiFi拥有宽带高.传输速度快等优点主要用于电脑.智能手机等的通信.蓝牙通信技术拥有功耗低,传输速率快等优点,是目前适用于数据采集和 ...
- 工业物联网网关可以采集哪些RS485传感器数据并上传到MQTT云平台?
RS485是一种串行数据通信协议,具备结构简单.成本低廉.易于安装调试等特点和较好的抗干扰能力,因此成为各类型传感器的主流接口,是实现远程监控的首选通讯方式. 工业领域遍布各种各样的传感器,在工业物联 ...
- 实时传输文件到服务器,如何将数据实时上传到云服务器
如何将数据实时上传到云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 华 ...
- 怎么把数据文件上传云服务器,如何将数据上传到云服务器上
如何将数据上传到云服务器上 内容精选 换一换 您可以通过导出SQL语句的方式将数据库备份到弹性云服务器上.弹性云服务器不限制存放哪些数据,但是数据必须符合国家法律法规.您可以在弹性云服务器上存放数据库 ...
- 飞翔的红蜻蜓(浙理体育)——生成跑步数据并上传
目录 前言 一.抓包 二.分析数据 1.解码请求主体 2.分析数据 三.生成数据 1.时间数据 2.跑步数据 3.打包封装 四.上传数据 总结 前言 基本思路:抓包获取http包,分析数据格式,生成数 ...
- java问卷导入excel,将Excel数据直接上传到问卷星
一.什么样的数据可以上传 1.如果您已经有了一批报名者的数据,需要使用到问卷星的签到功能.可以将整理好的报名者数据,上传到系统中. 2.如果您有一批数据需要针对个人公开,可以先将数据上传到问卷星,再设 ...
- 富芮坤FR801xH蓝牙协议栈启动流程和notify实现温度数据主动上传
文章目录 一.蓝牙协议栈启动流程 1.1 初始化代码 1.2 初始化流程 1.3 回调函数里的初始化 二.notify实现 2.1 notify介绍 2.2 notify实现 2.3.1 定义数据 2 ...
- Word数据批量上传
Word数据批量上传 这里我们实现把大量的数据从Excel中移动显示在网页上,实现一个数据批量上传. 页面这里我们这里是一个点击事件,触发文件选择页面点击事件,进入选择页面,选择文件就触发input标 ...
最新文章
- C语言的链表—完整代码
- 【网址收藏】linux namespace和cgroup
- 同一个硬盘装多个linux系统,在一个硬盘上安装两个Linux操作系统方法
- 用VisualStudio2010学习WCF服务编程总结(1)操作重载
- HDU - 4300 Clairewd’s message(扩展KMP)
- 五一好礼70份免费送:示波器、开发板、焊台等!
- STM32 MDK编译后生成的 .map文件深入分析
- 深度学习之图像识别基础篇——神经元与感知机
- RocketMQ Message hasn‘t been sent. Caused by No route info of this topic, Pr
- try catch finally的理解
- 史上最全面的深度学习硬件指南
- Java实现文件批量重命名
- LInux终端中Ctrl+S卡死
- ps钢笔工具的一些快捷键操作(小白请进)
- 鼠标右键打开命令行cmd(管理员身份)
- 一文读懂量子计算的原理、分类与发展
- arduino中的serial .available()和serial.read()是区别
- v-if 和 v-show的区别是什么? 什么时候使用v-if更好? 什么时候用v-show更好?
- Django7-4.模板系统常用知识点(4)
- HashMap 是如何工作的?图文详解,一起来看看!