【STM32C092RC 测评】STM32C092连接ESP8266获取天气预报
本帖最后由 龙鳞铁碎牙 于 2025-5-22 18:52 编辑#技术资源# #每日话题# #申请原创#
拿到STM32C092有一段时间了,一直想用它来做些高级的应用。手头上刚好有个ESP8266-01S模块,于是就拿来连接到,通过无线WIFI连接
后获取心知天气预报数据,然后通过串口助手打印输出来!!!!!!
整个模块架构如下所示:
对应板子上连接如下:
下面是原理图上的对应引脚,将USART1配置为中断,USART不配置中断
STM32C092和ESP8266-01S引脚连接图如下:
ESP8266连接流程如下:
依次利用串口向ESP8266输入以下命令。
[*]AT\r\n
检查ESP8266模块连接是否正常
[*]AT+CWMODE=1\r\n
配置模块为Sta模式
[*]AT+CWJAP="WIFI名称","WIFI密码"\r\n
连接指定WIFI,确保为自己的WIFI
[*]AT+CIPMUX=0\r\n
设置成单连接
[*]AT+CIPSTART="TCP","api.seniverse.com",80\r\n
创建TCP连接,IP地址为电脑的IP,串口为电脑监听的端口号
[*]AT+CIPMODE=1\r\n
进入透传模式,进入到透传模式后AT指令就会失效,需要退出后才能生效
[*]AT+CIPSEND\r\n
准备向服务器发送请求,前面都成功的前提下发送完这个指令后会出现一个>,此时输入发送信息即可
这里使用心知天气进行天气预报获取和测试!
核心代码如下:
HAL_UART_Receive_IT(ESP8266_huart, (uint8_t*)&recvByte, (uint16_t)1);
ESP8266_Clear();
//while(ESP8266_SendCmd("AT+RST\r\n", "OK"))
//HAL_Delay(500);
while(ESP8266_SendCmd("AT\r\n", "OK"));
//HAL_Delay(500);
while(ESP8266_SendCmd("ATE1\r\n", "OK"));
//HAL_Delay(500);
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"));
//HAL_Delay(500);
while(ESP8266_SendCmd(WIFI_Start, "OK"));
//HAL_Delay(500);
while(ESP8266_SendCmd("AT+CIPMUX=0\r\n", "OK"));
printf("welcome \r\n");
ESP8266_Init();
while(ESP8266_SendCmd("AT+CIPSTART=\"TCP\",\"api.seniverse.com\",80\r\n", "OK"));
//while(ESP8266_SendCmd("AT+CIPSTART=\"TCP\",\"api.openweathermap.org\",80\r\n", "OK"));
while(ESP8266_SendCmd("AT+CIPMODE=1\r\n", "OK"));
ESP8266_SendData(TX_Data,strlen(TX_Data));
HAL_Delay(500);
printf("%s\r\n",esp8266_buf);
ESP8266_Send("+++");
ESP8266_Send("+++");这句必须要加上,不然获取天气信息后不退出,ESP8266会出问题!!
烧录大板子上进行测试,打开串口助手,查看打印信息!
可以看到成都天气预报和ESP8266上面的是一致的。
下面切换到深圳
"GET https://api.seniverse.com/v3/weather/now.json?key=SfobYEGioM5A6dRce&location=shenzhen&language=zh-Hans&unit=c\r\n";
改成上面语句
可以看到ESP8266获取的天气预报和深圳天气一致
加入cjson,解析天气信息
使用Arduino IDE或其他工具为ESP8266编写代码,使其连接到WiFi网络并从一个天气API 我觉得这就属于画蛇添足的应用。ESP本身可以直接就完成所有功能。 这个项目很实在啊,分享的很好,内容也很多,mark一下慢慢学习。 ESP8266的功耗较大,确保电源供应稳定,避免因电压不足导致模块复位或通信失败。 接收缓冲区需足够大 ESP8266 启动时电流可达 200mA 以上,需 电源稳定 设置合理的超时时间,避免程序卡死 在电源输入端添加去耦电容(如100μF电解电容+0.1μF陶瓷电容),减少电源噪声。 cJSON库解析JSON时会动态分配内存 ESP8266启动时需要瞬时大电流 进入透传模式后,AT指令会失效,需发送+++退出透传模式才能继续执行其他指令 实现错误处理机制,以应对网络问题、API限制或数据解析错误。 用 DMA 方式处理 USART 通信 优化代码以减少内存使用和提高执行效率 先通过串口调试助手验证ESP8266的AT指令响应,再集成到STM32中 添加错误处理机制,如重试机制,确保在网络不稳定时仍能正常获取数据。 通过AT指令激活模块、连接Wi-Fi、测试通信。 设置合理的超时时间,避免因网络延迟导致的通信失败。 使用HTTPS连接
页:
[1]
2