找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5594|回复: 14
打印 上一主题 下一主题
收起左侧

请问ESP8266和单片机串口互联的问题

[复制链接]
跳转到指定楼层
楼主
各位好,我有一块hc6800-es开发板和ESP8266 esp1的wifi模块。在使用USB转串口连接开发板时候,hc6800-es开发板和串口助手可以正常发发数据。
在使用USB转串口连接ESP8266 esp1时候, ESP8266 esp1和串口助手可以正常发发数据。

遇到问题如下:
在使用USB转串口(COM1)连接开发板,ESP8266 esp1使用USB转串口(COM2)仅提供供电。
用杜邦线将ESP8266 esp1和hc6800-es开发板的TXD,RXD交互链接。

这个情况下,我使用串口助手链接COM1,发送给开发板指令,让开发板执行AT指令,发现都似乎被ESP8266 esp1拦截执行,开发板不反馈信息,但是ESP8266 esp1会反馈错误信息。

例如我发送ON指令,ESP8266 esp1直接反馈ERROR,发送AT,ESP8266 esp1直接反馈OK.
就像是ESP8266 esp1拦截了所有的AT指令,又像是串口助手直接发给了ESP8266 esp1,开发板根本没收到指令。
保持原有通电状态下,断开ESP8266 esp1和hc6800-es开发板的杜邦线,再用串口助手发送指令,开发板正确的收到了指令并亮起LED灯。

我启动开发板时候,设定了main函数里面等候一会儿,执行以下AT指令让ESP8266 esp1改变为AP模式,但发现也是没有正确执行,请问这个情况是什么原因?我应该如解决?感谢各位指导!

评分

参与人数 1黑币 +10 收起 理由
yousunny + 10 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2018-7-25 20:48 | 只看该作者
先进入透传模式
回复

使用道具 举报

板凳
ID:373010 发表于 2018-7-26 08:04 | 只看该作者
devcang 发表于 2018-7-25 20:48
先进入透传模式

谢谢兄台!

关键是我在开发板启动时候,延时后执行AT+CWMODE=3都无效,如果用串口助手的话,那没任何问题。
就是开发板启动都无法和esp2866沟通我才头痛。
回复

使用道具 举报

地板
ID:303383 发表于 2018-7-26 09:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
ID:379279 发表于 2018-7-26 09:56 | 只看该作者
先进入透传模式
回复

使用道具 举报

6#
ID:379279 发表于 2018-7-26 09:56 | 只看该作者

这个需要你耐心来调试,给你两个不同方式的控制实例你看看

ESP8266配置成服务器(PC或单片机发指令):
1、  测试AT指令:AT
2、  复位重启模块:AT+RST
3、  设置为AP模式:AT+CWMODE=2
4、  查看主机端的ip地址:AT+CIFSR
5、  设置模块传输模式为TCP模式:AT+CIPMODE=0
6、  设置为多连接模式,启动模块:AT+CIPMUX=1
7、  服务器的设置端口:AT+CIPSERVER=1,5000
回复

使用道具 举报

7#
ID:364341 发表于 2018-7-26 10:10 | 只看该作者

1
WIFI模块ESP8266的使用指南(客户端和服务器两种模式建立)


ESP8266模块硬件连接工作,以及作为服务器和客户端情况下的配置实现的详细过程,并对相关AT指令和实验现象进行说明。

1. 硬件准备

模块型号使用的是ESP-12E,基于ESP8266核心处理器的模块,使用模块时,需要对引脚进行相应的连接才能正常使用。引脚连接如下图:

通过USB-TLL下载器与模块连接到电脑,进行AT指令通信。由于模块引脚间距2mm。不能使用2.54mm排插,需要在洞洞板上,通过导线进行引线处理,如图:

当模块上电后,LED指示灯会闪烁一下,表示可以正常工作。下面就可以对模块进行调试使用了!


2. 开始调试一. 调试软件介绍
  • 串口调试软件:模块默认使用115200波特率

  • 网络调试助手:本文用了两个网络调试助手软件,原因是在调试过程中,有一款软件进行创建客户端时无法连接上模块服务器,可能是软件版本问题,因此将模块配置为服务器时,改用了另一款调试助手,两款软件分别如下:
    1)该软件在创建服务器时能正常使用。而创建客户端时无法使用(版本问题)。

    2)创建客户端时用这款软件。



二. 将wifi模块作为路由器(建立局域网)的基本配置

下面是将模块作为服务器端的配置流程,以及对常用的AT指令进行解释
注:发送AT指令后面一定要加入换行(回车),再点击发送,指令才有效!

  • 模式配置:AT+CWMODE=3,配置成AP兼station模式(AP理解为路由器,被连接,station理解为非路由器,去连接别人),一般通用配置成此模式即可。
    指令介绍:

在调试助手将指令发给模块,如图:

2.设置为路由器,为模块配置路由器名称和密码
发送指令为:AT+CWSAP=”MYESP8266”,”ldy1314520”,11,2
名称是MYESP8266,密码是ldy1314520
指令介绍:

指令发送,如图:

3.电脑连接到模块路由器 配置完WIFI模块后,可以通过电脑无线连接到WIFI模块,如下图。
电脑连接到WIFI模块路由器,实际上就已经建立了以路由器为中心的局域网,这为下面建立客户端和服务器的连接打下了基础。
说明:建立局域网的条件,也可以让WIFI模块连接其他路由器,然后电脑也连接该路由器也能构成局域网,这里不做详解。


三. 将模块作为服务器端
  • 模块复位。AT+RST,即:复位模块,成功后返回ready,其中会返回一串乱码是模块内部信息,正常现象。
    指令介绍:

指令发送:

2 配置为多连接。AT+CIPMUX=1,即:模块作为服务器时,可以被多个客户端连接,若作为客户端时,可以连接多个服务器。
指令介绍:

指令发送:

3.配置为服务器。AT+CIPSERVER=1,8089 端口号8089的服务器 ,此时,就将模块作为服务器创建好了!但是客户端要连接上该服务器,需要知道该服务器的IP地址,因此需要下一步指令对IP地址获取。
指 令介绍:

指令发送:

4 .获取服务器本机IP地址。知道IP地址,客户端才能进行连接。
指令介绍:

指令发送如下,可以看到模块返回的IP地址。IP是192.168.4.1 端口号是之前配置的8089.

5 .下面就是在电脑端创建客户端了,用网络调试助手,创建如下,并成功连接服务器,连接上后,模块会响应CONNECT。


6 .连接服务器后,WIFI模块想知道连接上来的客户端ID编号,IP地址,端口号的相关信息,可以通过指令:AT+ CIPSTATUS。指令介绍:

指令发送,可以获得客户端信息,显示的是0号客户端:

7.下面可以进行双方通信,首先客户端给服务器发消息:

需要注意的是:由于模块内部有定时机制,如果双方长时间没通信,连接会被自动断开!

8.服务器给客户端发消息,需要通过指令AT+CIPSEND=0,5(多路连接下)。该指令指对0号客户端发5字节数,如果实际发的字节超过5,会被截取前面5个。发送完后,模块返回字符‘>’,此时AT指令失效,用户可以任意发自己想要的信息,发送成功,返回“SEND OK”。

指令发送如图,模块返回字符‘>’:

任意发送想要的5字节数,发送成功返回“SEND OK”:

9.上面就是双方的通信过程,如果想要关闭连接,可以通过指令AT+CIPCLOSE=0(多连接模式),可以将0号客户端关闭连接。

指令发送如图:


四. 将模块作为客户端

将模块作为客户端,应在WIFI模块作为路由器的基本配置下,再进行如下的操作。

1.通过网络调试助手创建服务器,服务器IP必须为电脑连接路由器后的本机IP。这样才能确保在局域网下的同网段。

2.模块复位。AT+RST,成功后返回ready。同上,不做详细介绍

3.配置为多连接。AT+CIPMUX=1,即:模块作为服务器时,可以被多个客户端连接,若作为客户端时,可以连接多个服务器。同上,不做详细介绍。

4.不作为服务器。AT+CIPSERVER=0。
指令发送如下:

5.连接到服务器,通过指令:AT+CIPSTART= “TCP”, “192.168.4.2”, 9085 意思为:建立TCP连接到IP为192.168.4.2,端口9085的服务器
指令介绍:

指令发送如下,若连接成功将返回CONNECT OK,并且在网络调试助手显示连接进来的客户端IP。

6.双方数据通信,服务器给客户端发,只要直接在网络调试助手里发送想发的信息就行。如图:

7.客户端给服务器发消息,需要通过指令:AT+CIPSEND=0,6(多路连接下)。该指令指对0号服务器发6字节数,如果实际发的字节超过6,会被截取前面6个。AT+CIPSEND指令详解见上。
指令发送如图:

出现‘>’字符就可以发送想发的数据:

  • 以上就是对ESP8266WIFI模块作为服务器和客户端的使用过程,重点是掌握AT指令的使用和理解。该模块不仅用于通信,还自带了很多其他功能,如可以输出多路PWM,ADC等功能,可谓短小精悍。
2.ESP8266 WIFI模块实现远程wifi控制








如果你刚买了一个ESP8266板,你可以用树莓派直接与它通信。由于它们都是使用3.3V的信号,所以不需要电平转换。

第一步:所需材料
  • 树莓派的桌面设置(任何PI都应该有的,但与电池、键盘、屏幕和网络等接入更佳)
  • esp8266-01
  • 一些跳线、钳子和剥离器
  • 无焊面包板
  • 2个上拉、下拉电阻
  • 按键开关(可选)


第二步:接线
如图。

第三步:配置Raspbian Linux
启动树莓派和超级用户进行编辑(如: “sudo nano”)。
  • 禁用内核串口控制台
在文件Edit /boot/cmdline.txt ,去除:
dwc_otg.lpm_enable=0 rpitestmode=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
  • [tr]禁用串口登录
在文件 /etc/inittab 去除(通常是)最后一行:
2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
  • 重启:sudo shutdown -r now


第四步:开始与ESP8266通信

  • 连接到串行端口
[tr]你现在应该能够通过终端仿真程序与ESP8266互动。
[tr]
  • 备注/说明
[tr]如果你试图使用复位按钮,效果可能不好。[tr]最好关掉树莓派,然后切断电源再重启。
[tr]当接通电源时不要乱拔电线。[tr]关掉树莓派("sudo shutdown -h now"),等任何发光二极管闪烁停止并断开电源再尝试连接/断开电线。
[tr]这个链接本身无法通过ESP8266给你树莓派网络接口[tr]。[tr]但它至少让你尝试,配置,甚至改变它。
[tr]如果你只是关闭一个窗口或断开连接,屏幕仍然串行端口不变的。
[tr]树莓派和ESP8266可以使用大量的电力。[tr]这种设置只依赖于树莓派的3.3V电源,如果两个设备都全力启动,可能是不够的。[tr]一个更可靠的和永久性的解决方案,为ESP8266提供独立电源。





如果你刚买了一个ESP8266板,你可以用树莓派直接与它通信。由于它们都是使用3.3V的信号,所以不需要电平转换。

第一步:所需材料
  • 树莓派的桌面设置(任何PI都应该有的,但与电池、键盘、屏幕和网络等接入更佳)
  • esp8266-01
  • 一些跳线、钳子和剥离器
  • 无焊面包板
  • 2个上拉、下拉电阻
  • 按键开关(可选)


第二步:接线
如图。

第三步:配置Raspbian Linux
启动树莓派和超级用户进行编辑(如: “sudo nano”)。
  • 禁用内核串口控制台
在文件Edit /boot/cmdline.txt ,去除:
dwc_otg.lpm_enable=0 rpitestmode=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
  • [tr]禁用串口登录
在文件 /etc/inittab 去除(通常是)最后一行:
2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
  • 重启:sudo shutdown -r now


第四步:开始与ESP8266通信

  • 连接到串行端口
你现在应该能够通过终端仿真程序与ESP8266互动。

  • 备注/说明
如果你试图使用复位按钮,效果可能不好。[tr]最好关掉树莓派,然后切断电源再重启。
当接通电源时不要乱拔电线。[tr]关掉树莓派("sudo shutdown -h now"),等任何发光二极管闪烁停止并断开电源再尝试连接/断开电线。
这个链接本身无法通过ESP8266给你树莓派网络接口[tr]。[tr]但它至少让你尝试,配置,甚至改变它。
如果你只是关闭一个窗口或断开连接,屏幕仍然串行端口不变的。
树莓派和ESP8266可以使用大量的电力。[tr]这种设置只依赖于树莓派的3.3V电源,如果两个设备都全力启动,可能是不够的。一个更可靠的和永久性的解决方案,为ESP8266提供独立电源。




回复

使用道具 举报

8#
ID:373010 发表于 2018-7-26 21:17 | 只看该作者
devcang 发表于 2018-7-25 20:48
先进入透传模式

兄台,我已经试过无效。
其实我就是启动了单片机,向esp8266发送了一个AT+CWMODE=3,理论上发送后,可以在手机上搜索到这个wifi的,但是就是看不到。
回复

使用道具 举报

9#
ID:373010 发表于 2018-7-26 21:21 | 只看该作者
小猫猫爱吃鱼 发表于 2018-7-26 09:09
这个需要你耐心来调试,给你两个不同方式的控制实例你看看

ESP8266配置成服务器(PC或单片机发指令):1 ...

谢谢兄台指点!
我的TXD,RXD和单片机的TXD,RXD连接方法是和你一样的。
就是供电是独立的,地线和开发板的gnd共地,但是发送指令依然无效,请问这个是否存在问题?
AT+CWMODE=3这个指令让wifi模块变成ap,理论上手机就可以看到了,但实际无效。

我写法是
send_str("AT+CWMODE=2\r\n");

void send_byte(unsigned char c)
{
ES = 0;
        TI=0;
        SBUF = c;
while(!TI);

TI = 0;
        ES = 1;
}

void send_str(unsigned char *s)
{
while(*s != '\0')
{
  send_byte(*s);
  s++;
}
}
回复

使用道具 举报

10#
ID:241423 发表于 2018-7-29 08:19 | 只看该作者
stinfo 发表于 2018-7-26 21:21
谢谢兄台指点!
我的TXD,RXD和单片机的TXD,RXD连接方法是和你一样的。
就是供电是独立的,地线和开发板 ...

请问巨佬解决了没有,我也在这里打转
回复

使用道具 举报

11#
ID:308437 发表于 2018-7-29 09:35 | 只看该作者
那个你先测试保证你单片机发送的指令是对的(用串口看一下,保证不是乱码),还有,波特率记得要匹配(8266出厂默认波特率有9600也有115200的),然后再重新测试一下,应该是可以的。除非你模块坏了
回复

使用道具 举报

12#
ID:532836 发表于 2019-5-19 14:27 | 只看该作者
大佬谁有解决方案吗
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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