Arduino串口数据可视化方法

系统:win10 64bits
Arduino IDE: 1.8.5
Arduino开发板:UNO

Arduino可以方便地操作传感器获得传感器数据,获取数据之后我们比较关心的是数据可视化Arduino自带有串口监视器和串口绘图器,我还找到了其他3种适合于arduino串口数据绘图的工具,这篇博客也当做个记录,分别介绍这4种绘图方法,传感器数据是上一篇博客介绍的K型热电偶采集的温度。
(1)IDE自带的串口绘图器
这里写图片描述
程序1


#include <MAX6675_Thermocouple.h>

#define SCK_PIN 3 // 模块上的SCK口连接到 pin3
#define CS_PIN  4 // 模块上的CS口连接到 pin4
#define SO_PIN  5 // 模块上的SO口连接到 pin5
// 不要忘了模块上的5v和GND要连接到arduino开发板

MAX6675_Thermocouple* thermocouple = NULL;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600); //设置串口波特率9600
  thermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);
}

// the loop function runs over and over again forever
void loop() {
  double celsius = thermocouple->readCelsius(); // 摄氏度

  Serial.println(celsius);  // println打印会自动添加'\r\n',可以在串口绘图器显示
  delay(500);// 延时500ms
}

程序执行之后打开即可,注意程序里面串口输出要使用Serial.println ,这个函数官方介绍如下
这里写图片描述

最后绘图器显示的绘图如下
这里写图片描述

下面的3个绘图工具均可在IDE上的工具栏选择【项目】-【加载库】-【管理库】,然后搜索安装得到
这里写图片描述
(2)Plotter
项目地址:https://github.com/devinaconley/arduino-plotter
所需额外绘图工具:Listener 软件在链接里面找,根据自己系统选择对应版本,注意,这个需要JRE环境,JRE下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
程序2


#include <MAX6675_Thermocouple.h>
#include "Plotter.h"
double x;
Plotter p;

#define SCK_PIN 3 // 模块上的SCK口连接到 pin3
#define CS_PIN  4 // 模块上的CS口连接到 pin4
#define SO_PIN  5 // 模块上的SO口连接到 pin5
// 不要忘了模块上的5v和GND要连接到arduino开发板

MAX6675_Thermocouple* thermocouple = NULL;

// the setup function runs once when you press reset or power the board
void setup() {
  p.Begin();  // 创建一个plotter
  p.AddTimeGraph( "Temperature of K-type thermalcouple", 100, "temperature", x ); // 添加时间图表
  // 不需要设置波特率
  thermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);
}

// the loop function runs over and over again forever
void loop() {
  double celsius = thermocouple->readCelsius(); // 摄氏度
  x = celsius;
  p.Plot();
//  Serial.println(celsius);  // println打印会自动添加'\r\n',可以在串口绘图器显示
  delay(500);// 延时500ms
}

打开listener,得到结果如下
这里写图片描述
使用这个绘图每隔一段数据就会刷新重新绘图,对这个不了解不知如何设置。

(3)FlexiPlot
项目地址:https://github.com/xcoder123/FlexiPlot_Arduino
所需额外绘图工具:https://github.com/xcoder123/FlexiPlot/releases

使用此绘图工具获取不到图像

(3)PlotPlus,兼容SimPlot
项目地址:https://github.com/rlogiacco/PlotPlus
所需额外绘图工具:SimPlot (推荐) , Sloeber(一个eclipse的插件)
程序


#include <MAX6675_Thermocouple.h>
#include <PlotPlus.h>

#define SCK_PIN 3 // 模块上的SCK口连接到 pin3
#define CS_PIN  4 // 模块上的CS口连接到 pin4
#define SO_PIN  5 // 模块上的SO口连接到 pin5
// 不要忘了模块上的5v和GND要连接到arduino开发板

MAX6675_Thermocouple* thermocouple = NULL;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600); //设置串口波特率9600
  thermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);
}

// the loop function runs over and over again forever
void loop() {
  double celsius = thermocouple->readCelsius(); // 摄氏度
//  double fahrenheit = thermocouple->readFahrenheit(); 
  plot(celsius);
//  Serial.println(celsius);  // println打印会自动添加'\r\n',可以在串口绘图器显示
  delay(500);// 延时500ms
}

打开simplot,设置串口和波特率,然后连接,结果如下
这里写图片描述

结论:
感觉另外的三种都不及IDE自带的,特别是FlexiPlot,连自带的例子运行之后再用提供的软件显示不了绘图,要使串口数据发送到电脑进行处理或者可视化,终极办法还是自己写个上位机(本科大三做过基于Qt+Qwt的上位机,获取stm32发送到电脑的数据并且显示/保存),现在已经没那么多时间玩电子类的东西了,只有放假的时候偶尔练练手,也不想将学过的知识就这样抛弃了,又不想去折腾51或者STM32,所以选择了arduino,发现arduino真的可以方便快捷构建自己想要的电路,而且网上还有丰富的库,常见传感器随便一搜就有,用它来做一些小东西非常方便。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页