haas506与esp8266-01s的串口通信
- PC端调试wifi模块
- 1.接线(与电脑通信)
- 2.模式案例
- 3.指令演示
- 开发板与wifi模块通信
- 1.接线(TTL串口通信)
- 2.代码
- 测试
PC端调试wifi模块
esp8266-01s
1.接线(与电脑通信)
与电脑通信时引脚连接,wifi模块需要稳定3.3v供电,可以使用开发板进行供电。
VCC接3.3V
CH_PD接3.3V,否则wifi不工作
TX接串口TX
RX接串口的RX
GND接地,WiFi模块,CH340模块,开发板共地
2.模式案例
wifi模块默认有内置SDK,通过发送AT指令可以配置WiFi模块。
参考文件文档工具
1、单连接TCP client模式指令
AT+CWMODE=3 //设置为 softAP+station 共存模式
AT+RST //重启
AT+CWJAP="ssid","password" // 传入路由的ssid 和 password
AT+CIFSR //查询设备IP。响应:192.168.3.106 //返回设备的 IP 地址
AT+CIPSTART="TCP","192.168.3.116",8080 //传入协议、服务器 IP、端口号
AT+CIPSEND=4 // 发送四个字节,字节数可按需任定
DGFY // 输入要发送的四个字节内容,无需回车。
2、TCP client单连接透传模式指令
AT+CWMODE=3 //设置为 softAP+station 共存模式
AT+RST //重启
AT+CWJAP="ssid","password" // 传入路由的ssid 和 password
AT+CIFSR //查询设备IP。响应:192.168.3.106 //返回设备的 IP 地址
AT+CIPSTART="TCP","192.168.3.116",8080 //传入协议、服务器 IP、端口号
AT+CIPMODE=1 //开启透传模式
AT+CIPSEND //开始透传
+++ //退出发送数据
AT+CIPMODE=0 //退出透传模式
AT+CIPCLOSE //断开TCP连接
AT+CWQAP //断开热点
3、多连接 TCP server模式指令
AT+CWMODE=3 //设置为 softAP+station 共存模式
AT+RST //重启
AT+CIPMUX=1 // 启动多连接
AT+CIPSERVER=1 //建立server,默认端口 333
AT+CIPSTART="TCP","192.168.3.116",8080 //传入协议、服务器 IP、端口号
AT+CIPMODE=1 //开启透传模式
AT+CIPSEND //开始透传
4、固定远端的UDP通信
5、远端可变的UDP通信
6、UDP透传
3.指令演示
以下以透传模式指令为例
需要的工具点击链接下载
1、打开模块串口,设置波特率115200,发送 AT+CWMODE=3 设置为 softAP+station 共存模式,返回ok。
2、AT+RST 重启
3、AT+CWJAP=“szyyw”,“szyywdz501” 传入路由的ssid 和 password,连接WIFI
4、AT+CIFSR 查询设备IP。响应:192.168.3.106 返回设备的 IP 地址
5、在 PC 上使用网络调试助手,创建一个服务器。
6、AT+CIPSTART=“TCP”,“192.168.3.41”,8080 传入协议、服务器 IP、端口号,连接TCP服务器
7、AT+CIPMODE=1 开启透传模式
8、AT+CIPSEND 开始透传
串口工具与TCP服务器数据可以互传
开发板与wifi模块通信
1.接线(TTL串口通信)
与开发板通信正常连接4根线就行
haas506 | esp826601s |
---|---|
3.3V | VCC |
GND | GND |
TTL_TX | RX |
TTL_RX | TX |
2.代码
完整代码
案例中haas506通过TTL口向WiFi模块发送指令,配置WiFi模块为透传模式,实现网络TCP服务器与开发板相互通信。
main.py
station.py
import utime
from driver import UART
import _thread
#串口实例化
uart=UART()
uart.open("serial1")
#创建一个readBuf字节数组,用于存放串口读取到的数据
readBuf=bytearray(255)
def Station_init():
#设置为 softAP+station 共存模式
wrirtBuf = bytearray("AT+CWMODE=3\r\n")
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
def connect_wifi(account,password):
wrirtBuf = bytearray("AT+CWJAP=\"{}\",\"{}\"\r\n".format(account,password))
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
wrirtBuf = bytearray("AT+CIFSR\r\n")
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
def TcpConnect(host,port):
#开启透传模式
wrirtBuf = bytearray("AT+CIPMODE=1\r\n")
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
#tcp连接
wrirtBuf = bytearray("AT+CIPSTART=\"TCP\",\"{}\",{}\r\n".format(host,port))
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
#开始透传
wrirtBuf = bytearray("AT+CIPSEND\r\n")
uart.write(wrirtBuf)
utime.sleep(4)
ret = uart.read(readBuf)
print(readBuf[:ret])
def tcprecv():
print('Running thread tcprecv...')
try:
ret = uart.read(readBuf)
except OSError:
print('TCP OSError')
if ret>0:
print(readBuf[:ret],'------------')
return readBuf[:ret]
else :
return None
def update(value):
wrirtBuf = bytearray("{}\r\n".format(value))
uart.write(wrirtBuf)
board.json
{
"name": "haas506",
"version": "2.0.0",
"io": {
"serial1":{
"type":"UART",
"port":0,
"dataWidth":8,
"baudRate":115200,
"stopBits":1,
"flowControl":"disable",
"parity":"none"
}
},
"debugLevel": "ERROR",
"repl":"enable"
}
测试
打开网络调试助手
TTL串口每隔4s发送一条指令
开启透传后,开发板每秒向TCP服务器发送一个数据
TCP下发数据时,开发板会打印接收到的数据