文章目录[隐藏]
事务的难度远远低于对事物的恐惧
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=<ssid>,<pwd>,<chl>,<ecn>
配置AP参数,只有在AP模式下有效。
<ssid>:WiFi的接入点名称;
<pwd>:WiFi的密码;
<chl>:通道;
<ecn>:加密方式,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=<mode>,<port>
创建/关闭服务器。
<mode>:0—关闭服务器,1—创建服务器。
<port>:设置服务器的端口号。
注意:
1)当WiFi模块处于多连接的模式下(AT+CIPMUX=1)才能开启服务器,关闭服务器需要重启。
2)开启服务器之后自动建立服务器监听,当有客户端接入会自动按顺序占用一个连接。 -
AT+CIPSTATUS
查看WiFi模块当前连接。 -
AT+CIPSEND
WiFi模块向某个连接发送数据。
1)单路连接时(+CIPMUX=0),指令为 AT+CIPSEND=<lenth>
2)多路连接时(+CIPMUX=1),指令为AT+CIPSEND=<id>,<lenth>
<id>:为客户端的id。
<lenth>:为发送数据的长度。
响应:收到此命令先返回">",然后开始接收串口数据,当数据长度达到lenth时发送数据
如果未建立连接或连接被断开,返回ERROR;
如果数据发送成功,返回SEND OK; -
AT+CIPSTART
建立连接。
1)单路连接时(+CIPMUX=0),指令为 AT+CIPSTART=<type>,<addr>,<port>
2)多路连接时(+CIPMUX=1),指令为AT+CIPSEND=<id>,<type>,<addr>,<port>
例如想要建立一个TCP连接,指令如下:AT+CIPSTART=“2”,“TCP”,“192.168.4.101”,8080
如果正确且成功返回OK,否则返回ERROR;
如果连接已经存在,返回ALREAY CONNECT; -
AT+CWLAR
查看当前无线路由器列表。 -
AT+CWJAP=<ssid>,<pwd>
加入指定的网络。 -
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
按照上述的步骤对WiFi模块进行配置之后,就可以在手机APP上输入IP地址(“192.168.4.1”)和端口号(8088)就可以建立TCP连接,然后进行数据的传输。
STM32单片机和Android APP源代码下载链接:
STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输.rar
Android APP配置的步骤请参考:
STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输(二)—上位机搭建
版权声明:本文为CSDN博主「闲饭疙瘩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44355077/article/details/116121764
暂无评论