基于STM32的动态天气时钟毕业设计

目录

概述

一、设计背景及设计内容

1.1背景

1.2设计内容

二、软件开发工具

2.1.串口调试助手

2.2 取模软件

2.3 Keil uVision5 MDK(ARM)软件

三、 系统硬件模块

3.1 整体设计方案

3.2 主控模块

3.3 显示模块

3.4 WIFI 模块

3.5 温湿度传感器模块

3.6 蓝牙模块

4 系统软件设计

5 系统测试

5.1 硬件测试

5.2 软件测试

5.2.1 功能测试

6 总结与展望

 6.1 总结

 6.2 展望

附录


(简述及效果)

概述

        随着社会的发展,用于时钟同步的授时系统以及数值天气预报的技术越来越成熟, 而时间同步和天气预报也是人们生活需要获取的信息。本文设计一套适用于家居生活的天气预报 以及时间终端显示设备,能够实时显示本地的天气信息和准确的时间;采用 STM32 嵌入式处理 器为主控芯片,无线网络选用 ESP8266WIFI 模块,通过 TCP 协议访问气象网站以及授时网站的 API 接口,得到 JSON 格式的气象数据以及时间信息并解析,在 OLED 屏幕上显示;测试结果显 示,该设备获取时间与天气信息准确快捷,易于观察,适合在家居生活中应用。

一、设计背景及设计内容

1.1背景

        随着社会的发展,人们无论在生活、生产或者其他方面,都很难离开准确的时间 以及天气信息。虽然目前的独立计时的时钟设备精度越来越高,但是时间久了仍会产 生一定的时钟误差,不能保证时间的准确性,天气也是一个影响人们活动及生产的重 要因素,而天气预报涉及多个领域以及庞大的计算才能得出;为了方便家居生活中获 取天气预报以及准确时间信息,网络授时时钟以及天气预报系统等产品也层出不穷。

1.2设计内容

该设计的主要内容介绍:

(1)运用 ESP8266WiFi 模块的 AT 指令配网、与服务器通信,获取网络上的信息 并解析;

(2)利用蓝牙模块的无线连接,在手机端的蓝牙串口 APP 发送指令修改时钟以及 WIFI 的配置。 (3)通过按键扫描实现简单的人机交互。

(3)运用 1.3 寸 OLED 显示屏并设计一定的界面显示获取到的信息。

(4)利用独立看门狗增强系统的稳健性。

(5)整个系统基于 ARM 的 CORTEX-M3 的 STM32F103 硬件平台进行应用编程。

二、软件开发工具

2.1.串口调试助手

        XCOM 串行调试助手是专为电脑开发的一款串口调试工具,它具有波特率、校 验位、数据位、停止位、帧超时等多种通讯设定功能;在电脑端先按装好 USB 转串 口驱动后,即可通过 USB 口连接电脑,到开串口选择可以自动识别已连接的串口, 设置好波特率以及校验位等参数后,打卡串口即可进行串口调试;该调试软件支持 ASCII 码或十六进制接收或发送任何数据或字符,并且可以选择周期发送,显示栏还 可以显示由串口发送的信息,方便对各硬件模块进行调试

2.2 取模软件

        PCtoLCD2002 是一个易于使用字模软件,该软件无需安装,可以对中英文、符 号以及图片进行取模(图 2),支持多种取模方式:逐行、逐列、行列、列行,可以进 行中英文以及数字的混合取模;取字模时可以选择需要的字体、大小,可根据需要调 节文本的长度、宽度、位置,生成任意形状的字符;此软件系统具有 C、汇编两种 输出形式,并能自行设定输出格式,并能自行设定输出数据的数量。

2.3 Keil uVision5 MDK(ARM)软件

        KeilMDK-ARM 是一个 IDE (集成开发环境),它由美国 Keil 软件公司生产, 支持 ARM 为控制芯片开发。ARM 包括 KeilC 编译器,宏汇编器,调试器,实时内 核等行 业标准 。拥 有业界 领先的 ARM C/C++编 译工具 , 能够完 美地支持 Cortex-M,Cortex-R4,ARM7,ARM9,包括全球知名的芯片。本项目将在 Keil uVision5 MDK 集成开发环境下进行设计开发,采用 ST-Link 下 载工具进行程序烧录。

三、 系统硬件模块

3.1 整体设计方案

        本课项目设计主要的以搭载 STM32F103ZET6 为主控芯片的开发板为控制核心,控制核心协调各个模块的工作,完成整个功能系统的运行。因为该系统需要具有联网以及显示等功能,所以除了开发板主控制模块以及其按键之外,还需要其他的模块如下:

(1) ESP8266WIFI 模块,用于联网获取数据。

(2) OLED 屏显示模块,用于显示各种信息。

(3) HC-05 蓝牙模块,用于对该系统进行无线设置。

(4) DHT11 温湿度模块,用于检测室内温湿度。

(5) 有源蜂鸣器模块,用于闹钟响铃。

(6) 按键模块,用于进行简单的人机交互。

钟整体设计方案框如图所示:

3.2 主控模块

        该系统的主要控制芯片是 STM32F103ZET6;STM32 系列 ARMCortex-M3 结构 32 位处理器,其工作时的电压和功耗都很低,同时也具备很好的实时性。本项目为了节约时间采用正点原子的STM32F103ZET6精英板为基础进行软件开发。

3.3 显示模块

        显示模块采用 1.3 英寸的单色 OLED 屏幕。OLED 屏种类繁多,有多种尺寸、分辨率、驱动芯片以及通信协议可供选择;本项目选用尺 寸为 1.3 寸,分辨率为 128*64,驱动芯片为 SSD1306 的四引脚 OLED 屏,支持 IIC 通信协议。
        可根据自己需求改为LCD屏,可以把页面设计的更加好看,显示部分需做对应修改。后续附上参考连接。

3.4 WIFI 模块

        采用的 ATK-ESP8266 模块是由 ALIENTEK 公司开发的一款具有 UART-WiFi (UART-WiFi)功能的高性能 UART-WiFi 组件,ATK-ESP8266 板载了 由正点原子公司研发的 ATK-ESP-01 组件。该模块以及烧录好固件库,只需要通过串口发送指定的 AT 指令,即可完成相应 的连接、设置以及透传等功能(相关资料可在正点原子资料网下载)。

3.5 温湿度传感器模块

        DHT11 型温湿度传感器是一种温度、湿度传感器,它具有校准数字信 号输出的特点,温湿度传感器的作用是测量周围的温湿度,在温、湿度感应器 DHT11 中,采用 8 位的微处理器连接在感温元件和温度元件上。它可以同时检测温度范围是 0~50 摄氏度的温度和湿度范围是 20%~90%的相对湿度。

3.6 蓝牙模块

        本项目采用 HC-05 蓝牙模块,它是一款以 Bluetooth Specification V2.0 为基础的数字传输模块,具有 EDR 蓝牙功能,是一款高性能的主从式蓝牙串行模块。 该蓝牙模块采用 2.4 GHz 的 ISM 技术,采用 GFSK 的调制模式。该模块的最大传输 功率为 4 dBm,具有-85 dBm 的接收灵敏度,板载 PCB 天线,可在 10 m 的范围内进 行通讯。该模块具有 LED 灯泡,可以直接检测到蓝牙的连接状况。该模块采用 CSRBC417 芯片,并支持 AT 指令,可根据要求改变角色(主、从)、串口波特率、 设备名称等参数。

4 系统软件设计

5 系统测试

5.1 硬件测试

        硬件调试必须要备有万用表,而且要能正确的使用万用表。 确定选题的第一件事请就是查阅相关资料并购买相关元器件。而在进行各模块编 程前的第一步就是检查硬件的好坏;检测硬件好坏分两步,第一步是检查单个元器件 或者模块是否正常供电,第二步是通过万用表、调试软件或者编写代码进行模块调式, 测试其能否正常运行并实现其功能,以便尽早更换。

        一些简单的硬件的检测,用万用表即可;测量元件是否能通电,是否存在短路、 开路的情况。查看硬件相关资料,确定每个元器件的工作电压。而一些独立的功能模 块的检测,还要依靠对应的调试软件进行,部分模块通电根本观测不出现象。

        本文的 ESP8266WIFI 模块,进行调试时需要用到上文所述串口调试助手 XCOM, 通过串口发送 AT 指令,设置 STA 模式,并连接手机 WIFI 热点,再连接知心天气网, 从而获取数据,在调试助手观察返回的结果。

......

5.2 软件测试

        硬件测试以及各个模块调试结束,以及编写完各个功能模块的调用程序后,需要 对该程序用程序进行调用测试,查看该模块的功能函数是否能较好的完成对应的功能, 是否有明显的 BUG,并进行修改完善。 接下来,则需要根据系统主程序整体设计思路进行功能结合,该阶段需要结合硬 件调试部分共同完成。将每个功能模块的调用程序嵌入到主程序的对应的地方,使其 在需要的时候履行自己的使命;然后要对整个系统的程序代码进行试运行,并通过运 行的结果对其进行功能测试以及稳定性的测试。最后根据程序运行结果,对系统进行 各方面的调整优化。

5.2.1 功能测试

        测试整个系统的功能,首先启动系统,初始化系统的过程中配置并连接好 WIFI 并主动从网络获取一次时间以及天气信息,校准内部 RTC 并显示;人机交互功能由 22 按键以及手机上的蓝颜串口 APP 实现。按键如图 26 所示,红色按键为 RST 复位按 键,可以重启整个系统,按键 KEY0 为界面切换功能按键,KEY1 按键为开启或者关 闭自动切屏按键,KEY2(KEY_UP)为手动更新数据按键。

最终效果图:

界面序号

显示信息

最终显示效果

界面一

当前北京时间、日期及温度等信息。

界面二

当天的天气信息,包括天气,温度等。

界面三

当天的降雨率,湿度,风力等级。

界面四

闹钟信息界面,闹钟时间以及状态。

界面五

今、明以及后三天的大致天气温度信息。

界面六

WIFI的连接信息及地区名称。

初始化界面

显示系统初始化进度

数据更新

界面

显示更新进度以及更新结果

(finish!或No WIFI..)

 其他显示界面:

6 总结与展望

 6.1 总结

        本次设计的基于STM32的动态天气,具有操作简便、结果准确等特点,在居家生活中能帮助人们快速获取天气信息以及准确的时间,方便人们安排接下来的活动和工作。该设计难点在于对ESP8266WIFI模块的运用,以及对从网络上获取的JSON格式数据进行解析,从而得到想要的天气信息,可以空过按键切换信息界面,也可以通过手机的蓝牙调试助手连接蓝牙模块后发送特定格式的指令进行对应的设置。。。

 6.2 展望

         该系统适合在居家生活中使用,目前只能实现室内温湿度、联网获取时间以及天气信息的显示提醒、闹钟功能,未来可以更换更大的显示模块,设计更简洁美观的界面,让信息获取更加的方便快捷。  由于搭载的STM32具有强大处理性能以及留有很多的外部接口,未来还可以在此系统上进行多方面的功能拓展。也可以更换精简的芯片制作成更加小巧的时钟。。。。

附录

项目源码:
后续添加。

STM32是由意法半导体(STMicroelectronics)公司推出的基于ARM Cortex-M内核的高性能、低功耗、高性价比32位微控制器系列。自其面世以来,STM32凭借其广泛的适用性和卓越的特性,已成为嵌入式系统设计领域的主流选择之一,广泛应用于工业控制、消费电子、物联网、汽车电子、医疗设备、智能家居等多个领域。 内核与架构 STM32产品线采用了不同版本的ARM Cortex-M内核,包括M0、M0+、M3、M4、M7等,分别对应不同级别的性能需求。这些内核提供单周期乘法、硬件除法、DSP指令集、浮点单元(FPU)等功能,以满足不同应用场景中的计算密集型任务需求。处理器架构遵循哈佛结构,具有独立的指令总线和数据总线,确保高效的代码执行和数据访问。 丰富的外设与接口 STM32微控制器集成了丰富的外设资源,以适应各种复杂系统设计。这些外设包括但不限于: 通信接口:如USART、UART、SPI、I2C、CAN、USB(全速/高速)、Ethernet、无线连接模块(如BLE、Wi-Fi)等,用于实现设备间的串行通信和网络连接。 定时器:多种通用定时器、高级定时器、基本定时器以及PWM输出,支持定时、计数、脉冲捕获、电机控制等多种功能。 模拟外设:高精度ADC(模数转换器)、DAC(数模转换器)、比较器、温度传感器等,用于采集和处理模拟信号。 存储器:内置Flash和SRAM,容量从几KB到几MB不等,满足不同应用的数据存储和运行空间需求。部分型号还支持外部存储器接口(如FSMC、Octo-SPI)以扩展存储能力。 安全与保护机制:如加密加速器、安全单元、内存保护单元(MPU)、看门狗定时器、时钟安全系统(CSS)等,保障系统安全稳定运行。 开发环境与生态系统 STM32拥有强大的软件支持和生态系统,简化开发流程并加速产品上市时间: 开发工具:官方提供STM32CubeMX初始化配置工具,帮助开发者快速进行项目设置、外设配置及代码生成。此外,还有STM32CubeIDE集成开发环境,集成了编译器、调试器和仿真器支持。 软件库:STM32Cube软件包包含HAL(硬件抽象层)库和LL(低层)库,前者提供跨平台、跨系列的统一API接口,后者直接面向寄存器提供高效访问。同时,还提供各类外设驱动、中间件组件(如FreeRTOS、FatFS、LwIP等)以及特定应用框架(如STM32Cube.AI for AI推理)。 社区与资源:ST官方社区、论坛、博客、技术文档、培训材料、应用笔记、用户案例等资源丰富,为开发者提供全方位的技术支持和交流平台。 产品线与封装 STM32产品线按性能、功耗、外设组合等特性划分为多个子系列,如STM32F、STM32L、STM32G、STM32H等,每个子系列下又包含多种型号,以适应不同成本、性能、尺寸和功耗要求。封装形式多样,从小型QFN、LQFP到大型BGA,满足不同应用场景的封装密度和散热需求。 综上所述,STM32微控制器以其强大的内核性能、丰富的外设集成、完善的开发支持和广泛的市场应用,为嵌入式系统设计提供了高度灵活且极具竞争力的解决方案。
### 关于使用ESP01S与STM32制作天气时钟 #### 硬件连接说明 对于硬件连接部分,在构建基于STM32和ESP01S的无线天气时钟项目中,主要涉及两个设备之间的串行接口连接。具体来说,STM32微控制器通过其UART端口与ESP01S Wi-Fi模块相连,以便能够发送指令并接收来自互联网的时间和天气信息[^1]。 - **STM32 UART TX (PA9)** 连接到 **ESP01S RX** - **STM32 UART RX (PA10)** 连接到 **ESP01S TX** 此外,还需要确保电源线(VCC, GND)正确连接,并且根据实际需求可能还需考虑电平转换电路来匹配不同电压级别的信号输入输出[^3]。 #### 软件设计概述 为了使该系统正常工作,需要开发相应的嵌入式应用程序: - 编写STM32固件程序以实现基本的时钟功能(如获取当前时间、显示时间和调整时间),并通过串口通信协议与ESP8266交互。 - 实现ESP8266初始化配置流程,包括但不限于WiFi连接设置、HTTP请求发起以及解析返回的数据包等内容[^2]。 以下是简化版的主要组件文件结构示例: ```plaintext . ├── esp8266.h ├── esp8266.c ├── USART_LY.h ├── USART_LY.c └── main.c ``` 其中`main.c`作为入口函数负责整体逻辑控制;而其他`.c/.h`文件则封装了特定的功能模块,比如处理Wi-Fi操作或管理串行通讯等。 #### 示例代码片段 下面给出一段简单的C语言代码用来展示如何在主循环里调用相关API完成基础任务——向ESP8266发出命令让其上线至指定网络: ```c #include "stm32f1xx_hal.h" #include "esp8266.h" int main(void){ HAL_Init(); SystemClock_Config(); // 配置系统时钟 MX_USART1_UART_Init(); // 初始化USART1用于同ESP8266交流 ESP8266_Init(); // 对ESP8266做必要的启动前准备 while(1){ if(!isConnected()){ connectToAP("SSID", "PASSWORD"); // 尝试接入预设好的热点 } getWeatherData(); // 获取最新气象资料 delay_ms(60 * 1000); // 每隔一分钟重复上述过程一次 } } ``` 此段伪码仅作示意用途,真实环境中应当加入更多错误检测机制和服务质量保障措施。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

断笺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值