项目需要电脑与一个设备无线通讯,想做一个像虚拟串口那样的无线串口互连的设备,用两个ESP8266,一个AP,一个SP,不用提供wifi。
程序特点:1、服务端,客户端的串口,每次loop检测Serial.available();
2、服务端的server检测/update;
3、客户端的接收,在loop里,靠client.available()检测,
过程:
1、服务端建立热点,设置固定wifi热点名和密码;
2、服务端尝试连接;
3、客户端连接服务端的热点,并且在Loop里检测连接状态,断了就再连;
4、服务端串口接到数据,就用server.send()发出去;
5、客户端串口接到数据,就用client.print(httpRequest)发出去;
6、服务端tcp接到数据,解析出来server.arg("data");,就发给串口;
7、客户端tcp接到数据,读出来client.read(),再发给串口;
服务端:
#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
#include <ESP8266WebServer.h> // 使用WebServer库
const char *ssid = "taichi-maker"; // 这里定义将要建立的WiFi名称。此处以"taichi-maker"为示例
// 您可以将自己想要建立的WiFi名称填写入此处的双引号中
const char *password = "12345678"; // 这里定义将要建立的WiFi密码。此处以12345678为示例
// 您可以将自己想要使用的WiFi密码放入引号内
// 如果建立的WiFi不要密码,则在双引号内不要填入任何信息
//uint8_t data[2];
ESP8266WebServer server(80); // 建立网络服务器对象,该对象用于响应HTTP请求。监听端口(80)
IPAddress local_IP(192, 168, 4, 1); // 设置ESP8266-NodeMCU联网后的IP
IPAddress gateway(192, 168, 4, 1); // 设置网关IP(通常网关IP是WiFI路由IP)
IPAddress subnet(255, 255, 255, 0); // 设置子网掩码
IPAddress dns(192,168,4,1); // 设置局域网DNS的IP(通常局域网DNS的IP是WiFI路由IP)
// 要连的server ip
const char* host = "192.168.4.2"; // 即将连接服务器网址/IP
const int httpPort = 80; // 即将连接服务器端口
String rx_data;
//串口中断函数
void Serial_callback()
{
while (Serial.available())
{
rx_data+=char(Serial.read());
delay(5); //这里不能去掉,要给串口处理数据的时间
}
if(rx_data!="")
{
server.send(200, "text/plain", rx_data);
//Serial.print(rx_data);
rx_data="";
}
}
void setup() {
Serial.begin(9600); // 启动串口通讯
pinMode(LED_BUILTIN, OUTPUT);

该项目通过两个ESP8266模块建立无线串口通信,一个作为AP,一个作为SP。服务端建立WiFi热点,客户端连接并保持连接状态。数据通过串口接收并由HTTP服务器转发,实现双向通信。但遇到USB供电不足问题,需外接电源确保通讯正常。
最低0.47元/天 解锁文章
2万+





