PyClock

  1. PyClock
    1. 代码结构
    2. 代码分析
      1. 结构分析
      2. 功能介绍
      3. service.py和led.py文件的调用说明
    3. 怎么使用
    4. 版本说明

PyClock

一个基于esp32的micropython项目,项目地址https://github.com/XU-Zijin/PyClock(注:以下内容为develop分支中的内容,main分支请查看github项目地址)

这是一个开源项目,原项目地址https://github.com/01studio-lab/pyClock,也可以点击这里直接下载PyClock main分支版本 develop分支版本,使用我这个项目的前提是要有原项目的硬件以及固件,后面我会考虑适配没有这个固件的板子。

我重写了这个开源项目的软件部分(不包括固件)PS: 代码水平不高,有待优化和待修复bug的地方请指出

注:本文为develop分支的README文档,主分支的README在这

代码结构

boot.py :启动参数配置,可以不用

main.py:主函数代码

data: 数据

|---Fonts : 字库文件
|---picture:主题图片素材
|---CityCode.txt:全国城市编码
file: 用于存放系统文件
    |---wifi.txt: 记录WiFi账户密码
    |---mode.txt: 系统状态文件
    |---set.txt: 系统状态文件
    |---ui.txt: 记录上次关机表盘
    |---datetime.txt: 存储rtc时间
    |---weather.txt: 存储天气数据

lib: 服务

|---service
    |---service.py:系统服务(core)
    |---led.py: 用于控制led灯
    |---ip.py: 自动获取城市

libs: 项目Micropython库

urllib: urequest库
    |---urequest.py: 爬虫库
|---ap.py: AP热点配网
|---global_var.py:全局变量定义
ui:UI主题库 
    |---dial.py: 极简表盘
    |---default.py: 默认表盘
    |---ticlock.py: 极简时钟表盘

其中service.py是相当于这个程序的核心,大部分功能从这里调用

代码分析

结构分析

首先data文件夹用于存放主题图片、字库、编码以及系统运行时所需的文件。

lib文件夹中就是用于调试的devmode.py文件及用于系统大部分基础功能service.py文件,还有控制led的文件,我打算用devmode.py这个文件在PyClock这个板子上实现一个终端功能,也就是pyshell。

libs里面就是各种所需的库了,还有表盘,也就是UI。

功能介绍

这个天气时钟的主要功能:

  • 查看天气
  • 查看温湿度
  • 查看时间
  • 可以息屏
  • 可以切换表盘
  • 开机自动校准时间
  • 手机web配网
  • 自动获取城市
  • 表盘记忆
  • 离线使用(仅限天气,原理是把上次联网时获取的天气存储,离线时读取使用)

service.py和led.py文件的调用说明

使用from lib.service import led从而调用led.py,使用led.on()即可开启板子上自带的led指示灯,使用led.off()即可关闭。

使用from lib.service.service import server导入server库

使用server=Server()来创建对象

server.WIFI_Connect()用于联网

server.sync_ntp()用于同步网络时钟

server.city_get()获取城市编码

city=server.re('city')返回城市编码

datetime = server.re('rtc')返回rtc时间

server.weather_get(datetime)获取天气

weather=server.re('weather')返回天气

server.info_print()打印天气到调试台

server.check()自检

怎么使用

首次开机按照屏幕上显示的步骤进行配网,然后首次开机会进入到默认的太空人表盘,若不是首次开机,则会进入上次关机时的表盘,短按切换表盘,目前有三个表盘,按2秒息屏,长按5秒进入出厂设置。

版本说明

V3.0.0重写service.py,规范代码格式,添加注释说明,优化了性能,删除devlop模式

V2.3.2调整ticlock表盘渲染顺序

V2.3.1修复2个bug,添加串口输出内存剩余情况、CPU频率、WiFi信号强度、表盘使用情况等方便的调试功能

V2.3.0支持离线使用(原理是把上次联网时获取的天气和时间存储,离线时读取使用,所以数据并不准确,只是一个demo),把开机画面写入函数,只有调用时才显示开机画面;加快开机速度,提速10%,把开机画面提前;只导入需要的表盘,开机时不导入其他表盘,使用时再导入,增加开机速度;增加稳定性

V2.2.0修复1个已知bug,添加表盘记忆功能,新增1个表盘

V2.1.0修复已知的3个bug,添加新的表盘,删除不必要文件,在息屏超过15分钟时CPU频率为80MHz

V2.0.1添加自动调整esp32的CPU频率以节省功耗,在正常情况下CPU频率为160MHz,在息屏时为80MHz,在息屏超过15分钟时为20MHz

V2.0.0修改默认表盘,修改AP配网文件,可以自动检测城市,新增加两个功能:短按切换表盘、按两秒息屏

V1.0.0开源,重写主要代码(除表盘,AP配网)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

文章标题:PyClock

字数:1.2k

本文作者:许子晋

发布时间:2024-01-23, 15:30:47

最后更新:2024-07-01, 12:04:58

原始链接:https://xuzijin.com/2024/01/23/PyClock/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。