开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历
简介
平时经常会有一些事情忘记,比如今天几号,星期几,哪天有什么事情要做。有时候写在本子上,有时候记在微信里,但有时候连记在哪里都忘记了……
为了应对这个情况,我制作了一款带有备忘录的台历放在工作台上,提醒自己需要做的事情。
功能描述
作品功能列表:显示阳历日期、显示阴历日期、显示周几、显示纪念日、显示当日备忘事项、显示每日精选句子、点击触摸按键可以选择日期、标记待做事项状态、可通过MQTT将备忘事项传到云端、通过二维码对设备配网连接WIFI。
作品使用的软件包列表
1、EasyFlash软件包
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。
负责部分配置参数的存储。
2、fal软件包
FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API 。
参数保存操作依赖此包。
3、airkissOpen软件包
腾讯WiFi设备一键配网协议,可以方便的对设备进行WIFI的网络配置。
帮我解决了联网一系列的烦恼,可以专注于完成业务逻辑。
4、netutils软件包
RT-Thread 可用的全部网络小工具集合,我用到了其中网络时间同步的功能。可以是设备连上网络之后,自动同步时间,让我不用关心时间是否准确。
5、pahomqtt软件包
在 Eclipse paho-mqtt源码包的基础上设计的一套 MQTT 客户端程序。
与服务器通信依赖此包,可以让我很轻松的与自己的MQTT服务器进行通信,而不必关心中间的实现细节与过程,能够把更多的工作中心放到业务处理中。
6、cJSON软件包
一款经典的json格式工具包,在C语言中通过API接口可以轻松解析和封装JSON数据。
通过MQTT传输的数据均是通过cJSON进行处理,结构化的数据更简洁直观,能把更多的注意力放到业务逻辑中。
7、u8g2-c 软件包
u8g2是一个单色屏驱动,通过它我顺利驱动了墨水屏。利用其丰富的API,我将数据生动的展现在墨水屏上。
8、【新增】lunar_calendar软件包
lunar_calendar 是一个将公历日期转换成阴历的工具软件包。
日期一般有阴历有阳历两种历法,软件包仓库并没有这个软件包,而作为一款台历,没有阴历会显得非常不完整。所以,我将阳历阴历转换的代码封装成了一款软件包,也方便为今后更多的朋友更简单的进行阴阳历的转换。
9、【新增】bs8116a软件包
bs8116a 是合泰的bs8116a-3的触摸按键芯片的中断使用软件包。
我在这个项目中使用到了bs8116a-3触摸按键,但是软件仓库中的按键软件包并不能完美实现我的需求,所以我就自己实现了相关的业务。这个软件包的其中一个特点就是可以同时使用多路i2c,连接多个bs8116触摸芯片。并且通过中断的形式,减少了系统资源消耗。通过相关参数的配置,可以达到低功耗的效果。
以上软件包均可以在以下地址找到(请复制至外部浏览器打开):http://packages.rt-thread.org/
硬件框图
软件设计
逻辑流程图
大概的流程如上,主要分为上电,配网,以及点击按键。每个部分逻辑上都比较简单,就没有详细展开。
架构
这里放置了我的主要代码,共11个文件,c文件8个,头文件2个,编译文件1个。
1applications2├── SConscript /* 编译文件 */3├── defines.h /* 变量 函数声明 */4├── init.c /* 初始化 */5├── keyboard.c /* 键盘相关处理 */6├── logic.c /* 逻辑处理 */7├── main.c /* 主函数 */8├── mqtt.c /* MQTT操作相关 */9├── network.c /* 网络操作相关 */
10├── qrcode_array.h /* 配网二维码数组 */
11├── screen.c /* 屏幕操作相关 */
12└── timer.c /* 计时器 */
简单介绍一下:
defines.h
1#define MAX_TODO_SIZE 82typedef struct {3 char content[64];4 short status;5} TODO;6typedef struct {7 char date[16];8 TODO todo_list[MAX_TODO_SIZE];9 char festival[64];
10 char words[256];
11} CALENDAR;
12extern CALENDAR calendar_data;
此处定义了我传输数据的结构体,大部分数据都是存储在这个结构体中。
init.c
1/* 集中初始化 */
2void init_all(void) {
3 fal_init();
4 easyflash_init();
5 init_mq();
6 init_sem();
7 init_keyboard();
8 hwtimer_init();
9}
这个函数将各个部分放置到一起,按照顺序逐个初始化。
对应的源码均已开源。
Web操作界面
作品演示
代码地址(以下链接请复制至外部浏览器打开)
bs8116a-latest
代码地址:https://github.com/illusionlee/bs8116a.git
lunar_calendar-latest
代码地址:https://github.com/illusionlee/lunar_calendar.git
项目代码地址:https://github.com/illusionlee/desk_calendar.git
觉得不错的话,希望可以点一下☆小星星呀!另外,作者有个公众号,非技术类。闲来无事会发一些牢骚,有兴趣的朋友可以关注一下:平头创意
本期分享来自RT-Thread软件包大赛一等奖获得者李硕,如果你也有文章愿意分享/希望获得官方的写作指导,可以发送文章/联系方式邮件至邮箱:xuqianqian@rt-thread.com
RT-Thread最新发布
RT-Thread Studio:RT-Thread 官方团队历经一年用心打磨,推出了 RT-Thread Studio 集成开发环境(IDE),让大家告别 ENV,能够基于一款 IDE 快速的进行 RT-Thread 项目开发。
下载地址:https://www.rt-thread.org/page/studio.html
(请将以上链接复制至外部链接打开)
2019年RT-Thread线下培训全套资料下载即可:扫码关注“RT-Thread”公众号,并回复“2019”即可获得RT-Thread培训项目资料含:RTT-MicroPython图像识别、i.MX RT1050+RT-Thread云接入、RT-Thread网络收音机、基于RT-Thread的避障小车。
示意图
你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!
RT-Thread
让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。
长按二维码,关注我们
点击阅读原文,进入RT-Thread GitHub首页
你点的每个“在看”,我都认真当成了喜欢
开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历相关推荐
- RT Thread根据开发板制作BSP方法
之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...
- rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题
rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了 rt thread线程错误码 添加了一个可以查看CPU利用率的软件包CPU ...
- 项目分享 | 好牛X的开源项目,看完忍不住分享(高手作品分享)
Hi! 我是小小,今天是本周的最后一篇,本篇将会分享一个开源项目 flash-waimai 一个外卖系统,需要有手机端,后台管理界面,其中api部分基于Spring Boot前端部分基于Vue. 技术 ...
- Android开源项目分类汇总-转载
太长了,还是转载吧... 今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有 ...
- p2p linux 开源项目,权威开源项目(linux系统、sip、live555)
1.IT知识交流(语言工具.系统问题.开源项目交流) http://stackoverflow.com/tags 2.linux系统 www.kernel.orghttp://www.gnu.org/ ...
- github开源项目大集合(1)
github开源项目大集合 目前包括: Android 开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridV ...
- 2016年GitHub上史上最全的Android开源项目分类汇总
以下内容为转载 版主原网址 http://itindex.net/detail/51896-github-android-开源 GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时 ...
- Android 开源项目分类汇总(下)
Android 开源项目分类汇总(下) 九.ScrollView Discrollview 支持滚动时 Item 淡入淡出,平移,缩放效果的 ScrollView 项目地址:https://githu ...
- Android 开源项目分类汇总 APP功能汇总
Android 开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progr ...
最新文章
- 不以英语为中心,百种语言互译,FB开源首个单一多语言MT模型
- 【Python】垃圾分类,调用阿里云API
- 【MAVEN】如何在Eclipse中创建MAVEN项目
- matlab中多边形滤波器,几种常见空间滤波器MATLAB实现
- 计算机图形学图形旋转_计算机图形学翻译
- html5 标签大写还是小写,html5中有没有规定字母标签是用大写还是小写?
- 一加、OPPO官宣合并,“父子团圆”能否拯救一加?
- GitHub上最火的74个Android开源项目(三)
- android 轻量级工具,轻量级文件粉碎工具(File Shredder Tool) v1.0 免费版
- [恢]hdu 1017
- Memory Monitor
- 071 time模块
- keytool java_如何找到并运行keytool
- 自然语言处理——基于预训练模型的方法——第2章 自然语言处理基础
- 各大公司Java面试题超详细总结
- matlab建立模糊规则表,请教matlab怎样建立模糊控制查询表?
- android型号手机怎么截图,如何在Android手机上屏幕截图(仅限Rooted Phone) | MOS86...
- Flink sql:Table sink doesn‘t support consuming update and delete changes which is produced by node
- 惠普电脑window10系统怎么进入bios
- php7安装flarum,Flarum 安装
热门文章
- 计算机学术型硕士论文,专业学术型硕士培养
- html语言显示动态当前日期和时间,举一反三 浅谈在网页上显示日期的两种方法-网页设计,HTML/CSS...
- 图片压缩android bitmap compress(图片压缩)
- 51单片机(四)定时器中断(+数码管——24小时制钟表)
- 基于AI的服务器维修,AI赋能服务器,会带给我们什么?
- I2C中功能覆盖率的定义
- python 服务端渲染_使用Blender和Twine(Python)进行服务器端渲染
- 国密SM2,SM3,SM4的前后台(js和java)加解密写法
- 安卓熄屏录像_锁屏摄像app下载-锁屏摄像 安卓版v5.1.0-PC6安卓网
- python xlwings Excel 内容截图