# ESP32手表
**Repository Path**: linyongguo/esp32-watch
## Basic Information
- **Project Name**: ESP32手表
- **Description**: 使用 esp32s3实现一块集成温湿度感知,九轴姿态检测,气压海拔高度测测计算,电池电量管理的可视化触控手表。项目代码使用 freertos 操作系统和 lvgl 嵌入式 GUI 框架开发。
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 11
- **Created**: 2025-04-22
- **Last Updated**: 2025-04-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ESP32手表
#### 介绍
手表采用ESP32S3微控制器为核心,FreeRTOS为操作系统,使用LVGL嵌入式GUI框架开发用户交互界面。
嘉立创开源平台地址:https://oshwhub.com/huantianxiang/esp32-shou-biao
(PS:ESP-IDF和LVGL版本号等的其它注意事项,都有在下文中说明)
#### 手表功能
演示视频在Pics/show.mp4
1、手表主页:显示网络时间,电量(只有在该页会自动进入休眠)
2、磁贴页:显示网络天气和日期,德丽莎logo会根据工作日日期切换
3、功能页:
①.传感器信息查看。支持查看温湿度、气压、海拔、加速度、俯仰角等
②.网络信息同步,现实现网络时钟和网络天气同步
③.指南针。目前显示帧率低,待优化
④.设置(暂时只有亮度设置,之后会把wifi和ble加上)
⑤.OTA升级。连接http服务器更新固件
4、MQTT上报传感器数据至OneNET云平台;
5、SPIFFS文件系统管理storage分区内文件;
6、图片资源由FLASH中mmap映射到lvgl中显示;
7、默认8s后屏幕息屏,15s后整机自动休眠。
#### 手表交互
1、未休眠时滑动屏幕或翻腕亮屏,休眠后点按侧边开关唤醒;
2、侧键短按回到手表主页,长按按钮重启;
#### 代码特性
1、外部资源管理器。图片数组等的资源通过外部脚本打包成bin文件烧录到指定分区,使用外部资源管理器将资源映射进内存空间后使用,减少对双APP分区空间的占用;
2、传感器管理器,实现传感器的快速接入、自动初始化和调用;
3、页表管理器,实现UI页面的页面统一管理、快速接入和自动初始化\清理页面;
4、引入观察者设计模式,减少UI页面对全局资源的轮询;
5、采用MVC架构模式,分离应用程序逻辑和用户UI界面(Model在app,View在ui\generated,Controller在ui\control);
6、使用大模型API接口和Python脚本,实现手表功能页的低代码客制化功能。用户输入一段文字描述即可生成对应描述的UI(生成的UI能够在电脑上模拟运行,查看生成效果)或解析网络API数据的代码段,脚本自动注入代码、编译并远程OTA更新至手表(本功能代码在我的另外一个仓库LCGP中,正在开发中)。
#### 系统架构
系统架构说明

#### 安装教程
1、本项目硬件电路使用嘉立创专业版EDA进行开发。原件大都能够在立创商城买到,其它在立创商城买不到或者太贵的物料,可以去我的BOM表上查看tb购买链接;
2、嘉立创四层免费打样,切记板子厚度选1mm;
3、由于硬件电路使用的物料基本都是小封装,如果对自己焊接能力没有自信的建议开钢网或者是在立创商城买物料的同时SMT;
4、本项目代码使用esp-idf+vscode进行开发,在vscode正确部署好esp-idf开发环境后,打开项目工程,编译检查没问题后,点击烧录选择芯片型号ESP32S3,串口烧录(方法自行搜索,网上很多教程);
5、仓库中还包含手表外壳的STL文件,如果有需要也可以自取后3D打印外壳。
#### 使用说明
1、ESP-IDF的版本是4.4.6,编译工程时记得修改./Firmware下的CMakeList.txt,将里边include的project.cmake改成你电脑上ESP-IDF的路径;
2、lvgl业务代码位于main/ui文件夹下。本项目的lvgl工程代码主要由GUI Guider生成,lvgl版本为8.2,GUI Guider版本为1.4.1(该版本较老,可以到本项目的Tools文件夹下载使用);
3、手表默认通电后需要联网同步网络时间,为保证功能正常使用请先在烧录前到工程的main/sys/wifi/wifi.c中添加你wifi的ssid和pswd;
4、如果想使用OneNET云平台工程,请到main/sys/mqtt/mqtt.h中设置功能使能宏MQTT_ENABLE为1,并将文件中的OneNET云平台信息修改为你自己的信息;
5、使用天气API请务必在main/app/API/api.h文件中的心知天气API URL修改成你的对应城市和填写你申请的APP KEY(https://www.seniverse.com/api)。