我没有使用网络调试助手直接连接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