事务的难度远远低于对事物的恐惧
STM32F407单片机通过ESP8266 WiFi模块与Android 手机APP连接实现数据的相互传输,在单片机上通过LCD显示屏实时显示连接的状态以及互相传输的数据,先看效果图:
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
事务的难度远远低于对事物的恐惧
STM32F407单片机通过ESP8266 WiFi模块与Android 手机APP连接实现数据的相互传输,在单片机上通过LCD显示屏实时显示连接的状态以及互相传输的数据,先看效果图:
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
举报