STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输(一)---下位机硬件配置

事务的难度远远低于对事物的恐惧
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

生成海报
点赞 0

闲饭疙瘩

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于STM32F103的智能门锁系统

基于STM32F103的智能门锁系统 直接说明实现了什么效果 1 指纹解锁(基于AS608) 2 RFID解锁(基于RC522) 3 密码解锁 (基于LCD电容屏触摸控制) 4 蓝牙解锁

基于STM32F103的智能门锁系统

基于STM32F103的智能门锁系统 直接说明实现了什么效果 1 指纹解锁(基于AS608) 2 RFID解锁(基于RC522) 3 密码解锁 (基于LCD电容屏触摸控制) 4 蓝牙解锁

STM32串口发送接收数据

1.串口通信 我用的32是stm32f10x最小系统没有UART4和UART5 USART : 通用同步异步收发器 UART : 通用异步收发器 nRTS : 请求发送 nCTS : 请求接收 区别:USART指单片机的一个IO端