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 蓝牙解锁

实验一 stm32F407VETx点亮流水灯

二、设计指标 使电路板上的8个LED轮流点亮,并按键控制点亮速度。 三、操作 1、CubeMX操作 1.1依据开发板LED引脚设置CubeMX中8个LED的引脚为GPIO_Output模式, 2、按键设置

基于单片机的智能家居控制系统

设计简介: 本设计是基于单片机的智能家居控制系统,主要实现以下功能: 可通过DS18B20实时测量环境温度温度具有上下限,自动模式下温度超出限值,GMS发送短信温度上下限

什么是串口通讯

串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的一种通讯方式。尽管串行通讯的比按字节传输的并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。 典型的串口通信使用3根线完成,分别是地线