晨曦的宇宙
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

智能天气钟表

写作时间:2025-09-09
# ESP32
# MicroPython
# 硬件

ESP32 + SSD1306 OLED + MAX30102 血氧传感器。能看天气、测血氧、显示时间。区二等奖。

硬件

  • ESP32 开发板(CP210 系列驱动)
  • SSD1306 OLED 屏幕(128x64,SPI 接口)
  • MAX30102 血氧传感器(I2C 接口)
  • 两节 21700 电池并联供电(5V 输出)
  • 三个按键(GPIO 下拉电阻)

功能

天气显示

调用 OpenWeather API,HTTP 协议(ESP32 固件不支持 HTTPS)。urequests 库发请求,ujson 解析返回数据。OpenWeather 免费版一天可以调用 1000 次,够用。

网络校时

ntptime 同步 UTC 时间,加 8 小时转东八区。用阿里、微软等大厂的 NTP 服务器,保证稳定。每隔固定循环次数重新校时。

血氧检测

MAX30102 采集红光和红外光,I2C 协议通讯。巴特沃斯带通滤波 + 相关系数算法计算血氧饱和度。

公式:R = (red_ac/red_dc) / (ir_ac/ir_dc),SPO2 = a - b*R。系数 a=106, b=17 需要根据实际情况校准。

前 45 秒数据不准,要等稳定。

中文显示

自己写了 16x16 点阵字库。把汉字拆成单个字,通过字典找字模数据,创建帧缓冲区,最后贴到屏幕上。

按键切换

4 个界面,GPIO 下拉电阻检测。用 machine.Pin 的 pull 参数实现。

踩过的坑

  • MicroPython 不原生支持 SSD1306,要用第三方库
  • 固件不支持 HTTPS,只能用 HTTP 的 API
  • 血氧数据前 45 秒不准,要等稳定
  • NTP 服务器有时候连不上,加了多个备选
  • 字库文件要单独存放,方便扩展

代码

MicroPython 写的,ESP32 上直接跑。字库是单独的 .py 文件,导入后使用。

avatar

晨曦

你好,我是晨曦。是一个高中生,没事喜欢用AI让自己的项目落地。

RECOMMENDED

树莓派智能驾驶小车

2025-06-09

PiManager:自建 Pillow UI 组件库

2026-06-19

个人网站迭代记录

2026-08-09

Table of Contents