• 117
•
本文阐述了基于Python Flask 的温度数据可视化方法,主要包括通过51单片机驱动DS18B20温度传感器通过串口通信向上位机发送温度数据,前端循环定时1s 向后端Flask web 框架发送ajax 请求获取json 数据,前端收到后端的响应数据通过ECharts 可视化库显示温度。
在数据科学飞速发展的今天,拥有丰富的工具包与活跃的开源社区Python 语言,在web 开发数据可视化等领域的的价值日渐增长。能够对数据进行行之有效的探索性数据分析,并使用便捷的工具实现美观的数据可视化至关重要。本文研究的是温度传感器的数据可视化,实现单片机与上位机串口通信,后端向前端发送数据,前端拿到数据进行处理,可视化能将
基于Python Flask的温度数据可视化
常州信息职业技术学院电子与工程学院 胡 钊
图1 程序设计流程图
图2 硬件原理图
• 118
•
数据以更加直观的方式展现出来,使数据更加客观、更具说服力。在各类报表和说明性文件中,用直观的图表展现数据,显得简洁、可靠。
1 开发环境
(1)操作系统:Window 10(2)Python 版本:Python 3.7.4(3)开发环境:Pycharm keil (4)Python 第三方库:Flask serial (5)前端:jquery 库,EChars 库
2 业务流程
在编写程序时,需要了解程序执行流程,如图1所示,在程序开始执行时,前端程序会设置一个定时器每个1s 中向后端发送一个ajax 请求,然后后端Flask 收到请求后就会通过串口从单片机获取温度,再把数据转换成json 格式发送给前端,前端收到数据通过处理追加到ECharts 数组中,从而就能够实现需求。
3 库简介
3.1 ECharts
ECharts ,缩写来自Enterprise Charts ,商业级数据图表,是百度的一个开源的数据可视化工具,一个纯Javascript 的图表库,能够在PC 端和移动设备上流畅运行,兼容当前绝大部分浏览器(IE6/7/8/9/10/11,chrome ,firefox ,Safari 等),底层依赖轻量级的Canvas 库ZRender ,ECharts 提供直观,生动,可交互,可高度个性化定制的数据可视化图表。3.2 Flask
Flask 是一个使用Python 编写的轻量级Web 应用框架其WSGI 工具箱采用Werkzeug ,模板引擎则使用Jinja2,Flask 自带开发用服务器和debugger 集成单元测试(uint testing)和RESTful 调度请求。3.3 serial
serial 是Python 的第三方库,这个库是一个类提供了非常多的方法,使用较少代码就可以实现从PC 的串口接收数据。在本设计中就是使用serial 来获取下位机传来的温度数据。
4 硬件设计
本设计采用STC89C52单片机驱动温度传感器DS18B20实时获取温度,通过串口通信把数据发送给上位机,如图2所示。
5 软件设计
5.1 串口通信
在获取温度数据之后,需要向上位机通过串口通信发送数据,
程序中会设置tab[5]={1,2,’.’,3,4}这个数组索引0,1,3,4会保存温度数据,索引2
是小数点,具体代码如下所示:
5.2 接收单片机数据并向前端发送数据
接收数据用的是python 的第三方库serial 需要pip install serial 进行安装才能使用,后端flask 框架需导入render_template 用来引入html 模板,还需导入jsonify 在使用Flask 写一个接口时候需要给客户端返回json 数据,在Flask 中可以直接使用jsonify 生成一个json 的响
应返回前端,具体代码如下:
5.3 前端数据可视化图表实现
向后端发送数据需引入jquery ,jquery 是一个快速、简洁的
• 119
•
JavaScript 框架。引入jquery 后就能使用$.ajax()这个方法就能发送ajax 请求了,ajax 请求是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新,后端收到请求后就会返回json ,在拿到后端的json 数据后就可以把数据插入到EChart 数组里面。这样温度数据就可以动态的更新了,ajax
请求代码如下:
5.4 温度数据可视化图
浏览器访问网址127.0.0.1:5000所加载的页面,通过Echarts 实现数据到图形的映射,每一秒钟会动态更新数据。具体效果如图3所示。python怎么读取串口数据
结论:本设计利用Python 和单片机实现的实时温度采集,通过后端数据和前端页面数据交互实现温度数据可视化。可以很直观的观察数据值,因为数据是网页端显示的,所以有很好的跨平台性,在不同的客户端都能很方便的观察温度状态。在此基础上还可以扩展一些空气湿度传感器,光敏电阻传感器等等。可以实际运用到一些工厂,机房等进行环境监测。
本文受2017年江苏省职业院校高水平骨干专业(计算机应用技术)建设项目资助(项目编号:SJG201717131)。
作者简介:胡钊(1999—),男,安徽六安人,大学专科,现就读于常州信息职业技术学院电子工程学院19级计算机应用技术专业,研究方向:电子设计与开发。
图3 温度数据可视化图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论