基于STM32的天气查询系统设计

news/2025/3/3 22:49:38/

摘 要

现代社会进入高速发展的时代,人们的生活节奏越加紧凑,但人们依旧向往未来美好的生活环境,智能家具市场应运而生。天气状况是人们对美好生活的最直观感受,很大程度的影响着人们对更好生活质量的追求。智能家居可以为人们提供安全、安闲的生活条件。本次设计是将天气查询系统变成智能家具,可以直接显示出当地具体的天气状况,方便人们的日常生活。
这次设计主要是将每日天气状况作为一个研究对象进行设计形成一个嵌入式的天气信息查询系统,这其实也就是一类智能家居,可以事先由人们通过按键输入当地的电话区号,从而查看和得到今天当地的天气状况,人们可以直接从一个 LCD液晶屏上查看今天的天气信息。本次设计主要使用的嵌入式芯片是STM32 F103ZET6处理器芯片,用物联网WiFi模块ESP2866芯片将其接入网络,通过TCP/IP协议直接访问国内合适的天气网站API接口,从而获取含有天气状况的JSON格式数据,将其处理后显示在LCD液晶屏上。该设备可以实时显示当地天气状况,使人们在工作中能够很方便地了解当地天气情况。
关键词:STM32; 天气查询;ESP8266; 智能家居

1 天气查询系统整体框架设计

1.1 天气查询系统整体设计方案

本章节主要对天气查询系统的整体框架进行介绍,在这次设计的天气查询系统主要使用的是三个模块:物联网模块,智能主控模块,液晶屏显示模块。物联网模块是使用ESP8266模块,用以连接互联网和智能主控模块;智能主控模块是以STM32 F103ZET6当成核心处理器,在加上矩阵键盘用来控制;液晶屏显示模块是用2.8寸的TFTLCD液晶屏,将天气状况显示在上面。在整体设计上,通过智能主控芯片上的按键输入当地的电话区号,智能主控芯片接收到信息后,将要询问的城市天气按照设定好的HTTP文本格式,通过TCP/IP协议发送到指定的气象网站的网络服务站中,气象网站接收到请求文本后解析,向智能主控模块发送含有天气信息的JSON格式,智能主控芯片接收到含有天气信息的数据后解析,并通过液晶屏显示模块展示出来,完成一次任务。本次天气查询系统整体设计框架如下图2-1所示。
在这里插入图片描述

2 天气查询系统整体设计框架

2.1天气查询系统智能主控模块

本次设计的智能主控芯片模块,是本次设计天气查询系统的核心,其对天气查询系统的内部进行控制,并且为用户提供一定的交互服务。根据设计题目的要求,本次天气查询系统的智能主控模块可以得到以下的设计方案:
(1)提供交互服务,用户可以通过智能主控模块带有的按键,输入自己想要查询的城市区号,之后可以在液晶屏上得到自己想要了解的城市天气状况。
(2)智能主控模块能够发送HTTP协议的请求文本到ESP8266模块中,并且能够解析互联网发送回来的JSON,得到天气信息并且把信息发送给到液晶屏上显示。
(3)能够及时管理和处理模块直接的任务请求,本次设计在移植LWIP协议时,运用的是LWIP带操作系统移植,并且选择的是UCOS II带操作,在加入带操作系统后可以快速处理模块的任务要求,加入操作系统后可以对模块的数据请求按请求顺序处理或者按任务紧急程度分批处理。

2.2 天气查询系统物联网模块

本次物联网模块在本次天气查询系统连接互联网的模块,并且另一端和智能主控模块相连接,是信息交互和命令传输的主要通道。在本次设计中,ESP8266模块主要的任务是将智能主控模块和互联网连接起来,智能主控模块可以通过ESP8266将HTTP协议的请求文本发送到互联网中,得到含有天气信息的JSON格式数据也可以通过ESP8266模块传回到智能主控模块中,从而实现一次查询任务。

2.3 液晶屏显示模块

液晶屏显示模块最主要的就是在得到智能主控模块传输来的数据后,将天气信息显示出来。本次选用的是2.8寸的TFTLCD,在液晶屏的设置上,最开始设计智能主控芯片块与液晶屏的IO口连接,将液晶屏初始化,使用合适的代码把我们需要展示的天气状况在上面显示。
第3章 天气查询系统硬件设计
本章节是对基于STM32的天气查询系统相关技术进行介绍。主要从硬件和软件方面进行介绍,硬件上主要是对嵌入式系统即STM32以及所需要的模块进行概要的介绍,软件方面主要是对MDK5进行说明。

3 STM32介绍

本次设计是在STM32系统进行设计,所以需要我们了解和掌握嵌入式系统的知识体系。我们在掌握嵌入式系统的知识体系后,对STM32进行设计会很方便。

3.1 嵌入式系统的简要介绍

嵌入式系统在在我们的生活中扮演很重要的角色,比如我们经常使用的手机,数码相机,笔记本电脑,指纹打卡机,航空工业领域所需要使用的引擎和导航系统。有关于嵌入式的概念和定义很多,但其最为核心的概念和定义大致可以简单地总结为:软、硬件能够完成剪切,并且对设备有很高的条件,比如在体积,功耗,安全性等方面都需要严苛的保证,除此之外还需要计算机技能当成根基,从而能够更好地符合客户要求的一类操作系统[3]。嵌入式系统由于它的应用经常是将它们嵌入到主要设备之中,故此它们就这样命名。

3.2嵌入式系统的组成

嵌入式系统主要由软硬件平台组成,如今我们认为嵌入式系统由四个层次组成,即应用层,系统软件管理层,中间部分,硬件管理层。应用层主要指在整个操作系统的上面,直接地面对着所有的客户,为所有的客户量身定做的相应功能性服务,比如我们通常会经常看到的聊天工具,各类企业办公软件,各种网络游戏等就坐落在这一层。
系统的软件层主要指的是操作系统和设备的驱动,操作系统有Linux,Firefox等,设备实施的驱动方法主要有声光驱动,显示器的驱动等。中间层一般是在软件层上面,为了使用者能很方便地对硬件层的路由线进行调度,中间层都采用的就是将所有硬件全部封装在一起来,而且还给软件层留下方便使用的接口。硬件层即硬件平台,在硬件平台里面有各式处理器芯片,系统电路以及各类接口[4]。嵌入式系统的整体组成框架如下图3-1所示:
在这里插入图片描述

图3-1嵌入式系统组成框架

4 访问与解析数据设计

(1)访问设计
编写好程序并检测之后,要将服务器与寻找到的天气网站端口设置好,从而新建好TCP的连接,然后与天气网站的TCP结合,然后往网站传输设置好的网络API。在API中要把查询天气的城市名称加入代码中,然后送到天气网站。使用的天气查询网站是https://api.seniverse.com,主要的代码如下所示#define Link_ID"GET https://api.seniverse.com/v3/weather/now.json?key=S8H CIJEz-
sBgescwh&location=Guilin&language=en&unit=c\r\n"
(2)JSON解析
天气查询系统在收到存有天气信息的JSON数据信息后,我们需要从这些信息里面提取处我们所需要的具体信息。因此,我们要在工程代码里面增加cJSON库代码,我们可以使用三个接口函数就能够完成对数据的解析,这三个函数如下所示:cJSON*cJSON_Parse(const char value);cJSONcJSON_GetObjectItem(cJSON *object,const char *string);
voidcJSON_Delete(cJSON c);cJSON_Parse()函数,能够分析天气查询系统接收到的JSON信息,cJSON的结构体能将信息包结构序列化。在运用到cJSON_Parse时,会运用malloc()在内存空间里面开设预留一个新的地方,在运用结束之后要我们自己释放。使用cJSONcJSON_GetObjectItem()函数,能够顺利的在JSON结构体的数据信息里面寻找到符合要求的键名称,若是能顺利搜索到,就会把这个子节点序列化到cJSON结构里面。运用voidcJSON_Delete()函数能够解放cJSON_Parse()函数里面新建的内存。

5 天气查询系统验证与总结

在将天气查询系统整体设计完成之后,我们要对整个天气查询系统的稳定性,功能是不是能顺利完成进行总体的检测,使其能够达到我们设计的要求。

5.1 天气查询系统设计验证

我们设计完成的天气查询系统整体如下图5-1所示:
在这里插入图片描述

图5-1 天气查询系统整体图
从整体设计完成图5-1中我们可以看到,本次天气查询系统主要的几个模块:智能主控模块、物联网模块以及液晶屏显示模块。
在进行检测前,我们要对天气查询系统的硬件连接情况以及软件烧写等步骤进行调试和检查。具体实行的内容步骤如下:
(1)需要检测电路板的焊接处与接线处,查找焊接的地方是不是出现虚焊的情况,我们还能运用万用表测量电路是否出现短路,并且观察每一个元器件都能使用。
(2)把整个天气查询系统通电后,使用ST-LINK仿真器下载各个模块的测试程序代码,检测每个模块的接口以及模块是不是能正常使用。在完成检测步骤之后,我们就可以对天气查询系统的功能进行验证。我们通过按键输入要查询城市的电话区号,之后经过整个天气查询系统的工作,我们再能在液晶显示模块上看到我们要查询城市的天气状况。

6 总结与展望

本次设计的天气查询系统,主要是基于STM32 F103ZET6芯片进行设计,在文章中对系统各个模块的功能与设计都进行了一定的介绍,并且使用ESP8266无线网络模块进行与互联网的信息交流。该设计项目的代码移植性较好,能方便人们自行设计,并且设计的成本较低,但可以添加的功能却不少。经过验证,本次设计的天气查询系统能够正常的运行,能够及时的给人们提供天气状况,方便人们的日常生活。
但本次设计的天气查询系统仍有较多的不足,比如液晶屏显示模块的文字显示较小,每次查询天气都需要系统再次进行访问互联网,可操作性较少。整体来说此次设计的天气查询系统是较为简易的智能家具系统,只能提供较为单一的功能,在应对如今快捷的生活节奏有些不够看。在之后的设计之中,应该添加实时刷新功能,并且能将整体规模做得更小一些,让人们在生活中更加便捷的使用。


http://www.ppmy.cn/news/1576399.html

相关文章

004 rocketmq集群

1、集群模式 在RocketMQ中,集群的部署模式是比较多的,有以下几种: public class ConsumerDemo {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer new DefaultMQPushConsumer("test-group&qu…

算法1-2 分数线划定

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150% 划定,即如果计划录取 m 名志愿者&#xf…

优博讯,蓝禾,三七互娱,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推

优博讯,蓝禾,三七互娱,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推 ①优博讯 【岗位】Android系统开发工程师,GMS认证开发工程师&#xf…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…

Spring Boot 2.7.x 至 2.7.18 及更旧的版本,漏洞说明

本文提供的修复指南将帮助开发者有效规避 CVE-2024-38808 和 CVE-2024-38809 的风险。如果你正在使用老版本的 Spring Boot&#xff0c;请尽快参考本文进行修复与升级。 此漏洞来源于spring官网&#xff1a;https://spring.io/blog/2024/08/14/spring-framework-releases-fixe…

Nginx负载均衡策略详解:从轮询到智能分发,打造高可用服务架构

Nginx负载均衡策略详解&#xff1a;从轮询到智能分发&#xff0c;打造高可用服务架构 一、负载均衡的核心价值 当单台服务器无法承载高并发流量时&#xff0c;负载均衡通过将请求分发到多台服务器&#xff0c;实现&#xff1a; 横向扩展&#xff1a;突破单机性能瓶颈故障隔离…

PXE批量网络装机与Kickstart自动化安装工具

目录 一、系统装机的原理 1.1、系统装机方式 1.2、系统安装过程 二、PXE批量网络装机 2.1、PXE实现原理 2.2、搭建PXE实际案例 2.2.1、安装必要软件 2.2.2、搭建DHCP服务器 2.2.3、搭建TFTP服务器 2.2.4、挂载镜像并拷贝引导文件到tftp服务启动引导文件夹下 2.2.5、编…

Android Hilt 高级用法

Hilt 是 Android 官方推荐的依赖注入框架&#xff0c;虽然它提供了简单易用的 API&#xff0c;但在复杂项目中&#xff0c;我们可能需要用到更高级的特性&#xff0c;比如自定义作用域、多模块 DI、绑定接口、多构造函数注入等。 本文将介绍 Hilt 的一些高级用法&#xff0c;并…