OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3834|回复: 6

[ESP8266模块] 3个8266模块间的通信:2个8266模块作为客户端连接另外1个8266模块作为服务器端的方法(模块连接同一个路由器)

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2019-1-18 15:20:25 | 显示全部楼层 |阅读模式
本帖最后由 peng1554 于 2019-9-21 15:44 编辑

昨天遇到一个用户反馈2个8266模块作为客户端连接1个8266模块作为服务器端不成功,所以写了这个帖子
该方法需要准备3个USB转TTL电路来分别接3个8266模块,模块接法是:
模块的RXD,TXD,VCC.GND分别接USB转TTL电路的TXD,RXD,5V,GND
帖子使用的模块为ATK-ESP8266模块,该模块带有ATK-ESP-01模组,模组烧写了正点原子8266固件,
如果不是用的该版本固件,请烧写,固件烧写方法见模块资料的ATK-ESP8266 WIFI用户手册_V1.3.pdf的固件烧写章节
模块资料:https://pan.baidu.com/s/19R-XAruYSmJVH1tpCTPNMw

这里我们使用模块1,模块2,模块3代表三个8266模块
模块1使用COM10通信,模块2使用COM4通信,模块3使用COM3通信
波特率:115200,8位数据位,1位停止位,无奇偶校验位
我们用模块1作为Tcp Sever,模块2和3都作为Tcp client,三个模块都连接同一个路由器
在同一个路由器下实现3模块之间的数据透传
各模块用到的AT指令如下图
模块指令设置.JPG
一.设置模块1作为Tcp Server
串口助手依次发送这些指令给模块1
AT+RST
AT+CWMODE=1
AT+CWJAP="FAE","15902020353"  //这里需要连接用户自己的路由,我这边路由SSID为FAE
AT+CIPMUX=1
AT+CIPSERVER=1,8080
AT+CIFSR
如下图,由下图知模块1的IP:192.168.0.106
模块1Server设置.JPG
二.设置模块2作为Tcp Client
串口助手依次发送这些指令给模块2
AT+RST
AT+CWMODE=1
AT+CWJAP="FAE","15902020353"
AT+CIFSR
AT+CIPSTART="TCP","192.168.0.106",8080
AT+CIPMODE=1
AT+CIPSEND
在发送完AT+CIPSTART="TCP","192.168.0.106",8080后,模块1会串口打印0,CONNECT表示模块2连上了模块1并且通道号为0
模块2的IP为192.168.0.108
模块2设置1.JPG
上图便是实现模块2向模块1透传数据,也可以由模块1向模块2透传数据,模块1依次发送
AT+CIPSEND=0,11模块1数据
发送结果如下
模块1发给模块2.JPG
三.设置模块3作为Tcp Client
串口助手依次发送这些指令给模块3
AT+RST
AT+CWMODE=1
AT+CWJAP="FAE","15902020353"
AT+CIFSR
AT+CIPSTART="TCP","192.168.0.106",8080
AT+CIPMODE=1
AT+CIPSEND
在发送完AT+CIPSTART="TCP","192.168.0.106",8080后,模块1会串口打印1,CONNECT表示模块3连上了模块1并且通道号为1
模块3的IP地址为:192.168.0.102
因为client端的模块2已经连上了Server端模块1 ,之前模块1已经分配给模块2通道0,所以模块1给模块2分配的是其他通道,
截图所示分配的是通道1
模块3发数据给模块1.JPG
上图便是实现模块3向模块1透传数据,也可以由模块1向模块3透传数据,模块1依次发送
AT+CIPSEND=0,11
模块1数据
发送结果如下
模块1给模块3发送数据.JPG

最后附上3模块一起工作时的截图
一起工作情况.JPG



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-11-20
在线时间
42 小时
发表于 2019-7-23 11:35:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

14

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-11-20
在线时间
42 小时
发表于 2019-7-23 12:04:51 | 显示全部楼层
主机不能给从机发消息吗
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
 楼主| 发表于 2019-7-24 15:23:12 | 显示全部楼层
lidianhang 发表于 2019-7-23 12:04
主机不能给从机发消息吗

可以发
回复 支持 反对

使用道具 举报

14

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-11-20
在线时间
42 小时
发表于 2019-7-31 21:55:34 | 显示全部楼层
8266能否自己设定静态IP
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2019-4-16
在线时间
83 小时
发表于 2019-8-5 22:34:17 | 显示全部楼层
请问一下,我配置好了单片机接8266为TCP Server作为服务器,串口TTL接上一个8266模块作为用户,并且也与单片机连接成功,可以互相发送数据。
比如我要实现单片机把采集到的AD值发送到串口TTL接的8266上,该如何写程序?是不是把采集到的AD填入数组,再通过                                               
atk_8266_send_cmd("AT+CIPSEND=0,25","OK",200);  
delay_ms(200);
atk_8266_send_data(p,"OK",100);  
这样发送?
  新手刚刚接触,理解还不够透彻,希望多多指教
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-9-19
在线时间
2 小时
发表于 2019-9-24 20:59:43 | 显示全部楼层
主机可以开启透传模式向客户机发送数据吗?没有数据长度限制,
不需要发送AT+CIPSEND=0命令,可以实现向客户机传输数据吗?不限制数据长度
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 23:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表