丨budboool · 2023年11月09日 · 广东

小时候画在手腕上的表,我让他真正动了起来

小时候,我们总是充满想象力和创造力。

在那个年龄,我们没有真正的手表,但我们总是喜欢在纸上画出自己的手表,仿佛它真的能告诉我们时间。

ezgif.com-optimize (3).gif

为了弥补童年的遗憾,作者找到了一个智能手表的开源项目——NWatch,并把他移植到了R128开发板上。

640.jfif

项目简介

本项目基于ZakKemble的开源项目NWatch,与原作者的NWatch不一样的是,作者将其移植到DShanMCU-R128s2-DevKit开发板的同时相比于原作者添加了一些功能,比如优化屏幕刷新,使显示更流畅,以及添加蜂鸣器、旋转编码器、DHT11温湿度传感器。

菜单滑动.gif

赛车.gif

硬件准备

本项目的基础用意是提供一个综合的示例进行学习参考,所以没有将所有硬件集成到一小块开发板上,而是采用面包板来实现手表功能效果,所需要用到的硬件有以下几个:

  • DShanMCU-R128s2-DevKit开发板
  • 0.96寸OLED(SSD1306)
  • EC11旋转编码器模块
  • 红外接收模块+红外遥控器
  • 无源蜂鸣器模块
  • DHT11温湿度模块

菜单滑动.gif

image.png

软件系统

手表上的所有功能都伴有动画效果。

原作者对软件系统的代码花费了大量时间进行优化渲染,优化的内容就包括了将位图图像从闪存复制到RAM中的帧缓冲区,并通过 SPI 将帧缓冲区发送到 OLED,最终使得手表能够在几乎所有区域的显示中可以保持100+FPS。

球转.gif

一些主要的动画内容:
1.进入和退出睡眠模式时的 CRT 动画(类似于某些 Android 智能手机具有的 CRT 动画)。
2.主要时间数字切换时具有动画效果。
3.菜单有一个向左/向右滚动的动画,选择一个选项将会有当前菜单从屏幕上掉下来的动画效果。

640 (1).jfif

转换时钟.gif

二次开发

打开以下文件进行修改:

R128-S2-SDK/board/r128s2/pro/configs/sys_config.fex

IIC引脚配置:

[twi1]
twi1_sck        = port:PB00<3><1><default><default>
twi1_sda        = port:PB01<3><1><default><default>

PWM配置:

[pwm6]
pwm_used        = 1
pwm_positive    = port:PA26<4><0><2><default>

接下来添加100ask\_r128\_demos,首先clone仓库或者下载仓库压缩包到本地,并将仓库目录放在sdk的这个目录下面:

R128-S2-SDK/lichee/rtos-components/thirdparty/100ask_r128_demos

赛车.gif

打开文件进行编辑

R128-S2-SDK/lichee/rtos-components/thirdparty/Makefile

在文件的最后面或最前一行加入下面的内容:

obj-$(CONFIG_COMPONENTS_100ASK_R128_DEMOS) += 100ask_r128_demos/

打开文件进行编辑

R128-S2-SDK/lichee/rtos-components/thirdparty/Kconfig

在文件的最后或最前一行加入下面的内容:

source components/common/thirdparty/100ask_r128_demos/Kconfig

红外控制.gif

源码获取

基于R128-S2设计的全套开发板已上线淘宝百问网韦东山老师个人店进行售卖,包含黑色的DshanMCU-R128s2-R16N16模组和全套的DshanMCU-R128s2-DEVKIT。

Gitee源码获取链接:

https://gitee.com/weidongshan/100ask_r128_demos/tree/master/nwatch

GitHub源码获取链接:

https://github.com/100askTeam/100ask_r128_demos/tree/master/nwatch

如果你不想自己编译或者不需要二次开发,那么可以从下方获取固件:

Gitee处Releases获取:

https://gitee.com/weidongshan/100ask_r128_demos/releases/tag/v0.0.1

GitHub处Releases获取:

https://github.com/100askTeam/100ask_r128_demos/releases/tag/v0.0.1

烧写固件到DShanMCU-R128s2-DevKit在新窗口打开后开机会自动启动NWatch任务,如果没有自动启动在串口终端输入命令然后按回车即可nwatch\_100ask 3。

更多关于项目的详情可以前往百问网R128综合项目开发案例界面了解。

https://aw-r128.100ask.net/zh/rtos/demo/part2/chapter1.html

推荐阅读
关注数
17
文章数
98
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息