• NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程(超详细)


    NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程


    前言

    嵌入式的开发过程中,我们经常会采集一些传感器的数据,通常希望将这些数据通过图形化的方式展现出来,因为微控制器的资源有限。

    常用的一种方法就是通过串口将数据发送到上位机,然后通过上位机软件将数据图形化显示出来。

    我们需要编写一个上位机软件来显示串口的数据,或者使用现成的软件进行对接显示,Arduino IDE中提供好了图形化显示的软件Serial Plotter,这里我们可以简单做一下实验。

    Serial Plotter

    Serial Plotter 是 Arduino IDE 中的一个工具。Arduino可以将读取的温度、湿度或任何类型的传感器数据,通过串口发送到PC,并通过Serial Plotter进行显示。

    Serial Plotter可以将教据可视化为波形,并且支持同时显示多个数据;

    由于Serial Plotter和 ESP8266 之间通过 USB 线进行数据交换,因此我们必须保证ESP8266 和 电脑之间通过USB线的连接是完好的。

    • 物理连接完好;
    • PC安装好相应的串口驱动;

    Serial Plotter主要一个XY轴的图形显示界面;具体如下所示;

    • X轴:代表时间;X轴一共有500个点,每个点之间的时间是两个连续的Serialprintin 函教调用之间的时间,这个时间通常等于loop()函数的时间;
    • Y轴:代表从 Arduino 接收的值。Y 轴会随着值的增加或减少而自动调整;

    测试

    前期准备

    • 确保电脑上安装了软件Arduino IDE,本文使用的版本是2.2.1
    • 准备一块NodeMCU ESO8266开发板,可以通过串口连接到电脑,这里需要保证安装了串口驱动;

    打开工具

    方法 1

    Arduino IDE的菜单栏上选择,Tools -> Serial Plotter

    方法 2

    确保开发板已经和电脑连接好,点击图标即可打开Serial Plotter

    测试代码

    下面的代码用于显示正弦和余弦函数的曲线,x1显示sin曲线,x2显示cos曲线;具体如下所示;

    float timeCnt = 0;
    void setup() {
      Serial.begin(9600); 
    }
    
    void loop() {
    
      timeCnt++;
      float t0 = 5;
      float x1 = 10*sin(timeCnt/t0);
      float x2 = 10*cos(timeCnt/t0);
      Serial.print("Sin:");
      Serial.println(x1);
      Serial.print(",");
      Serial.print("Cos:");
      Serial.println(x2);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    最终的效果如下所示;

    Serial Plotter可以自动识别 \r\n\n作为换行符;
    因此,请确保最后一个变量后面有一个换行符;

    我们可以使用Serial.print("\n")或者Serial.print("\r\n")在末尾引入换行符,另外我们可以用Serial.println()函数自动追加换行符;

    同时显示多个变量,我们可以使用\t(tab)或 (空格)作为分隔符;

    曲线的标题后需要加:Serial Plotter会自动识别出相应的曲线名称;

    总结

    本文简单介绍了Arduino IDE的工具Serial Plotter的使用,基于NodeMCU ESP8266开发板将串口数据发送到电脑上并进行图形化显示。

  • 相关阅读:
    给你 2 万条数据,怎么快速导入到 MySQL?
    云原生周报 | Kubernetes 1.25 重要更新;2022 国际开源节即将开启
    解决Jira导出csv最大限度是1000的问题
    AndroidBaseFrameMVVM 框架
    linux kernel内核调试方法(二)
    网络编程(一)
    计数问题(动态规划 + 数位dp )
    VVC 帧内预测 predIntraAng()函数 (getCoLocatedLumaPU没写)
    【MetaGPT】配置教程
    为什么服务器没必要当电脑用?
  • 原文地址:https://blog.csdn.net/u010632165/article/details/133856431