esp8266,使用python分别建立客户端连接并实现数据互传(透传)

我没有使用网络调试助手直接连接esp8266,因为我的网络调试助手在连接的时候出现了错误,上网查还是什么虚拟机的事儿,还需要更改电脑的相关网络配置,太麻烦,本来学历一点儿python,正好使用python建立和esp8266的连接!

esp8266通过串口连接到电脑上,打开串口调试助手的这个界面:
在这里插入图片描述

……………………………………………………………………………………………………

1、把esp8266作为服务器端

需要向esp8266发送如下这些指令:

AT+CWMODE_CUR=1

设置模块为sta模式,即作为设备去连接别人的WiFi热点;

AT+CWJAP_DEF="vivo Y66","11111111"

连接我自己的手机WiFi,第一个是WiFi名字,第二个是WiFi密码;

AT+CIPMUX=1

设置成服务器可以多连模式;

AT+CIPSERVER=1,8266

设置端口的端口号,可以自己定义;

AT+CIPSTA_CUR?

查询当前8266的IP地址,得到第一个数据ip后面的就是TCP服务器的IP地址;

把命令全都输入到多条发送的栏框内,如图所示:
在这里插入图片描述

现在从头到尾一条条发送吧,下面是我得到的结果:
在这里插入图片描述

设置成功。

接下来就是写python的客户端,源代码如下:

#!/usr/bin/python3.7
# coding=utf-8
#客户端与上一个没有任何改变
from socket import *
import threading
address="192.168.43.10"   #8266的服务器的ip地址
port=8266           #8266的服务器的端口号
buffsize=1024        #接收数据的缓存大小
s=socket(AF_INET, SOCK_STREAM)
s.connect((address,port))

def fun():
    while True:
        recvdata=s.recv(buffsize).decode('utf-8')
        print("\n接收的数据是:"+recvdata)

t = threading.Thread(target=fun)  # t为新创建的线程,专门用来接收从服务器发送过来的数据
t.start()

while True:
    senddata=input('\n想要发送的数据:')
    if senddata=='exit':
        break
    s.send(senddata.encode())
    #recvdata=s.recv(buffsize).decode('utf-8')
    #print(recvdata)
s.close()

运行后在串口调试助手里出现:0,CONNECT 这句话就是连接成功了,0代表了设备的序号,表示0号设备已经连接。
在这里插入图片描述
在这里插入图片描述
接收成功!

在发送的时候需要设置数据透传:
在串口助手里先输入:

AT+CIPSEND=0,6

表示要发送数据,等于号后面第一个值(这里是0)是客户端的序号,第二个值是你要发送的字母或者数字的个数,比如这里我想发送“hahaha”,所以就是6;

hahaha

当出现 ok 和 > , 就可以发送hahaha了。

输入完成结果:
在这里插入图片描述

在这里插入图片描述
发送成功!
………………………………………………………………………………………………

233333333

### ESP8266 WiFi 模块实现串口与APP开发 #### 配置ESP8266模块进行数据设置 为了使ESP8266模块能够执行数据操作,需先配置其工作模式。这通常涉及通过发送特定的AT命令来调整参数。例如,在进入模式前,应确保已正确设置了Wi-Fi连接参数以及服务器地址等必要信息。 对于ESP8266数据功能设定可以通过专用软件如ESP8266调试工具V2.0完成,也可以直接向设备发送相应的AT指令来进行配置[^1]。 ```python import serial ser = serial.Serial('COM3', 115200, timeout=1) def send_at_command(command): ser.write((command + '\r\n').encode()) response = '' while True: line = ser.readline().decode() if not line or 'OK' in line: break response += line return response.strip() send_at_command("AT+CWMODE=1") # 设置为Station模式 send_at_command(f"AT+CWJAP=\"your_SSID\",\"your_PASSWORD\"") # 连接到指定WiFi网络 send_at_command("AT+CIPMUX=0") # 单连接模式 send_at_command("AT+CIPSTART=\"TCP\",\"server_ip\",port") # 建立到服务器的TCP连接 ``` 上述Python脚本展示了如何利用`pyserial`库与ESP8266交互发出必要的初始化命令。注意替换实际使用的SSID、密码、目标服务器IP及端口号。 #### 实现手机APP与ESP8266之间的通信 当ESP8266成功建立至云端服务(比如原子云服务器)或其他远程主机的连接后,即可开始处理来自客户端应用程序的消息递。这里假设已经有一个运行中的后台接收程序等待着来自移动终端的信息输请求。 在Android或iOS平台上构建的应用可以采用Socket编程方式同远端ESP8266保持持续性的双向通讯链路;或者是基于HTTP RESTful API接口设计简单的GET/POST请求用于交换少量结构化数据。下面给出一段简化版的Android Java代码片段说明怎样创建一个基本的TCP Client: ```java public class TcpClient { private static final String SERVER_IP = "your_server_ip"; private static final int SERVER_PORT = your_port; public void connect() throws IOException { Socket socket = new Socket(SERVER_IP, SERVER_PORT); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 发送消息给服务器 out.println("Hello from client!"); // 接收响应 String serverResponse; while ((serverResponse = in.readLine()) != null) { System.out.println("Server said: " + serverResponse); } socket.close(); } } ``` 此部分Java代码实现了简易的TCP客户端逻辑,负责打开套接字连接向预设的目标位置发送字符串形式的消息。同样地,“your_server_ip”和“your_port”应当被替换成具体的数值以便测试环境下的正常运作。 一旦完成了以上步骤,则意味着整个系统的硬件层面上准备就绪,接下来就是专注于优化用户体验和完善业务流程等方面的工作了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值