home-page/src/blogs/ESP8266天气时钟——项目展示.md
2025-04-30 22:36:01 +08:00

74 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: ESP8266 天气时钟——项目展示
desc: 春夏之际气温变化无常我们团队结合单片机、物联网和人工智能技术开发了一款实时显示天气的智能时钟。项目展示了三个精心设计的界面时间与天气概况、详细气象数据以及天气趋势图表让天气预报变得直观而贴心。通过简单的二维码扫描配网方式用户可以轻松将设备连接到家庭WiFi。
author: feie9454
date: 2024-04-18
tags: 计算机、竞赛、嵌入式
---
# ESP8266 天气时钟——项目展示
点击查看介绍视频。
-->V(/resources/Weather-clock/ESP8266介绍视频.mp4)
## 团队成员
**组长**
- 软件2302 查俊豪 3230608044
**组员**
- 微电子2302 肖雨竹 3234401060
- 微电子2302 李俊成 3214401011
## 引言
春夏之际,春风拂面,繁花盛开,也是气温和降水变化无常的时节。我们的团队结合了单片机、物联网和人工智能,开发了一款实时显示天气的时钟。
## 项目演示
首先,来到系统第一次启动的配置。可以看到系统在短暂的加载后,显示出了引导文本和两个二维码。
![image-20250418185110936](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185110936.png)
我们扫描第一个二维码,一键连接上单片机的热点,连接速度很快。扫描第二个二维码,跳转到了一个网页,这就是单片机连接无线网络的页面。
![image-20250418185536640](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185536640.png)
和我们手机自己的扫描结果是一样的。点击右上角按钮可以重新扫描。我们选择家里的Wifi输入密码。确定。单片机迅速接收到了数据重启并尝试连接提供的Wifi。
![image-20250418185205287](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185205287.png)
连接成功后进行网络对时获取天气数据。后台WIFI管理界面保证了此时钟不管在什么环境都能快速配置使用。
接着我们来看时钟的主体。系统分为三个页面,有一个按钮用于循环切换界面,来回切换十分流畅。
我们先看主界面。上方是当前时间,用了类似数码管的风格。得益于自动对时功能,该时钟永远不会出现误差。右侧是传感器实时获得的温湿度数据,每五秒更新一次。下方是用自然语言描述的当前天气情况,每五分钟更新一次,就和我们手机上的天气软件差不多效果,相对于传统时钟或者只能固定显示温湿度的时钟有无可比拟的优势,只需看一眼就能了解接下来的天气情况,显得亲切自然。
![image-20250418185220881](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185220881.png)
接着看界面二这是更详细的天气数据。左侧有一个天气图标现在是阴天右侧依次是实时温度湿度风速气压和PM2.5。下方是日间与夜间的平均温度和最高最低温度。
![image-20250418185302851](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185302851.png)
界面三是一个直观的曲线图,显示温度和降雨接下来二十四小时的变化。上方是温度和体感温度。下方是降雨概率和预计降雨量,今天天气好就都是零了。得益于分辨率较高的彩屏,曲线图显示也毫无问题,肉眼看会更加清晰。
![image-20250418185319439](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185319439.png)
## 技术细节
本项目由四个部分组成:
1. **嵌入式单片机:** 我们使用了 ESP8266 型号的32位单片机在 NodeMCUv2 平台上开发。ESP8266 是一种低成本的 WiFi 模块,内置了 TCP/IP 协议栈,能够连接到 WiFi 网络。它具有32位处理器支持最高 80 MHz 的时钟频率,拥有 64KB 的指令 RAM 和 96KB 的数据 RAM以及外部闪存。ESP8266 提供多种节能模式,非常适合电池供电的应用。我们还连接了一块 128x160 分辨率的 TFT 彩色屏幕用于显示AM2320温湿度传感器用于检测温湿度并连接了支持PWM调速的风扇演示调节气温的反馈系统。开发过程中我们使用 Platform.io 作为 IDEC++ 作为开发语言。
![image-20250418185332996](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185332996.png)
![image-20250418185404342](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185404342.png)
3. **位图转换器:** 为了显示天气图标,我们开发了一个将 PNG、JPG、SVG 等常见图片格式转换为单片机易于解码的自定义格式的小程序。此工具使用 Vite 脚手架开发,主要语言为 TypeScript。
3. **后台管理页面:** 为了简化 WiFi 连接,我们设计了后台管理页面。首次启动单片机时会进入 AP 模式,用户可以通过手机连接单片机的热点,访问后台管理界面,扫描周围的 WiFi 并输入密码进行连接。该管理界面使用 Vite 脚手架开发,主要语言为 TypeScript开发完成后打包为单文件 HTML并写入单片机的 LittleFS 文件系统,供用户访问。
![image-20250418185439668](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185439668.png)
4. **物联网服务端:** 由于单片机性能和可维护性限制,我们在云服务器上搭建了后端,负责对时和获取天气数据。具体实现包括调用`ip.sb`服务获取 IP 对应的经纬度,调用彩云天气获取天气数据,并使用 OpenAI 的服务处理天气数据,生成单片机可显示的英语自然语言。后端开发使用 Fastify 框架,主要语言为 TypeScript。
![image-20250418185454421](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418185454421.png)
![image-20250418194508675](./ESP8266%E5%A4%A9%E6%B0%94%E6%97%B6%E9%92%9F%E2%80%94%E2%80%94%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA.assets/image-20250418194508675.png)