ESP8266配置为TCP客户端,连接电脑和手机(使用Arduino配置)

ops/2025/2/11 23:50:20/

一、简介

        基于 ESP8266 的 Arduino 代码,其主要功能是将 ESP8266 连接到指定的 Wi-Fi 网络,并与指定 IP 地址和端口号的服务器建立 TCP 连接。在连接成功后,实现了串口和网络数据的双向传输,也就是将从串口接收到的数据通过 Wi-Fi 发送给服务器,同时将从服务器接收到的数据通过串口输出。

二、代码

#include <ESP8266WiFi.h>const char* ssid = "WIFI名字";
const char* password = "WIFI密码";
const char* serverIP = "IP地址";
const int serverPort = 端口号自己设置即可  例如:8080;WiFiClient client;
void setup() {Serial.begin(115200);WiFi.begin(ssid, password);Serial.print("Connecting to ");Serial.println(ssid);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.print("Connecting to server at ");Serial.print(serverIP);Serial.print(":");Serial.println(serverPort);while (!client.connect(serverIP, serverPort)) {delay(100);Serial.print(".");}Serial.println("");Serial.println("Connected to server");
}
void loop() {// 检查连接状态,如果断开则尝试重新连接if (!client.connected()) {Serial.println("Connection lost, trying to reconnect...");while (!client.connect(serverIP, serverPort)) {delay(100);Serial.print(".");}Serial.println("");Serial.println("Reconnected to server");}// 串口数据→Wi-Fiif (Serial.available()) {client.write(Serial.read());}// Wi-Fi数据→串口if (client.available()) {Serial.write(client.read());}
}

三、手机连接

1.手机连接wifi

手机连上和8266相同的wifi即可

2.wifi地址查询

打开手机wifi查询IP地址我的IP如下图

3.修改代码

修改serverIP为你查询到的IP,serverPort自己起一个就行我用的是8080,然后编译上传即可。

上传完成如图所示

4.手机端配置

手机端APP,调试时我用的网络调试精灵

 点击右下角+号进行配置,主机就是刚才查询的IP地址,端口就是你自己设置的serverPort,点击保存然后打开。

 因为我的8266已经上电所以我刚打开就显示已经连接上了,然后我们使用串口助手发送1,2,3,5可以看到我们的手机已经接收到了

然后我们的手机发送helo,可以看到串口助手也成功接收到了,至此TCP通信建立完成。

 

四、电脑连接

1.电脑连接wifi

有网卡的连接wif没有的用宽带即可

2.电脑IP地址查询

按下win+R输入cmd进入命令行

输入ipconfig

按下回车,查找自己的IP地址 

3.修改代码

将代码中的serverIP改为自己查到的IP然后,其他需要修改的按自己的情况修改即可,然后编译下载,重新上电后完成实验。

4.电脑端配置

电脑的服务端我用的是NetAssist.exe,配置如下:

5.数据传输

出现online是此时表明已经监听到客户端了

 服务端发送Welcome to NetAssist可以看到客户端这边的XCOM就已经接收到了,如下图

当客户端发送1,2,3,5时服务端也可以接收到如下图

 

至此电脑端TCP连接建立已经完成了 


http://www.ppmy.cn/ops/157647.html

相关文章

基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)

酒店管理小程序目录 目录 基于微信小程序的酒店管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1) 用户信息管理 (2) 酒店管理员管理 (3) 房间信息管理 2、小程序序会员模块的实现 &#xff08;1&#xff09;系统首页 &#xff…

故障显示C++

为了实现一个系统&#xff0c;其中不同模块可以上报故障&#xff08;fault&#xff09;&#xff0c;并在一个界面上集中显示这些故障信息&#xff0c;我们可以设计一个简单的应用程序。以下是一个基本的实现思路和示例代码&#xff0c;使用C来模拟这一过程。 实现思路 故障模块…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…

后盾人JS -- 模块化开发

开发模块管理引擎 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…

【练习】图论

F. Friendly Group 图中选择一个点-1 边两端点都选择1 边一个端点选择-1 添加链接描述 #include<iostream> using namespace std; #include<vector> #include<cstring> const int N300010; int n,m; vector<int> G[N]; int temp1,temp2; bool vis[N…

MyBatis常见知识点

#{} 和 ${} 的区别是什么&#xff1f; 答&#xff1a; ${}是 Properties 文件中的变量占位符&#xff0c;它可以用于标签属性值和 sql 内部&#xff0c;属于原样文本替换&#xff0c;可以替换任意内容&#xff0c;比如${driver}会被原样替换为com.mysql.jdbc. Driver。 一个…

基于雷达和摄像头的无人机轨迹识别与激光照射控制研究

标题:基于雷达和摄像头的无人机轨迹识别与激光照射控制研究 内容:1.摘要 摘要&#xff1a;本文研究了基于雷达和摄像头的无人机轨迹识别与激光照射控制。通过对雷达和摄像头数据的融合处理&#xff0c;实现了对无人机轨迹的精确识别。同时&#xff0c;利用激光照射技术对无人机…

Android Studio:如何利用Application操作全局变量

目录 一、全局变量是什么 二、如何把输入的信息存储到全局变量 2.1 MainApplication类 2.2 XML文件 三、全局变量读取 四、修改manifest ​编辑 五、效果展示 一、全局变量是什么 全局变量是指在程序的整个生命周期内都可访问的变量&#xff0c;它的作用范围不限于某个…