--- 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 作为 IDE,C++ 作为开发语言。 ![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)