单片机交流
直播中

风尚男人

8年用户 909经验值
私信 关注
[问答]

请问STM32单片机如何通过ESP8266WiFi模块与Android APP实现数据传输?

请问STM32单片机如何通过ESP8266WiFi模块与Android APP实现数据传输?

回帖(1)

李丹

2021-10-27 10:57:36
事务的难度远远低于对事物的恐惧
STM32F407单片机通过ESP8266 WiFi模块与Android 手机APP连接实现数据的相互传输,在单片机上通过LCD显示屏实时显示连接的状态以及互相传输的数据,先看效果图:



  • STM32单片机









  • Android 手机APP






1.下位机硬件配置

本文中使用的单片机型号是STM32F407,如果使用的是其它型号的单片机只需要将程序稍稍改改就可以了,使用的WiFi模块是正点原子的ESP8266模块,该模块与单片机的通信是通过串口实现的,由于该单片机的串口一被用作下载程序,所以本文使用的是串口三,STM32所用的全部代码可以通过本文末的链接进行下载,在程序中可以看到有关于串口三的配置,WiFi模块与单片机连接可以直接插入单片机开发板预留的接口,就像上图中所示的一样。
如果没有预留的接口,那么就需要用杜邦线进行连接,WiFi模块的电源接3.3V和5V都可以,然后WiFi模块的RX引脚接单片机串口三的TX引脚,WiFi模块的TX引脚接单片机串口三的RX引脚,WiFi模块的地与单片机的地接上即可。
2.WiFi模块配置

本文使用的WiFi模块具有三种工作模式,分别是:STA模式、AP模式和STA+AP模式,在每个模式下又分了三种模式分别是:UDP、TCP Client 和TCP Server模式,如果不太了解WiFi模块的工作模式,大家可以先去了解一下。
本文将WiFi模块设置成了AP模式下的TCP Server模式,就相当于一个路由器,并配置好WiFi模块的IP地址和端口号,完事就可以通过手机APP连接这个WiFi模块,并相互传输数据,进而就可以控制单片机所连接的硬件设备,实现简易物联网的功能。
WiFi模块配置是通过AT指令完成的,下面列出了部分常用的AT指令:



  • AT
    查询所连接的WiFi模块是否正常工作,如果正常工作则返回 OK 。
  • AT+RST
    重启WiFi模块。
  • AT+CWMODE=N
    当N=1时:将WiFi模块的工作模式设置成STA模式;
    当N=2时:将WiFi模块的工作模式设置成AP模式;
    当N=3时:将WiFi模块的工作模式设置成STA+AP模式;
  • AT+CWMODE?
    查询WiFi模块当前的工作模式。
  • AT+CWSAP=,,,
    配置AP参数,只有在AP模式下有效。
    :WiFi的接入点名称;
    :WiFi的密码;
    :通道;
    :加密方式,0—OPEN,1—WEP,2—WPA_PSK,3—WPA2_PSK,4—WPA_WPA2_PSK;
    此指令设置完成之后。连接网络可能会出现连接不上的情况,这时需要发送AT+RST重启指令,并稍微等待一会。
  • AT+CIPMUX=N
    当N=0时:WiFi模块设置成单连接模式;
    当N=1时:WiFi模块设置成多连接模式;
  • AT+CIPMUX?
    查询WiFi模块当前是否建立了多连接。
  • AT+CIPMODE=N
    当N=0时:WiFi模块设置成非透传模式;
    当N=1时:WiFi模块设置成透传模式;
  • AT+CIPMODE?
    查询WiFi模块当前的传输模式。
  • AT+CIPSTO=XXXX
    设置WiFi模块的超时时间。
  • AT+CIPSTO?
    查询WiFi模块的服务器超时时间。
  • AT+CIPSERVER=,
    创建/关闭服务器。
    :0—关闭服务器,1—创建服务器。
    :设置服务器的端口号。
    注意:
    1)当WiFi模块处于多连接的模式下(AT+CIPMUX=1)才能开启服务器,关闭服务器需要重启。
    2)开启服务器之后自动建立服务器监听,当有客户端接入会自动按顺序占用一个连接。
  • AT+CIPSTATUS
    查看WiFi模块当前连接。
  • AT+CIPSEND
    WiFi模块向某个连接发送数据。
    1)单路连接时(+CIPMUX=0),指令为 AT+CIPSEND=
    2)多路连接时(+CIPMUX=1),指令为AT+CIPSEND=,
    :为客户端的id。
    :为发送数据的长度。
    响应:收到此命令先返回">",然后开始接收串口数据,当数据长度达到lenth时发送数据
    如果未建立连接或连接被断开,返回ERROR;
    如果数据发送成功,返回SEND OK;
  • AT+CIPSTART
    建立连接。
    1)单路连接时(+CIPMUX=0),指令为 AT+CIPSTART=,,
    2)多路连接时(+CIPMUX=1),指令为AT+CIPSEND=,,,
    例如想要建立一个TCP连接,指令如下:AT+CIPSTART=“2”,“TCP”,“192.168.4.101”,8080
    如果正确且成功返回OK,否则返回ERROR;
    如果连接已经存在,返回ALREAY CONNECT;
  • AT+CWLAR
    查看当前无线路由器列表。
  • AT+CWJAP=,
    加入指定的网络。
  • AT+CWJAP?
    查询WiFi模块当前连接上的AP。
  • AT+CWLIF
    查询WiFi模块当前已经接入的IP。
  • AT+CIFSR
    查询WiFi模块的IP地址。

了解了常用的AT指令之后,接下来我们就用AT指令去配置WiFi模块,本文是在程序中对WiFi模块进行配置的,也可以在PC端用串口助手发送AT指令进行配置,AP模式的TCP SERVER模式的配置流程如下:

1.        AT                //查看芯片是否正常工作
响应:
        OK
2.        ATE0        //关闭回显
响应:
        OK
3.        AT+CWMODE=2                //配置成AP模式
响应:
        OK
4.        AT+RST                //重启WiFi模块
响应:
        ready
5.        AT+CWSAP="ssid","pwd",1,4        //配置WiFi名称、密码等
响应:
        OK
6.        AT+CIPMUX=1                //开启多连接
响应:
        OK
7.        AT+CIPSERVER=1,8088                //开启TCP服务器,端口号设置成8088
响应:
        OK
8.        AT+RST                //重启WiFi模块
响应:
        OK
9.        AT+CIFSR        //查看WiFi模块的IP和MAC地址
响应:
        +CIFSR:APIP,"192.168.4.1"
        +CIFSR:APMAC,"ea,68,e6,86,c5,39"
        OK
举报

更多回帖

发帖
×
20
完善资料,
赚取积分