当前位置: 首页> 游戏> 评测 > 公司简介如何写_望野王绩_潍坊网站建设公司_长尾关键词搜索网站

公司简介如何写_望野王绩_潍坊网站建设公司_长尾关键词搜索网站

时间:2025/7/11 1:33:05来源:https://blog.csdn.net/zy2232652/article/details/142419057 浏览次数:0次
公司简介如何写_望野王绩_潍坊网站建设公司_长尾关键词搜索网站

文章目录

    • 一.概要
    • 二.ESP8266 WIFI模块主要性能参数
    • 三.ESP8266 WIFI模块芯片内部框图
    • 四.ESP8266 WIFI模块原理图
    • 五.ESP8266 WIFI模块与单片机通讯方法
      • 1.硬件连接
      • 2.ESP8266模块AT指令介绍
    • 六.STM32单片机与ESP8266WIFI模块通讯实验
      • 1.硬件准备
      • 2.软件工程
      • 3.软件主要代码
      • 4.实验效果
    • 七.CubeMX工程源代码下载
    • 八.小结

一.概要

ESP8266 是一款高性能的 WIFI 串口模块,实现透明传输。只要有一定的串口知识,不需要知道 WIFI 原理就可以上手,在业内应用广泛。
ESP8266 是一个非常强大的 WIFI 模块,可以利用串口与单片机进行通讯,从而编程实现控制 ESP8266。利用 ESP8266 可以访问电脑服务器实现TCP/IP协议通讯。
该系列模块支持标准的IEEE802.11b/g/n协议,内置完整的TCP/IP协议栈。用户可以使用该系列模块为现有的设备添加联网功能,也可以构建独立的网络控制器。
在这里插入图片描述

在这里插入图片描述

二.ESP8266 WIFI模块主要性能参数

1.最小的 802.11b/g/n Wi-Fi SOC 模块
2.采用低功率32位CPU,可兼作应用处理器
3.主频最高可达160MHz
4.内置 10 bit 高精度 ADC
5.支持UART/GPIO/IC/PWM/ADC/HSPI等接口
6.集成 Wi-FiMAC/ BB/RF/PA/LNA
7.支持多种休眠模式,深度睡眠电流低至20uA
8.内嵌 Lwip 协议栈
9.支持STA/AP/STA+AP 工作模式
10.支持 Smart Config/AirKiss;一键配网
11.串口速率最高可达4Mbps
12.通用 AT 指令可快速上手
13.支持 SDK 二次开发
14.支持串口本地升级和远程固件升级(FOTA)
在这里插入图片描述

模块接口说明:
在这里插入图片描述

1.TX 模块UART串口发送脚
2.GND 接地
3.EN 芯片使能端,高电平有效
4.IO2 GPIO脚
5.RST 模块复位脚
6.IO0 模式选择脚,下载模式:外部拉低;运行模式:悬空或者外部拉高
7.3V3 3.3V 供电,外部供电电源输出电流建议在500mA以上
8.RX 模块UART串口接收脚

三.ESP8266 WIFI模块芯片内部框图

ESP8266 是高性能无线 SoC,以最低成本提供最大实用性,为 Wi-Fi 功能嵌入其他
系统提供无限可能。
ESP8266 拥有完整的且自成体系的Wi-Fi网络功能,既能够独立应用,也可以作为从
机搭载于其他主机MCU运行。当ESP8266独立应用时,能够直接从外接flash中启动。
内置的高速缓冲存储器有利于提高系统性能,并且优化存储系统。
另外⼀种情况是, ESP8266 只需通过 SPI/SDIO 接口或 UART 接口即可作为 Wi-Fi
适配器,应用到基于任何微控制器设计中。
ESP8266 强大的片上处理和存储能力,使其可通过GPIO口集成传感器及其他应用的
特定设备,大大地降低了前期开发的成本。

在这里插入图片描述

四.ESP8266 WIFI模块原理图

在这里插入图片描述

五.ESP8266 WIFI模块与单片机通讯方法

1.硬件连接

一般模块不需要固件下载更新,单片机通过串口跟模块通讯就能连接路由器,单片机跟模块通常连接如下:

在这里插入图片描述

2.ESP8266模块AT指令介绍

在ESP8266的开发过程中,AT指令方法是最常用的方法,无需花大量的时间去熟悉环境,开发速度快。
AT指令是一种串口通信协议,是以AT开头的一个字符串,每个指令执行成功与否都有相应的返回,都是ASCII码字符串操作,每个发送的AT指令都需要回车换行符结束。
最常见的就是AT指令就是查询模块通讯是否正常,指令如下:
单片机发送:AT+(回车换行符)
模块响应:OK

ESP8266模块的主要AT指令如下:
串口波特率115200,8位数据,1位停止位,无校验
在这里插入图片描述

ESP8266配置成客户端模式,登录电脑服务器端口主要AT指令流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六.STM32单片机与ESP8266WIFI模块通讯实验

1.硬件准备

STLINK接STM32F407VET6开发板,STLINK接电脑USB口,WIFI模块如下图插在板子上。

主要信号:
板子PC13<—>WIFI模块RST脚
板子PC6<------>WIFI模块RX
板子PC7<------>WIFI模块TX
板子3.3V<----->WIFI模块3V3
板子GND<---->WIFI模块GND

在这里插入图片描述

2.软件工程

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F407VE,再双击就创建新的工程
在这里插入图片描述

配置下载口引脚
在这里插入图片描述

配置外部晶振引脚
在这里插入图片描述

配置系统主频168Mhz,使用外部晶振
在这里插入图片描述

配置PC6,PC7配置成串口6收发脚,波特率115200,8位数据,无校验,1位停止位。

在这里插入图片描述

串口6中断使能
在这里插入图片描述
PC13配置成输出,用于控制模块的复位脚,低电平模块会复位
在这里插入图片描述

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述

添加代码
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.软件主要代码

串口数据接收相关代码


void SysTick_Handler(void)
{/* USER CODE BEGIN SysTick_IRQn 0 *//* USER CODE END SysTick_IRQn 0 */HAL_IncTick();/* USER CODE BEGIN SysTick_IRQn 1 */
UART_RecvDealwith();/* USER CODE END SysTick_IRQn 1 */
}volatile uint8_t UartRxData;
uint8_t UartTxbuf[500]={1,2,3,4,5,6,7,8,9,10};
uint8_t UartRxbuf[500],UartIntRxbuf[500],UartRxIndex=0,UartRxFlag,UartRxLen=0,UartRxTimer,UartRxOKFlag,UartIntRxLen;//接收标志函数,返回0说明没收据接收,返回1说明有数据收到
uint8_t Uart_RecvFlag(void)
{if(UartRxOKFlag==0x55){UartRxOKFlag=0;UartRxLen=UartIntRxLen;memcpy(UartRxbuf,UartIntRxbuf,UartIntRxLen);//把缓冲区的数据,放入需要解析的数组UartIntRxLen=0;return 1;}return 0;
}
//串口2在1字节接收完成回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart==&huart6)//判断是否串口2{UartRxFlag=0x55;//接收标志置位UartIntRxbuf[UartRxIndex]=UartRxData;//数据写入缓冲区UartRxIndex++;//记载数目加1if(UartRxIndex>=500)//缓冲区是500字节,如果存满,归零{UartRxIndex=0;}HAL_UART_Receive_IT(&huart6,(unsigned char*)&UartRxData,1);//继续接收下一字节}}//1ms调用一次,用来判断是否收完一帧
void UART_RecvDealwith(void)
{if(UartRxFlag==0x55){if(UartIntRxLen<UartRxIndex)//UartIntRxLen小于UartRxIndex,说明有收到新的数据,把接收长度增加{UartIntRxLen=UartRxIndex;}else{UartRxTimer++;if(UartRxTimer>=50)//50ms,等待,没收到新数据,说明已经收完一帧{UartRxTimer=0;UartRxFlag=0;UartRxOKFlag=0x55;UartRxIndex=0;}}}
}

main函数代码

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART6_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart6,(unsigned char*)&UartRxData,1);//串口6接收中断使能ESP8266_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */ESP8266_STA_TCPClient_Test();//测试TCP通讯}/* USER CODE END 3 */
}

ESP8266配置相关

#define User_ESP8266_SSID     "CMCC-DAX7"          //wifi名
#define User_ESP8266_PWD      "13588084246"      //wifi密码#define User_ESP8266_TCPServer_IP     "192.168.10.11"     //服务器IP
#define User_ESP8266_TCPServer_PORT   "8888"      //服务器端口号char str[100]={0};ESP8266_AT_Test();printf("正在配置ESP8266\r\n");ESP8266_Net_Mode_Choose(STA);//选择STA模式while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));//连接路由器,用户名,密码ESP8266_Enable_MultipleId ( DISABLE );while(!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0));//连接服务器IP地址跟端口号while(!ESP8266_UnvarnishSend());printf("\r\n配置完成");while ( 1 ){       sprintf (str,"杭州光子物联科技有限公司" );//格式化发送字符串到TCP服务器ESP8266_SendString ( ENABLE, str, 0, Single_ID_0 );HAL_Delay(200);Uart_RecvFlag();//接收数据if(TcpClosedFlag) //判断是否失去连接{ESP8266_ExitUnvarnishSend(); //退出透传模式do{res = ESP8266_Get_LinkStatus();     //获取连接状态}   while(!res);if(res == 4)                     //确认失去连接,重连{               while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, 			User_ESP8266_TCPServer_PORT, Single_ID_0 ) );        } while(!ESP8266_UnvarnishSend());                    }}  //对ESP8266模块发送AT指令
// cmd 待发送的指令
// ack1,ack2;期待的响应,为NULL表不需响应,两者为或逻辑关系
// time 等待响应时间
//返回1发送成功, 0失败
bool ESP8266_Send_AT_Cmd(char *cmd,char *ack1,char *ack2,u32 time)
{ UartRecv_Clear(); //重新接收新的数据包ESP8266_USART("%s\r\n", cmd);if(ack1==0&&ack2==0)     //不需要接收数据{return true;}HAL_Delay(time);   //延时HAL_Delay(1000);if(Uart_RecvFlag()==1){UartRxbuf[UartRxLen]='\0';}if(ack1!=0&&ack2!=0){return ( ( bool ) strstr ( (const char*)UartRxbuf, ack1 ) || ( bool ) strstr ( (const char*)UartRxbuf, ack2 ) );}else if( ack1 != 0 )  //strstr(s1,s2);检测s2是否为s1的一部分,是返回该位置,否则返回false,它强制转换为bool类型了return ( ( bool ) strstr ( (const char*)UartRxbuf, ack1 ) );elsereturn ( ( bool ) strstr ( (const char*)UartRxbuf, ack2 ) );}

4.实验效果

电脑TCP服务器收到WIFI的登录信息还有单片机发出的数据

在这里插入图片描述

七.CubeMX工程源代码下载

通过网盘分享的文件:12.ESP8266 WIFI通信实验.zip
链接: https://pan.baidu.com/s/1YYRLFHz6ZAX-v5-7MVE2gQ 提取码: ag6y

如果链接失效,可以联系博主给最新链接
程序下载下来之后解压就行

八.小结

ESP8266 WIFI模块具备强大的功能,‌能够实现与网络的无缝通信。‌它特别适用于物联网领域,‌能够轻松地通过串行通信接口与STM32单片机连接,‌为智能家居、‌智能照明、‌智能车辆等多种应用场景提供解决方案。

关键字:公司简介如何写_望野王绩_潍坊网站建设公司_长尾关键词搜索网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: