esp8266系列学习(三)——单片机+esp8266获取天气信息

单片机利用8266获取天气信息

 

1、esp8266从联网到云端取数据的原理

 

2、使用esp8266模块获取天气的AT指令设置方法

(1)使用串口发送指令AT+CWMODE=1设置模块Wi-Fi应用模式为Station模式;

 

(2)发送指令AT+RST重启模块使应用模式更改生效;

 

(3)发送指令AT+CWJAP =”ssid”,”pwd”连接AP;

 

(4)发送指令AT+CIPMUX=0设置模块为单路连接模式,模块默认为单路连接模式;

 

(5)发送指令AT+CIPSTART=”TCP”,” api.seniverse.com”,80 与服务器建立TCP连接 ;

 

(6)发送指令AT+CIPMODE=1设置模块传输模式为透传模式;

 

(7)发送指令AT+CIPSEND开启透传模式向服务器发送数据,模块收到此指令后先换行后返回“>”

 

(8)剩下只需要发送 GET https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c,就能获取到天气信息了。

 

说明:

天气网站:心知天气

tcp server:  api.seniverse.com  端口:80

使用域名解析工具对“api.seniverse.com”进行解析,

得到该域名绑定的ip地址为:116.62.81.138

 

返回数据格式:心知天气返回的数据是json格式 <

### ESP8266与STM32结合实现天气功能的方案 #### 方案概述 基于STM32ESP8266的设计可以通过Wi-Fi模块访问互联网并获取实时天气信息。此设计的核心在于利用ESP8266作为网络通信接口,通过HTTP请求从指定API服务器获取JSON格式的数据,并将其解析为可读的信息显示在设备界面上[^1]。 #### 硬件选型 硬件部分主要由两大部分组成:微控制器单元(MCU)采用STM32系列单片机;无线通信模块选用ESP8266 Wi-Fi模组。具体来说,可以选择性能较强的型号如STM32F405配合ESP8266-12F来完成整个系统的搭建[^2]。 #### 软件架构 软件方面需要编写程序控制ESP8266发起联网请求并将接收到的数据传递给STM32处理。以下是几个关键技术点: 1. **初始化配置** 需要先对ESP8266进行基本参数设定,比如SSID、密码等用于接入WiFi网络的部分。 2. **建立TCP/IP连接** 使用AT命令或者直接编程方式让ESP8266向目标网站(wthrcdn.etouch.cn)发出GET请求以获得最新的气象资料[^3]。 3. **数据解析** 接下来的挑战是如何高效地解读返回来的大量复杂结构化字符串——即所谓的“Json”。这一步骤通常借助第方库函数简化流程,例如Arduino Json Library或者其他类似的开源工具包可以帮助轻松提取所需字段值。 4. **数据显示** 将最终整理出来的温度、湿度等相关数值呈现在LCD屏幕上供用户查看; 同时支持物理按钮切换不同类型的展示页面以及远程蓝牙操控更改默认城市等功能特性提升用户体验度. #### 示例代码片段 下面提供一段简单的伪代码演示如何构建上述提到的一些逻辑环节: ```c #include "stm32fxxx_hal.h" #include <string.h> #define WIFI_SSID "your_wifi_ssid" #define WIFI_PASSWORD "your_wifi_password" void setup() { Serial.begin(9600); // 初始化串口通讯波特率 } void loop(){ char buffer[256]; memset(buffer, '\0', sizeof(buffer)); /* 发送 AT 命令 */ sendCommandToEsp("AT+CWMODE=1\r\n"); // 设置模式为Station Mode delay(1000); // 等待一秒 sprintf(buffer,"AT+CWJAP=\"%s\",\"%s\"\r\n",WIFI_SSID,WIFI_PASSWORD ); sendCommandToEsp(buffer); // 连接到 WiFi AP delay(5000); // 给予充足时间等待连接成功 sendCommandToEsp("AT+CIPSTART=\"TCP\",\"wthrcdn.etouch.cn\",80\r\n"); delay(2000); const char* httpReq="GET /weather?city=%E5%8C%97%E4%BA%AC HTTP/1.1\r\nHost:wthrcdn.etouch.cn\r\nConnection:close\r\nAccept:*/*\r\nUser-Agent:Mozilla/5.0 (Windows NT 6.1)\r\n\r\n"; sendCommandToEsp(httpReq); } ``` 以上仅为示意性质的基础框架,实际开发过程中还需要考虑错误检测机制、超时重试策略等因素确保稳定性。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xw-何妨吟啸且徐行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值