我沒有使用網絡調試助手直接連接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