ESP8266与手机App通信(STM32)

认识模块

        ESP8266是一种低成本的Wi-Fi模块,可用于连接物联网设备,控制器和传感器等。它具有小巧、高度集成和低功耗的特点,因此在物联网应用中被广泛使用。ESP8266模块由Espressif Systems开发,具有单芯片的封装和多种功能,包括Wi-Fi网络连接、GPIO控制、PWM控制和模拟输入/输出等。ESP8266模块支持多种编程语言和开发工具,包括C语言、Lua脚本和Arduino开发环境。ESP8266模块的一个优点是它的成本相对较低,因此可以用于低成本的物联网项目。另外,由于它具有小巧的封装和低功耗的特性,因此它可以在嵌入式系统和移动设备中使用。

        总之,ESP8266模块是一种功能强大、低成本、小巧、低功耗的Wi-Fi模块,非常适合用于物联网和其他嵌入式应用中。

模块与单片机的连接

        我在本次开发中选择的是模块型号为ESP8266-01S,与ESP8266一样,他们都有8个引脚,我们只用得到其中的4个引脚,分别是:

  1. VCC:电源引脚,接收3.3V的直流电源。(也可以接5V)

  2. VCC:电源引脚,接收3.3V的直流电源。

  3. TXD:串行传输引脚,用于发送串行数据。

  4. RXD:串行接收引脚,用于接收串行数据。

        而唯一与ESP8266不同的是,esp8266需要接第5个引脚EN,接在高电平上。

        在与STM32连接时,VCC接3.3V或5V,GND接地,TX接在32单片机的RX上,RX接在32单片机的TX上。我使用的32单片机型号为STM32F407ze,通过查找资料可知,其内部的电路图大致如下图所示:

大致电路图

         我选择把WiFi模块连接到P6上,以下是我的实物连接图(下面那个是我连接的OLED模块,不用理会):

实物连接图

        接下来就是敲代码让他运行起来了。

代码部分

      串口的定义

        首先是定义串口,定义串口1是为了将串口3的收到数据发给电脑看。定义串口3用于WiFi模块的使用。

        uart1.c

        这段代码是用于配置STM32芯片上的UART1串口,并定义了一个函数 send_sring 用于通过UART1发送字符串。

#include "uart.h"

void UART1_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;

	//初始化GPIOA的时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

	//初始化串口1的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	
	//通过结构体初始化串口引脚
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_9 | GPIO_Pin_10;			//配置的引脚
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_AF;				        //复用模式
	GPIO_InitStructure.GPIO_OType 	= GPIO_OType_PP;		            //推挽模式
	GPIO_InitStructure.GPIO_Speed 	= GPIO_Speed_100MHz;	            //速度为100MHz
	GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL;		            //上下拉电阻:无上下拉电阻
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	//选择引脚复用功能
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
	
	//配置串口相关属性
	USART_InitStructure.USART_BaudRate = 115200;						//波特率
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;		    //数据位    
	USART_InitStructure.USART_StopBits = USART_StopBits_1;			    //停止位
	USART_InitStructure.USART_Parity = USART_Parity_No;				    //校验位
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	//无流控
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	    //接收发送模式
	USART_Init(USART1, &USART_InitStructure);
		
	
	
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nazonomaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值