[STM32C0]

【STM32C092RC 测评】STM32C092连接ESP8266获取天气预报

[复制链接]
10214|3
手机看帖
扫描二维码
随时随地手机跟帖
龙鳞铁碎牙|  楼主 | 2025-5-22 12:29 | 显示全部楼层 |阅读模式
本帖最后由 龙鳞铁碎牙 于 2025-5-22 18:52 编辑

#技术资源# #每日话题# #申请原创#
拿到[size=1em]STM32C092有一段时间了,一直想用它来做些高级的应用。手头上刚好有个ESP8266-01S模块,于是就拿来连接到,通过无线WIFI连接
[size=1em]后获取心知天气预报数据,然后通过串口助手打印输出来!!!!!!
整个模块架构如下所示:
70101682ea3d423559.png
对应板子上连接如下:
54651682ea428263e4.png 57678682ea4a23270b.png
下面是原理图上的对应引脚,将USART1配置为中断,USART不配置中断
86878682ea46ef2214.png 14633682ea47937579.png

STM32C092和ESP8266-01S引脚连接图如下:
2980682ea51f71bf5.png
ESP8266连接流程如下:
[backcolor=rgba(255, 255, 255, 0.9)]依次利用串口向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
    准备向服务器发送请求,前面都成功的前提下发送完这个指令后会出现一个>,此时输入发送信息即可
[backcolor=rgba(255, 255, 255, 0.9)]这里使用心知天气[backcolor=rgba(255, 255, 255, 0.9)]进行天气预报获取和测试!

[backcolor=rgba(255, 255, 255, 0.9)]核心代码如下:
[backcolor=rgba(255, 255, 255, 0.9)]        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("+++");

34581682ea6184d9f0.png 41853682ea63999981.png
ESP8266_Send("+++");这句必须要加上,不然获取天气信息后不退出,ESP8266会出问题!!


烧录大板子上进行测试,打开串口助手,查看打印信息!
48161682ea7177387f.png
44823682ea75805d6b.png 可以看到成都天气预报和ESP8266上面的是一致的。

下面切换到深圳
"GET https://api.seniverse.com/v3/weather/now.json?key=SfobYEGioM5A6dRce&location=shenzhen&language=zh-Hans&unit=c\r\n";
改成上面语句
95605682ea7c781efe.png 28340682ea817852f0.png
可以看到ESP8266获取的天气预报和深圳天气一致


加入cjson,解析天气信息
82277682ea445281c4.png
39655682ea69908468.png
5829682ea6bc0db5e.png
19495682ea6f9de83b.png

使用特权

评论回复
tpgf| | 2025-5-27 08:29 | 显示全部楼层
使用Arduino IDE或其他工具为ESP8266编写代码,使其连接到WiFi网络并从一个天气API

使用特权

评论回复
评论
龙鳞铁碎牙 2025-5-27 08:51 回复TA
这个也可以啊 
gejigeji521| | 2025-5-28 20:03 | 显示全部楼层
我觉得这就属于画蛇添足的应用。ESP本身可以直接就完成所有功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

28

帖子

0

粉丝