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

- 位图转换器: 为了显示天气图标,我们开发了一个将 PNG、JPG、SVG 等常见图片格式转换为单片机易于解码的自定义格式的小程序。此工具使用 Vite 脚手架开发,主要语言为 TypeScript。
- 后台管理页面: 为了简化 WiFi 连接,我们设计了后台管理页面。首次启动单片机时会进入 AP 模式,用户可以通过手机连接单片机的热点,访问后台管理界面,扫描周围的 WiFi 并输入密码进行连接。该管理界面使用 Vite 脚手架开发,主要语言为 TypeScript,开发完成后打包为单文件 HTML,并写入单片机的 LittleFS 文件系统,供用户访问。

- 物联网服务端: 由于单片机性能和可维护性限制,我们在云服务器上搭建了后端,负责对时和获取天气数据。具体实现包括调用
ip.sb服务获取 IP 对应的经纬度,调用彩云天气获取天气数据,并使用 OpenAI 的服务处理天气数据,生成单片机可显示的英语自然语言。后端开发使用 Fastify 框架,主要语言为 TypeScript。






