IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP32+TFTLCD实现WiFi天气语音播报(七) -> 正文阅读

[嵌入式]ESP32+TFTLCD实现WiFi天气语音播报(七)

ESP8266WiFi模块



前言

ESP8266 WIFI串口通信模块需要用到的资源都在这了
提取码:lwm2


一、模块简介

1、原理图

原理图呈上,ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置
TCP/IP 协议栈,能够实现串口与 WIFI 之间的转换。
在这里插入图片描述
注:我们使用的模块已经安装在板子上,模块通过 6 个 2.54mm 间距的排针与外部连接
在这里插入图片描述

2、功能参数说明

模块支持串口转WIFI STA、串口转AP和WIFI STA+WIFI AP 的模式。
ATK-ESP8266 模块支持 STA/AP/STA+AP 三种工作模式。

  • STA 模式:ESP8266 模块通过路由器连接互联网,手机或电脑通过互联网实
    现对设备的远程控制。
  • AP 模式:默认模式 ATK_ESP8266 模块作为热点,实现手机或电脑直接与模
    块通信,实现局域网无线控制。
  • STA+AP 模式:两种模式的共存模式,(STA 模式)即可以通过路由器连接到
    互联网,并通过互联网控制设备;(AP 模式)也可作为 wifi 热点,其他 wifi
    设备连接到模块。这样实现局域网和广域网的无缝切换,方便操作。

要想进行串口通信,可以通过板载usb插口连接电脑,也可以通过 USB 转 TTL 模块
下面是模块连接图
在这里插入图片描述
在使用USB转TTL模块与电脑连接之后,就可以使用串口调试助手进行WIFI模块的调试了。串口调试助手默认波特率为115200,在使用串口调试助手的时候如果接受到的是乱码可以试一下其他的波特率(9600)。

3、AT指令

AT 指令可以细分为四种类型:
在这里插入图片描述
注意:
? 不是每条 AT 指令都具备上述 4 种类型的命令。
? [ ] 括号内为缺省值,不必填写或者可能不显示。
? 使?双引号表示字符串数据 ”string”,例如:AT+CWSAP=“ESP756290”,“21030826”,1,4
? 波特率为 115200,串?设置如图 2-1 所示。
? AT 指令不区分?小写,以回?换?符结尾 /r/n。

基础 AT 指令列表如表 2.2.3.1 所示:
在这里插入图片描述

ESP8266可以连接当前环境的热点,与服务器建立TCP连接,传输数据。
一般步骤为:
AT+CWMODE=1:设置工作模式(STA模式)
AT+RST:模块重启(生效工作模式)
AT+CWJAP=“swd”,“12345678”:连接当前环境的WIFI热点(热点名,密码)
AT+CIPMUX=0:设置单路连接模式
AT+CIPSTART=“TCP”,“xxx.xxx.xxx.xxx”,xxxx:建立TCP连接
AT+CIPMODE=1:开启透传模式
AT+CIPSEND:透传模式下,传输数据
+++:退出透传模式

二、代码实现

1.USART2串口

这里用到的串口是USART2 ,要进行串口初始化

代码如下:

//串口初始化
//USART2	
//TX:PA2		复用推挽输出
//RX:PA3		浮空输入/上拉
//1 8 0 1
void Usart3_Config(uint32_t brr)
{
	//开时钟
	WIFI_PIN_CLK_CMD(WIFI_PIN_CLK, ENABLE);
	WIFI_UART_CLK_CMD(WIFI_UART_CLK, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = WIFI_TX_PIN;
	GPIO_Init(WIFI_PIN_PORT, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Pin = WIFI_RX_PIN;
	GPIO_Init(WIFI_PIN_PORT, &GPIO_InitStructure);
	
	USART_InitTypeDef USART_InitStructuer;
	USART_InitStructuer.USART_BaudRate = brr;
	USART_InitStructuer.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructuer.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	USART_InitStructuer.USART_Parity = USART_Parity_No;
	USART_InitStructuer.USART_StopBits = USART_StopBits_1;
	USART_InitStructuer.USART_WordLength = USART_WordLength_8b;
	USART_Init(WIFI_UART, &USART_InitStructuer);
	//使能接收中断
	USART_ITConfig(WIFI_UART, USART_IT_RXNE, ENABLE);
	USART_ITConfig(WIFI_UART, USART_IT_IDLE, ENABLE);
	//配置NVIC
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_InitStructure.NVIC_IRQChannel = WIFI_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
	//使能串口
	USART_Cmd(WIFI_UART, ENABLE);
	
	ESP8266_EN_CLK_INIT(ESP8266_EN_CLK, ENABLE);
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = ESP8266_EN_PIN;
	GPIO_Init(ESP8266_EN_PORT, &GPIO_InitStructure);
	
	ESP8266_ENABLE();
	
}

2.初始化ESP8266

代码如下:

//初始化 ESP8266
//成功返回 0   失败 >0
uint8_t ESP8266_Init(void)
{
	uint8_t recv = 0;
	Usart3_Config(115200);
	Delay_ms(5000);
	printf("退出透传\r\n");
	ESP8266_SendCmd_RecAck("+++", NULL, 100, 1);
	printf(" TSET esp8266\r\n");
	recv = ESP8266_SendCmd_RecAck("AT\r\n", "OK", 100, 2);
	if(recv)	return recv;
	
	/*********添加内容************/
	recv = ESP8266_SendCmd_RecAck("AT+RST\r\n", "ready", 10000, 1);
	//先连接固定wifi热点
	//	wifi名字	密码
	recv = ESP8266_SendCmd_RecAck("AT+CWJAP=\"xyd\",\"12345678\"\r\n", "WIFI GOT IP", 10000, 2);
	/****************************/
	
	printf("1111111111111111111111111111111111111111111\r\n");
	
	
	recv = ESP8266_SendCmd_RecAck("AT+RST\r\n", "ready", 10000, 1);
	//设置station模式
	recv = ESP8266_SendCmd_RecAck("AT+CWMODE=1\r\n", "OK", 500, 1);
	//设置上电自动连接wifi
	recv = ESP8266_SendCmd_RecAck("AT+CWAUTOCONN=1\r\n", "OK", 10000, 1);
	printf("测试通过,等待自动接入WIFI\r\n");
	recv = ESP8266_SendCmd_RecAck(NULL, "WIFI GOT IP", 20000, 1);
//	if(recv){//连接超时 进入一键配网
//		ESP8266_ConnectHotspot();
//	}
	printf("接入WIFI成功");		
	return 0;
}

这里的WiFi名称和密码要换成你自己的

//先连接固定wifi热点
	//	wifi名字	密码
	recv = ESP8266_SendCmd_RecAck("AT+CWJAP=\"xyd\",\"12345678\"\r\n", "WIFI GOT IP", 10000, 2);

不要忘了在.h文件里面进行声明。

代码在这 提取码:lwm2


总结

串口调试助手的使用就不在说明了,有什么不足还请指出,谢谢。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:54:59  更:2021-11-17 12:57:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:45:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码