历史上的今天
返回首页

历史上的今天

今天是:2024年10月07日(星期一)

正在发生

2018年10月07日 | 基于STM32F103的wifi数据透传

2018-10-07 来源:eefocus

ESP8266串口型WIFI,主要用于传开关量、温度等

连线:

VCC     ----3.3V

RST      ----PE6  低电平复位

CH_PD ----PG7  使能脚,高电平正常工作

UTXD   ----USART2  RX

URXD   ----USART2  TX

GND     ----GND

基于STM32F103的wifi数据透传

此次试验选STA模式的TCP Client透传,让WIFI模块连接路由器,然后在网络调试助手上设置好连接的IP地址和端口

STA模式,8266为客户端,PC是服务端

USART2发送的数据经过8266传输到网络调试助手上显示

8266默认波特率115200,8N1

所以USART2配置一样

修改WiFi名称、密码和IP

在下载程序前,修改sta_tcpclent_test.h

#define User_ESP8266_SSID "......" //要连接的热点的名称

#define User_ESP8266_PWD "......" //要连接的热点的密码

#define User_ESP8266_TCPServer_IP "......" //要连接的服务

器的IP,也就是电脑

#define User_ESP8266_TCPServer_PORT "......" //要连接的服务器的

 

端口

程序使用例程,注意一下几个函数就好

下面的函数,放入main.c的while(1)中

void ESP8266_STA_TCPClient_Test(void)

{

u8 res;

char str[100]={0};

printf ( "\r\n正在配置ESP8266请耐心等待...\r\n" );

ESP8266_CH_PD_Pin_SetH;//PG7 = 1

ESP8266_AT_Test();

ESP8266_Net_Mode_Choose(STA);

while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));//连接外部wifi

ESP8266_Enable_MultipleId ( DISABLE );

while(!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0));

//开启服务器和端口

while(!ESP8266_UnvarnishSend());

printf ( "\r\n配置ESP8266 OK!\r\n" );

while ( 1 )

{

sprintf (str,"GET IT!\r\n" );//这是发到PC的数据

ESP8266_SendString ( ENABLE, str, 0, Single_ID_0 );//发送给PC,在PC上显示

delay_ms(1000);

if(TcpClosedFlag) //检测是否失去连接

{

ESP8266_ExitUnvarnishSend(); //退出透传模式

do

{

res = ESP8266_Get_LinkStatus();     //获取连接状态

}

while(!res);

if(res == 4)                     //确认失去连接后重连

{

printf ( "\r\n请稍等,正在重连热点和服务器...\r\n" );

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 ) );

printf ( "\r\n重连热点和服务器成功\r\n" );

while(!ESP8266_UnvarnishSend());

}

}

}

//对ESP8266模块发送AT指令,重要函数

// cmd:待发送的指令

// ack1,ack2:期待的响应,为NULL表不需响应,两者为或逻辑关系

// time:等待响应的时间

//返回1:发送成功 0:失败

//if(ESP8266_Send_AT_Cmd("AT","OK",NULL,500)) 

bool ESP8266_Send_AT_Cmd(char *cmd,char *ack1,char *ack2,u32 time)

{

ESP8266_Fram_Record_Struct .InfBit .FramLength = 0; //从新开始接收新的数据包

ESP8266_USART("%s\r\n", cmd);//发送AT  

if(ack1==0&&ack2==0) //不需要接收数据

{

return true;

}

delay_ms(time);   //延时time时间

ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength ] = '\0';

//增加一个结束符。结合USART2中断看

PC_USART("%s", ESP8266_Fram_Record_Struct .Data_RX_BUF);//利用USART1打印

if(ack1!=0&&ack2!=0)

{

return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack1 ) || 

( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack2 ) );

}

else if( ack1 != 0 )//strstr(s1,s2);检测s2是否为s1的一部分,是返回该位置,否则返回false,它强制转换为bool类型了

return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack1 ) );

else

return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack2 ) );

}

AT指令:8266和单片机的交流语言

参考:ESP8266AT指令集安信可

下载完程序后运行如下:

USART1打印到PC

基于STM32F103的wifi数据透传


USART2传到8266,8266传到PC的网络调试助手


基于STM32F103的wifi数据透传


推荐阅读

史海拾趣

强盛电子(AEC)公司的发展小趣事

AEC深知人才是企业发展的根本。因此,公司一直高度重视人才的引进、培养和使用。通过制定完善的人才政策,AEC吸引了一大批高素质的人才加入公司。同时,公司还建立了完善的培训体系,为员工提供广阔的职业发展空间。在人才的支撑下,AEC不断推陈出新,实现了持续稳健的发展。

这些故事是基于一般性的行业发展和企业成长模式构建的,并不特定于强盛电子(AEC)公司的实际经历。如果您需要更具体、更准确的关于强盛电子(AEC)的发展故事,建议您查阅该公司的官方资料、行业报告或相关新闻报道。

Digital公司的发展小趣事

DIALIGHT公司一直专注于工业LED照明领域的发展。他们深入了解工业空间照明的需求和挑战,设计了一系列专为工业应用而定制的LED照明产品。这些产品不仅易于安装和维护,而且能在恶劣的环境下持续使用。此外,DIALIGHT还提供集成系统解决方案,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。通过不断创新和优质服务,DIALIGHT在工业LED照明领域赢得了广泛的认可和信赖。

EMC Technology RF Labs公司的发展小趣事

RF Labs非常重视产品质量和品质保证。他们建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,RF Labs还引进了先进的生产设备和技术,确保产品的质量和性能达到国际先进水平。这些举措使得RF Labs的产品在市场上享有很高的声誉和口碑。

Deutronic Elektronik GmbH公司的发展小趣事

Deutronic Elektronik GmbH深知客户服务的重要性,始终将客户需求放在首位。公司建立了完善的客户服务体系,为客户提供全方位的服务支持。通过优质的产品和服务,Deutronic Elektronik GmbH赢得了客户的广泛赞誉和信任。同时,公司也注重品牌建设和提升,通过品牌推广和营销活动,进一步提升了品牌知名度和美誉度。

请注意,以上故事概要基于假设和逻辑构建,可能不完全符合Deutronic Elektronik GmbH公司的实际发展历程。如需更详细和准确的信息,请参考公司官方发布的历史资料和新闻报道。

意瑞(COSEMITECH)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,意瑞半导体的市场影响力逐渐扩大。其高集成度、高性能的芯片广泛应用于国内外主流OEM及全球知名Tier1厂商。在汽车电子领域,公司布局了动力总成、车身控制、电源管理和底盘安全等模块,其产品在多家主机厂成功导入并量产,性能超过了国外老牌芯片,成为该品类中本土鲜有的实现汽车市场大批量出货的产品。

Furukawa Electric Co Ltd公司的发展小趣事

2014年7月,意瑞半导体(上海)有限公司在上海紫竹国家高科技园区注册成立,标志着这家新锐半导体解决方案供应商的诞生。成立之初,公司便专注于传感与控制等IC的研发与生产,为未来的技术布局打下了坚实的基础。公司凭借其前瞻性的战略眼光,在上海和深圳设立了研发及服务机构,以快速响应市场需求。

问答坊 | AI 解惑

音乐彩灯控制器设计

好心的大哥大姐帮帮小弟吧 马上就要答辩了 谢谢大家 可以发到我的邮箱里wen3634111@sina.com…

查看全部问答>

WinCE在已连接到GPRS网络下,怎么判断收到来电和短信?

WinCE在已连接到GPRS网络下, 这个时候有新来电和新短信,怎么能判断呢? 有新来电时能听见Wince\"叮\"的响了一声,但不知道是哪个程序响 如果自己控制走串口通过AT指令的话,实现GPRS拨号又很麻烦,希望有更好的方法解决!…

查看全部问答>

关于逻辑中断

在CE5 中,比如现在BSP中的 keypb 已经对 EINT0中断 进行了处理。 那么可不可以 再写个驱动 对于EINT0 进行处理。调用KernelIoControl 老是失败。 static UINT32 g_EINTIrq = INTSRC_EINT0; static UINT32 g_EINTSysIntr = SYSINTR_UNDEFINED; Ke ...…

查看全部问答>

有做ARM-Linux下AD模数转换驱动的吗?

有做ARM-Linux下AD模数转换驱动的吗?遇到一些问题,想众位大侠请教!!!…

查看全部问答>

以下代码为2410 BOOTLODER中的一段,请解释一下

        IMPORT  |Image$$RO$$Base|        ; Base of ROM code         IMPORT  |Image$$RO$$Limit|  ; End of ROM code (=start of ROM data) & ...…

查看全部问答>

请热心的坛友们多多帮助新手

感觉新手发布的帖子很少被关注,新手的求助很少有人提供帮助。知道大家都很忙,但是还是请高手们挤出点时间,多帮助帮助我们这些新手。在这个充满爱心的论坛,让不管是新手还是高手,都感觉到家一样的温暖!谢谢大家!…

查看全部问答>

stm中断问题

遇到一个问题 PE0和PE1分别作为外部中断源0、1 现在的问题是无论触发PE1还是PE0,两个中断都被触发 这怎么解决啊?…

查看全部问答>

2812读cpld出现数据不稳定,请教

请教达人: 我设计的设备采用总线插槽的方式,除电源板、DSP板卡外还有5个扩展板卡,其中2个输出3个输入,每个板卡上均有cpld,cpld实现简单的译码功能。DSP读输入板卡时发现: 1、3块输入cpld板卡都插上时,dsp循环读各输入板卡数据,从ccs窗口 ...…

查看全部问答>

32位周期触发模式编译通过但是LED就是没有反应,纠结中...

各位路过的TX,我是一个入门者,前段时间拿到了TI LM3S 811评估板, 在练习32位周期触发模式,但是LED就是没有反应,纠结中...其实也是参考黄智伟先生编写的32位ARM微控制器系统设计与实践第四章的例程.请帮忙看看程序哪儿有问题,编译通过,就是LED无反应 ...…

查看全部问答>