ESP8266-Arduino网络编程实例-远程串口(模拟 Web Serial)

远程串口(模拟 Web Serial)

本文将演示如何实现一个简单的Web Serial远程串口。Web Serial在没有硬件串口的情况时,使设备调试变得非常方便。ESP8266 托管一个 Web 服务器,该服务器提供一个页面以可视化消息,就像使用常规串行监视器一样。 Web Serial 网页还允许将数据从网页发送到ESP8266设备。

Web Serial有如下特性:

  • 适用于 WebSocket;
  • 实时记录;
  • 可以在浏览器上打开任意数量的串口监视器;

1、硬件准备

  • ESP8266 NodeMCU开发板一块
  • 数据线一条

2、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

3、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WebSerial.h>

#define LED 2

AsyncWebServer server(80);

const char\* ssid = "\*\*\*\*";
const char\* ssid_pwd = "\*\*\*\*";

void recvMsg(uint8\_t \*data, size\_t len){
WebSerial.println("Received Data...");
String d = "";
for(int i=0; i < len; i++){
d += char(data[i]);
}
WebSerial.println(d);
if (d == "ON"){
digitalWrite(LED, LOW);
}
if (d=="OFF"){
digitalWrite(LED, HIGH);
}
}

void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, ssid_pwd);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.println("IP Address: ");
Serial.println(WiFi.localIP());

WebSerial.begin(&server);
WebSerial.msgCallback(recvMsg);
server.begin();
}

void loop() {
WebSerial.println("Hello!");
delay(2000);
}

WebSerial库常用的两个函数:

  • print:打印数据
  • println:打印数据及新行

在WebSerial启动后,在浏览器地址栏中输入:

ESP8266的IP地址/webserial

比如,ESP8266的地址为:192.168.0.120,则可以通过http://192.168.0.120/webserial来访问Web Serial服务。运行结果如下:

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/127405921