发作品签到
专业版

[LiClock]可编程墨水屏时钟

工程标签

4.1w
0
0
172

简介

支持图形化编程、多APP调度、在线调试,对新手友好的墨水屏天气时钟,全开源

简介:支持图形化编程、多APP调度、在线调试,对新手友好的墨水屏天气时钟,全开源
星火计划2023

开源协议

CC BY-SA 3.0

(未经作者授权,禁止转载)
创建时间:2023-08-08 11:17:00更新时间:2024-01-18 11:47:56

描述

 

一种基于ESP32的 2.9寸可编程墨水屏天气时钟

 

项目说明

网上能找到许多2.9寸天气时钟,不过有的功能多但没有开源,有的开源的功能较少。

还有的并没有用立创EDA设计,不能享受嘉立创的优惠。

为了让每个人都能快速DIY属于自己的墨水屏天气时钟,并让每个人都能参与开发,

为了完成曾经“校园生活助手 7”项目没做完的Lua解释器

我决定利用暑假设计一个扩展性强,DIY过程对新手友好,功能全且成本低的墨水屏天气时钟

Github 仓库点这里
介绍视频已发布,点这里

固件烧录/更新,点这里

最新信息之后会在Github发布,本页面最后更新时间:2024年1月18日10点38分

HW3.0硬件已更新。

 

 

开源协议

EDA工程开源协议为CC-BY-SA 3.0,其中:

 CC知识共享许可协议(英语:Creative Commons license的缩写

 BY:署名,您必须给出适当的署名,提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。

 SA:相同方式共享,如果您 再混合、转换或者基于本作品进行创作,您必须基于与原先许可协议相同的许可协议分享发布您贡献的作品。

源代码开源协议为GPL-3.0,允许开源情况下商用,但请标明原作者和工程链接,不得售卖源代码或作为闭源项目发布

另外,按照GPL-3.0协议要求,由此项目衍生出的代码如果分享或商用,必须以GPL3.0开源并在显眼的地方声明

此处的开源指使任何人可以自由且免费地获得、修改源代码和(或)硬件工程源文件

 

另外因为用了彩云天气的API,仅供学习研究,如果需要商用,则不得包含此源代码或由其产生的二进制文件

 

项目相关功能

此项目后端使用Arduino(C++ PlatformIO)开发,并移植了Lua解释器用于执行图形化编程代码

主要设计功能如下:

  1. 通过彩云天气API获取本地天气并显示
  2. 使用ESP32内部RTC提供时钟信号,经过两次NTP同步进行线性偏移补偿,可做到日误差小于2秒
  3. 内置Web服务器用于配置天气位置,管理内部文件等
  4. 内置GUI框架,包括对话框、菜单等
  5. 简易电子书功能
  6. Bilibili粉丝显示器
  7. 完善的设置菜单
  8. 通过蜂鸣器播放经过转码的Midi音乐
  9. 简易的闹钟
  10. 内置Blocky 图形化开发环境,只要有浏览器就能为它添加功能

此项目以易用性和可二次开发为核心目标:

  1. 系统框架与App解耦,每个“App”源码为单个cpp文件,复制到app目录后自动识别编译并添加到APP列表,无需其它修改操作。TF卡、传感器等外设在第一次开机时自动识别,由系统统一管理,不使用时自动断电(传感器进入省电模式)
  2. APP为事件驱动,有较为完善的GUI框架,可以快速实现想要的功能,另外,电子书App等内置App在不刷新屏幕时和关机状态耗电量相同(注意:GUI框架在等待用户输入时不会进入休眠模式)
  3. 无需配置API KEY,无需手动设置时钟误差修正,无需手动配置Bilibili UID(手机扫码登录),只需填写天气GPS坐标(GCJ-02)和WiFi密码
  4. 对于不会配置环境的小伙伴,提供全功能二进制文件,直接烧录运行也可体验所有功能
  5. 内置Lua语言解释器和Google Blockly开发环境,可通过lua语言编写APP,网页端上传后直接运行,同时可以无缝添加到App列表,设置为主屏幕App等

在安全性和稳定性方面

  1. PCB设计有电源自动切换电路,无需担心电池循环充放电引发危险
  2. 软件方面一定时间未操作自动关机,避免电池电量耗尽(只限于App选择界面和网络重新配置界面,其它需要用户确认的地方不会自动休眠)
  3. 同时也设计有电量检测功能
  4. 万一遇到无限重启的情况,可先按住向左键后,按背面的复位按钮,这将立即关闭此设备,避免频繁刷新烧坏屏幕

 

项目属性

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

 

项目进度

  • 2023/07/24 功能设计,开发板购买
  • 2023/07/27 功能可行性分析完成,基本开发思路确定
  • 2023/08/06 各电路模块功能测试通过
  • 2023/08/08 创建EDA项目
  • 2023/08/09 元器件选型完成,PCB设计完成,等待审核生产
  • 2023/10/02 公开源代码到Github
  • 2023/10/17 完成项目介绍

设计原理

硬件部分都比较简单。除了那个电源自动切换电路是网上找到的,我也不知道原理,但是可以用,还特别稳定。

整体框图:

cHOoml8CFAasflThaCKZ58V2LlGVJxYG67Q58VsS.png

AppManager类管理全部App(包括Lua App)的生命周期

HAL类为硬件相关功能,同时提供自动连接WiFi、NTP同步等服务

Peripheral类管理已安装的外设,同时在App运行时按需开关外设电源(或进入与退出省电模式)

Lua解释器解释运行Lua App,实现App的动态添加与删除

FreeRTOS为ESP-IDF提供的实时操作系统,此处主要用于实现多线程

 

软件说明

系统 主要 运行下面三个任务

Ih4QWmWhUTXjas6OF4SAZF1fXDp3b8GuCoS8pZmb.png

AppManager:用于执行App代码,判断下次休眠时间

HAL:自动更新时间和电池电压,并处理按钮事件

Lua调试:在网页端调试Lua时创建,方便在需要时立即结束程序运行,同时防止Lua进程阻塞web服务器运行

系统初始化步骤如下

jxK6g9gsoGfcBoPnHP7nQ1UNslmlgZLrmBtmokCI.png

 

实物展示

背面

主页面(下方阴影部分为降水量)


预警信息(按任意键返回)

App选择(在电子书应用外任意App中长按中键,也可以在设置中选择任意App作为主屏幕App)

完善的设置菜单

扫码二维码连接配置用的热点(也可以手动输入密码或使用SmartConfig)

电子书(长按左键上一页,长按右键下一页,继续长按右键可进入菜单)

Bilibili二维码登录

都拿到cookies了,剩下的功能就靠大家了  其实是因为我不会设计UI[doge]

简易的Bilibili粉丝数显示界面(UI非常简易,但功能超过网上80%的作品)

外设自动探测,可以用来检验传感器是否正确焊接

--Blockly IDE 简介--

开发这个功能也是为了解决自定义表盘的问题

可以随时修改代码、互相分享工程、减少调试所需的编译上传时间

网页端(可以在左边使用“积木”编程,或者直接编辑Lua代码,但不支持Lua反向转化为Blockly)

使用WebSocket实现终端功能,lua的输出和报错将被重定向到这里

Lua运行结果

App创建

创建的App,除了能卸载或从TF卡安装,用起来和内置App完全没有区别(内置App是基于C++的)

详细程序编写说明请看Github Readme

文件管理

预览“lbm”图像文件(实质上是xbm二进制版,可用GIMP保存为xbm格式,后使用GitHub仓库tools目录下xbm转lbm工具)

lua已实现相对目录(如果需要访问资源文件,请将其放在webtmp文件夹下,创建App时会一并复制,支持.表示当前目录,不支持..文件夹)

sd卡挂载到/sd/,内置littlefs挂载到/littlefs

蜂鸣器支持播放.buz文件(midi转buz的python程序同样放在GitHub的tools目录下)

更多Lua函数添加中,也欢迎大家贡献自己的代码或工程文件

 

DIY注意事项

这回BOM很全,可以直接照着买

经小批量生产测试,硬件已经没有BUG了,如果烧不进程序等问题只可能是没焊好

HW3.0硬件已修复之前提到的全部问题,软件只支持2.0及以上版本

电池接口如果选择连接器,可能会导致无法装进外壳

原理图“可选功能”整页都可以不焊接,系统会自动识别都焊了什么

ESP32可以用ESP32-WROOM系列,系统会自动根据Flash剩余容量调整LittleFS分区大小

千万别买带PSRAM的ESP32!!!

焊好后,烧录好程序,跟着OOBE配置就行。

一键烧录最新固件:https://diylxy.github.io/LiClockWebFlash/

 

最新源代码和编译好的固件在这个网页的最上面

(附件按照开源平台的要求,包含了2023年12月2日更新的源代码)

3D模型也在Github仓库里

如果觉得工程不错,别忘了点赞收藏,谢谢大家!

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
简介_1.mp4
1005
2
源代码.zip
3709
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航