NodeMCU ESP8266 基于Arduino IDE的串口使用详解(图文并茂)

2023-10-14 21:12

本文主要是介绍NodeMCU ESP8266 基于Arduino IDE的串口使用详解(图文并茂),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NodeMCU ESP8266 的UART使用

文章目录

  • NodeMCU ESP8266 的UART使用
  • 前言
  • 硬件连接
  • 串口使用
    • 日志打印
    • 读取数据
    • 常用接口
      • begin
      • print
      • println
  • 总结

前言

UART (Universal Asynchronous Receiver/Transmitter),串口通讯在嵌入式开发中至关重要,我们可以通过串口打印程序里的数据,也可以通过串口将数据发送到PC上并进行可视化的图形显示。

注意:相关的串口通讯的知识可以参考这篇文章
UART串口协议快速扫盲(图文并茂+超详细)

NodeMCU ESP8266开发板可以直接通过MicroUSB线和PC进行连接,在Arduino IDE内置的串口工具进行数据显示,下面我们进一步介绍。

硬件连接

基于 NodeMCU 的 ESP8266 有两个 UART 接口:UART0 和 UART1。

ESP8266通过UART接口的数据传输速度可以达到115200的40倍,即4.5Mbps。

默认情况下,对于 40MHz 振荡器,UART0 波特率为 115200。

可以根据应用的需要将其更改为用户定义的值。具体的引脚定义如下所示;
在这里插入图片描述

TXD(数据发送引脚)
该引脚用于串行传输数据。

RXD(数据接收引脚)
该引脚用于串行接收数据。

注: SD_DATA_1/RXD1引脚在内部用于 Flash 的 SPI 四路通信。

因此,我们只能使用 UART1 的 TXD1 引脚。

串口使用

日志打印

具体的示例代码如下所示;

int time_cnt = 0;void setup() {// put your setup code here, to run once:Serial.begin(9600);  
}void loop() {// put your main code here, to run repeatedly:time_cnt++;Serial.print(time_cnt);Serial.println(" :Hello World");delay(5000);
}

在这里插入图片描述

读取数据

int incomingByte = 0; // for incoming serial datavoid setup() {Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}void loop() {// reply only when you receive data:if (Serial.available() > 0) {// read the incoming byte:incomingByte = Serial.read();// say what you got:Serial.print("接收数据: 0x");Serial.println(incomingByte, HEX);}
}

最终执行结果如下图所示;
在这里插入图片描述

常用接口

begin

设置串行数据传输的数据速率(波特率)。

为了与串行监视器通信,请确保使用屏幕右下角菜单中列出的波特率之一。

但是,您可以指定其他速率 - 例如,通过引脚 0 和 1 与需要特定波特率的组件进行通信。

可选的第二个参数配置数据、奇偶校验和停止位。默认为 8 个数据位,无奇偶校验,1 个停止位。

语法

Serial.begin(speed)
Serial.begin(speed, config)

示例

void setup() {Serial.begin(9600); //设置波特率为9600
}void loop() {}

print

将数据作为可读性比较好的 ASCII码 文本打印到串口,这个函数打印的效果不带换行。

语法

Serial.print(val)
Serial.print(val, format)
  • val:需要打印的值
  • format:需要打印的数据类型
    • DEC:将ASCII打印为十进制数;
    • HEX:将ASCII打印为十六进制数;
    • OCT:将ASCII打印为八进制数;
    • BIN:将ASCII打印为二进制数;

下面详细介绍

示例

 char x = 15;Serial.print(x, DEC);    // 输出为 15Serial.print(x, HEX);    // 输出为 FSerial.print(x, OCT);    // 输出为 17Serial.println(x, BIN);  // 输出为 1111

在这里插入图片描述

println

将数据作为可读性比较好的 ASCII码 文本打印到串口,在每一行后跟回车符(ASCII码 13 或\r)和换行符(ASCII码 10 或\n”

在每次打印的内容后面自动追加\r\n,打印的内容会自动换行。

示例

读取DO端口的模拟值,即ADC数值(将模拟信号转化为数字信号,模数转换器),然后打印到串口,下面是示例代码;

/*Analog input reads an analog input on analog in 0, prints the value out.created 24 March 2006by Tom Igoe*/int analogValue = 0;    // variable to hold the analog valuevoid setup() {// open the serial port at 9600 bps:Serial.begin(9600);
}void loop() {// read the analog input on pin 0:analogValue = analogRead(0);// print it out in many formats:Serial.println(analogValue);       // print as an ASCII-encoded decimalSerial.println(analogValue, DEC);  // print as an ASCII-encoded decimalSerial.println(analogValue, HEX);  // print as an ASCII-encoded hexadecimalSerial.println(analogValue, OCT);  // print as an ASCII-encoded octalSerial.println(analogValue, BIN);  // print as an ASCII-encoded binary// delay 10 milliseconds before the next reading:delay(10);
}

总结

本文简单介绍了NodeMCU ESP8266 基于Arduino IDE的串口使用详解,以及Serial类的常用接口。

由于作者能力有限,文章中难免存在错误和纰漏,请大胆指正,如果对于文章中存在疑惑或者问题,欢迎在评论区进行留言。

如果文章帮到了你,请帮忙点赞,三连支持👍👍👍。

这篇关于NodeMCU ESP8266 基于Arduino IDE的串口使用详解(图文并茂)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/213199

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig