基于STM32单片机与wifi模块串口结合进行PC端或手机端无线通信(附项目资料包)

项目所需材料:

  • stm32f103系列最小系统开发板一块。
  • WiFi模块。
  • 具有WiFi功能的手机及PC机。
  • 达普电池一包(或者学生电源一台)。.
  • 1k电阻4个,杜邦线若干。

一.硬件环境搭建

1.1-----主控芯片采用的是stm32f103c8t6芯片。
1.2----- wifi模块采用ESP8266安可信-12F。
1.3-----通过c8t6的串口2(PA2,PA3)与WiFi模块有线连接。

接线图

stm32f103最小系统开发板

  • PB.9 为wifi使能端口。
  • PA.2/PA.3为串口2端口。

wifi模块连线图
按照上图将WiFi的RST、EN等引脚上拉电阻,且与c8t6串口2有线连接即可

二.设备连接

2.1-----首先运行MDK。并且配置好stm32f103c8t6串口2的初始化及中断函数。(可参考正点原子的串口实验例程)
ESP模式配置说明
2.2-----由上表模式说明将wifi模块配置为运行模式。
2.3-----将WiFi配置为AP模式,具体步骤如下:

  1. 测试指令:AT

检查WiFi模块是否在线,若是则退出透传,且发送指令 **AT+CIPMODE=0**关闭透传。
退出透传:通过向wifi模块连续发送3个+(每个+号之间 超过10ms,这样认为是连续三次发送+)

  1. 设置工作模式:AT+CWMODE=2

数字1表示为STA模式,只能加入到已有的无线网络
数字2表示AP模式,相当于路由器创建一个无线网络,可让其他的终端连接此网络
数字3表示同时兼容AP和STA模式

  1. 重启模块:AT+RST

此处应延时2~4秒等待WiFi模块重启完成

  1. 配置AP模式无线参数:AT+CWSAP=“WiFi名称”,“WiFi密码”
  2. 检测IP是否获得:AT+CIFSR
  3. 启动多路连接模式:AT+CIPMUX=1
  4. 配置服务器:AT+CIPSERVER=1
  5. 设置服务器超时时间:AT+CIPSTO=时间(单位为s秒)

注意第6,7步完成之后需要延时500ms

2.4-----下载运行后,手机或者笔记本可看见自定义名称的WiFi网络,输入密码即可连接。

串口有线连接
无线网络
WiFi模块
stm32单片机
手机或者PC机

2.5-----由上图知三个设备之间的连接方式。到此步骤我们已经完成了硬件环境配置及基本连接,下面将对数据处理进行讲解。

三.数据处理

  • 序言

     我采用的是正点原子资料包中的网络调试助手。因为之前一直不知道数据传输格式,所以困扰了一下午。最后总结了两种方法。
     方法1:将串口2收到的WiFi数据用串口1打印在串口调试助手上面。
     方法2:直接用MDK软件debug然后将WiFi数据打印出来。(不会的可以参考正点原子stm32视频教程)
     经过实践,个人推荐大家使用方法2,数据观察更直观形象。
    

数据格式说明:
1.wifi数据结尾为\r\n,其ASCII码值为0x0D、0x0A。
2.网络调试助手端数据格式–> 数组第8位为字符逗号(0x2C),
第9位开始为数据长度(以每个数字为一个字节存储),一直到字符冒号(0x3A)结束.
原始数据从数组第(10+数据长度)位开始.

#include "WifiDataDeal.h"

char wifi_data[Max_data_len];//提取数据值
u8 wifi_data_len=0;
u8 flag=0;
/*****************************************************************
*Module Name: LJH_1999
*Module Date:	2019/07/06
*Function: Wifi_Data_parsing(void)
*Description: 对串口2接收到的原始数据进行解析,并且将实际数据提取出来。
*Called By: /*此处为调用WiFi数据的各函数*/
*Input: 无
*Output:  wifi_data[Max_data_len]数组中存储网络调试助手端发送的数据
*Return://函数返回值的说明
*Others://其他说明
*****************************************************************/
void Wifi_Data_parsing()
{
	u8 post=9;//取初始数据位置
	u8 i;
	if(USART2_RX_STA&(1<<15))	//接收到数据
	{	
			wifi_data_len = USART2_RX_BUF[post]-48;
			while(USART2_RX_BUF[++post] != 0x3A)		//求出数据长度(int型)
			{
				wifi_data_len = wifi_data_len*10 + USART2_RX_BUF[post]-48;
			}
			
			for(i=0 ; i<wifi_data_len ; i++)
			{
				wifi_data[i] = USART2_RX_BUF[++post];
			}
			wifi_data[wifi_data_len] = 0;//字符串结束标志
			
			flag = 1;//标志接收到数据
			
			USART2_RX_STA=0;
	}
}

前面提过,串口接收到的数据其长度值以十六进制从数组的第9位开始存储,直到遇见字符冒号(0x3A)截止。故开始先从原始数据的第九位开始去获取本次数据的长度wifi_data_len,再从字符冒号之后开始**取实际数据**。(例如:数据长度为2,则原始数据第九位为0x32,实际数据从第11位开始;数据长度为12,则原始数据第九位为0x31,第十位为0x32,实际数据从第12位开始;其他情况以此类推)

注:
1.wifi_data_len = USART2_RX_BUF[post]-48;一句中减轻48是因为字符0其十进制表示为48,故此语句是将字符型数字转化为int整型数据。
2.在数据提取完成之后一定要在最后加一个0;否则数据拿去进行字符串判断时可能会出错。

四.附表及项目资料包

资料包的密码为:wifi
请点击此处转到百度云盘下载提取码为e89i

在这里插入图片描述
在这里插入图片描述

  • 64
    点赞
  • 654
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: 如果要学习STM32单片机,有很多可用的学习资料和资源供你参考和学习。首先,STMicroelectronics官方网站是最好的信息来源之一。在官方网站上,你可以找到Data Briefs、Technical Notes、Application Notes和User Manuals等多种文档,这些文档可以帮助你了解不同型号的STM32单片机,并提供详细的技术细节和应用示例。 此外,STMicroelectronics还提供了免费的配套开发工具和软件,如STM32CubeIDE、STM32CubeMX和HAL库等。这些工具可以帮助你开发、调试和烧写STM32单片机的代码,并提供丰富的代码库和实例,方便你快速入门。 除了官方资料外,网络上还有大量的STM32单片机学习资料和教程。你可以通过搜索引擎找到许多相关博客、论坛和视频教程,其中括了解STM32单片机的基础知识、使用各种开发环境和编程语言进行开发,以及实际项目的应用示例等。这些资源可以帮助你深入学习STM32单片机的各个方面,并解决你在学习和项目中遇到的问题。 同时,还有一些出版的教材和参考书籍,如《精通STM32单片机》、《STM32权威指南》等,这些书籍以系统化的方式解释了STM32单片机的原理和应用,可以作为深入学习的参考资料。 总之,STM32单片机学习资料是丰富多样的,从官方资料到网络资源、教程和书籍都是很好的学习参考。结合多种源的学习材料和实践经验,你可以更好地掌握STM32单片机的开发和应用。 ### 回答2: STM32是一种广泛应用于嵌入式系统开发的32位单片机系列,具有高性能、低功耗和丰富的外设资源。学习STM32单片机需要掌握其基本原理、应用开发和编程技术等方面的知识。 首先,可以通过阅读官方提供的STM32单片机资料进行学习。STMicroelectronics公司为STM32系列提供了官方的技术手册、应用笔记、教程和参考设计等资料,其中含了单片机的内部结构、外设使用方法以及开发工具的介绍,有助于初学者对单片机的基本概念和应用进行了解。 其次,可以参考一些经典的STM32单片机编程教程和实例进行学习。在互联网上有很多相关的学习资源,括视频教程、电子书和在线课程等,这些资源可以帮助初学者快速掌握STM32单片机的编程技巧和开发流程,了解如何使用STM32 HAL库和CubeMX软件进行开发。 此外,参加STM32单片机的实践项目和实验也是非常重要的学习方式。可以利用开发板或者仿真软件进行实验,从简单的LED闪烁开始,逐步深入学习各种外设的使用方法,例如串口通信、PWM输出和ADC采集等,通过实际操作来加深对STM32单片机的理解和应用。 最后,与其他STM32单片机学习者进行交流和探讨也是学习的重要途径。可以加入相关的技术社区、论坛或者参加线下的技术交流活动,与其他爱好者一起交流心得、解决问题和分享经验,共同进步。 综上所述,学习STM32单片机需要结合官方资料、编程教程、实践项目和交流讨论等多种方式,通过理论学习和实践操作相结合的方式来提高自己的技能和能力。只有不断学习和实践,才能逐步掌握STM32单片机的应用开发技术,发挥出其强大的功能。 ### 回答3: STM32单片机是一款由意法半导体公司推出的32位ARM Cortex-M系列微控制器。学习STM32单片机需要掌握一定的电子基础知识和C语言编程能力。以下是一些可供学习STM32单片机资料推荐: 1. 官方资料:意法半导体官方网站提供了丰富的STM32单片机系列产品的技术文档、数据手册、应用笔记以及示例代码等,这些资料对于初学者和进阶者都非常有帮助。 2. 教材和教程:市面上有很多针对STM32单片机的教材和教程,其中一些是由专业人士撰写的,具有系统性和深度,适合系统学习。另外,也有一些网上的教程、博客和视频教程,可以提供实际操作示例和案例分析。 3. 社区论坛和博客:STM32单片机的学习过程中,遇到问题时可以向社区论坛提问和交流。ST社区、电子爱好者论坛、知乎等地都有相关的技术讨论区,可以从其他人的经验中获得帮助。此外,还有一些博客是由学习STM32的爱好者写的,分享各种学习心得和项目经验。 4. 实验平台和开发板:购买一块能够容易上手的STM32开发板,如ST-Link V3 Mini开发板等,这样可以借助官方提供的开发环境和示例程序,快速上手进行实验和开发。 5. 项目实战:在学习的过程中,可以选择一些具体的项目进行实战。可以从简单的LED闪烁开始,逐步扩展到涉及串口通信、蓝牙、传感器和外设等更复杂的项目。 总之,学习STM32单片机需要结合官方资料、教材和教程、社区讨论和项目实战等多种资源,根据自己的兴趣和基础情况选择合适的学习路径,坚持实践,不断积累经验,就能够逐渐掌握STM32单片机的原理和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值