硬件连接
参考博客地址
主要连接-EN使能位
- ESP-01需要连接高电平
- ESP-01S悬空就行
服务器端
必要配置
AT # 测试是否连接成功
- OK 正常
AT+CWMODE=2 # 设置成AP模式
- 1:STA模式 2:AP模式 3:STA+AP模式
- 返回OK
AT+CWSAP_DEF="MYWEI","12345678",5,4 # 配置热点信息
- MYWEI 热点名称
- 12345678 热点密码
- 5:通道号
- 4: 0-OPEN,1-WEP,2-WPA_PSK,3-WPA2_PSK,4-WPA_WPA2_PSK
AT+RST # 重启
AT+CIFSR # 查看本机IP地址
- 客户端连接要用IP地址
AT+CIPMUX=1 # 多链路连接
- =1:多链路
- =0:单连接
AT+CIPSERVER=1,5000 # 设置TCP, 端口号
- 1:为TCP
- 5000:端口号 # 客户端连接要用
AT+CIPSTO=2880 #设置超时连接时间
客户端
AT # 测试是否连接成功
- OK 正常
AT+CWMODE=1 # 设置成STA模式
- 1:STA模式 2:AP模式 3:STA+AP模式
- 返回OK
AT+CWJAP_DEF="MYWEI_Server","12345678" # 连接热点
- MYWEI 热点名称
- 12345678 热点密码
AT+RST # 重启
AT+CIFSR # 查看本机IP地址
- 客户端连接要用IP地址
AT+CIPMODE=1 #开启透传模式
- 1:开启
- 0:关闭
AT+CIPSERVER=1,5000 # 设置TCP, 端口号
- 1:为TCP
- 5000:端口号 # 客户端连接要用
AT+CIPSTART="TCP","192.168.4.1",5000 # 连接服务器
- TCP连接
- 主机地址
- 主机端口号
AT+CIPSEND # 向主机发送数据
- 发 +++(不带换行)退出发送
AT+SAVETRANSLINK=1,"192.168.4.1",5000,"TCP" # 自动开启透传模式
- 上电直接进去透传发送。 Very good!
STM32单片机实现
接收的数据分析
当靶环为5环时,一个发送105时,收到:
+IPD,0,6:105
- +IPD,0,6: 为固定发送
- 105 为发送数据
- 后边还有换行符
也就是从第九个符号开始是数据。
用主机直接判断第九个字符是1或2从而确定是哪个设备。
采用单片机串口接收
在串口助手接收的格式具有换行符,不确定这个换行是一位还是两位。
- 判断地址位
+IPD,0,6:105
可以看出第九位为地址位,主要问题在于怎么判断
可以看出第九位为地址位,主要问题在于怎么接收, 什么时候将串口清零
- 根据以前开发经验
将接收数据固定,但是这种方法用于固定长度的接收数据, 但是该作品收到的数据尾部有换行符, 换行符我无法是\r还是\r\n。
测试很多次, 该方法不法适用。 - 找规律重新写
每次接受尾部数据无法确定, 但是首部数据都是相同的,所以可以从首部着手处理。
无论设备1还是设备2第一个数据都是+,因此可以根据+判断。
当接收到+时, 将接收位数清零,这样就可以十分准确的确定第九位就是地址位置。
-
判断数据位
+IPD,0,6:105