Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
【RT-Thread软件包赛】桌面台历
发布于 2019-12-08 21:29:05 浏览:3298
订阅该版
* 本帖最后由 进击的错觉 于 2019-12-8 21:47 编辑 * **前言** 这个桌面台历准备了很久,中间经历很多坎坷,终于阶段性实现了目标,非常欣慰。此处按下不表,先上图!**一些图片 ** **设计草图 **   **实拍图 **屏幕放大图 **Web端 ** 以上部分图是用我的手机拍摄的,个别地方拍花了,还请见谅!
查看更多
24
个回答
默认排序
按发布时间排序
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]布局[/b][b]整体[/b][list] [*][align=left]左上角是一个墨水屏幕[/align] [*][align=left]右上角是5个触摸按键[/align] [*][align=left]下方是57个日期,每个都是触摸按键[/align] [*][align=left]白色方框是另外一块PCB电路板,上面有周一到周日的英文缩写[/align] [*][align=left]下方有两个空槽,有两条细长的PCB可以与之榫卯,形成一个夹角使电路板可以稳定立在桌面上[/align] [*][align=left]PCB使用黑油喷锡工艺,正面几乎看不到电路[/align] [*][align=left]背面拥有芯片和电子元件[/align] [/list][b]墨水屏[/b][list] [*]左上角是星期 [*]紧邻右侧是月份 [*]中间数字是日期 [*]下方是纪念日期 [*]最下方是农历 [*]右侧上方是备忘事项,前面实心矩形表示完成 [*]下方为每日一言,随机从网络上获取的一些文字 [/list][b]功能[/b][list] [*]墨水显示屏可以显示日期、星期、农历、节日 [*]以及数条备忘事项,每条备忘事项前都有一个完成状态框 [*]通过右上方的上下触摸按键移动到对应待做事项 [*]点击确定可以标记为当前备忘的完成状态,再点击一次标记为未完成 [*]有上角的左右触摸按键,点击可以查看前一天或后一天的备忘事项 [*]点击下方月历每个日期,都可查看当前月份不同日期的备忘 [*]可以通过WIFI联网 [*]手机端或者电脑端可以通过网页同步相关备忘,可以随时更新和查看状态。 [/list]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[i=s] 本帖最后由 进击的错觉 于 2019-12-8 22:00 编辑 [/i] [b]操作视频[/b][attach]12629[/attach][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px][media=x,500,375]https://www.bilibili.com/video/av78329356/[/media][/size][/font][/color][/align] [align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 视频是我用手机拍的,像素和清晰度有点渣,还请见谅。[/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]一点遗憾[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 受制于时间工期的限制,这是第一块板子,主要是为了验证功能,所以并没有使用沉金工艺,所以,触摸按键的颜色都是银白色的,但到手发现效果也不错。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 不过,下一版继续优化的话,肯定会比这一版更漂亮![/size][/font][/color][/align][b]架构[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]整个桌面台历项目由三部分组成:[/size][/font][/color][/align][list] [*]业务处理服务 [*]网页客户端 [*]设备端 [/list][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]因为前两个都在服务器端,所以此处简略一写,不再详述。[/size][/font][/color][/align][b]业务处理服务[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 设备通过MQTT传输数据,进入到业务处理服务中,并将对应的数据进行加工和存储。这部分是使用了Python和Mysql。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]这部分实现的主要功能是:[/size][/font][/color][/align][list] [*]MQTT消息的监听与接收 [*]Topic的分级解析和转发 [*]数据的存储 [/list][b]网页客户端[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 最开始考虑过多种方案,比如微信小程序、手机APP、网页。最后综合考虑,使用了当前的web方案,使用了Flask。用户通过网页登录,便可以添加修改备忘事项。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 当前版本拥有的功能:[/size][/font][/color][/align][list] [*]用户通过设备编号登陆 [*]切换不同的日期查看备忘事项 [*]添加备忘 [*]修改备忘 [*]删除备忘 [/list]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[i=s] 本帖最后由 进击的错觉 于 2019-12-8 21:32 编辑 [/i] [b]设备端详细介绍[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 采用了集成WIFI的联盛德W600芯片,搭配国产物联网操作系统RT-Thread。不得不在这里夸赞一下RT-Thread,上手很简单,而且有着丰富的软件包可以使用,编译环境和Linux下的编译非常相似,给我非常熟悉的感觉。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 设备的硬件方面,采用了一块PCB作为主面板,正面只有一块墨水屏作为显示区,并且吸收了传统台历的特点,使用一块可以移动的日历框划分区域,可以直观的看到每月的日期。PCB背面焊接了相关的元器件,并且搭配了电池,可以脱离电线的束缚,就像一款真正的纸版桌面台历。[/size][/font][/color][/align][b]硬件说明[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] W600芯片可用的GPIO有17路,当前已经都被我使用了,如下图:[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px][attach]12616[/attach][/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]因为bs8116a-3 的触摸芯片i2c地址无法更改,而我又使用了3路,只能使用多个GPIO口。为了缩减使用,我将三路的I2C_SCL并为一路,节约了两个GPIO。三路触摸芯片又各自占用了一路GPIO作为中断引脚。故,仅触摸芯片就使用了7路GPIO。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] LED7则是触摸按键灯。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] PA5、PA4则用于串口。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] PA0用于配网按钮。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 另外,墨水屏使用了SPI。[/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]架构说明[/b][code]desk_calendar/ ├── Kconfig ├── README.md ├── SConscript ├── SConstruct ├── applications │ ├── SConscript │ ├── defines.h │ ├── init.c │ ├── keyboard.c │ ├── logic.c │ ├── main.c │ ├── mqtt.c │ ├── network.c │ ├── qrcode_array.h │ ├── screen.c │ └── timer.c ├── makeimg.py ├── packages │ ├── EasyFlash-v3.3.0 │ ├── SConscript │ ├── airkissOpen-latest │ ├── bs8116a-latest │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SConscript │ │ ├── inc │ │ ├── samples │ │ └── src │ ├── cJSON-v1.0.2 │ ├── fal-v0.3.0 │ ├── lunar_calendar-latest │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SConscript │ │ ├── inc │ │ ├── samples │ │ └── src │ ├── netutils-v1.1.0 │ ├── packages.dbsqlite │ ├── pahomqtt-v1.1.0 │ ├── pkgs.json │ ├── pkgs_error.json │ └── u8g2-c-latest ├── ports │ ├── SConscript │ ├── easyflash │ │ ├── SConscript │ │ └── ef_fal_port.c │ ├── fal │ │ ├── SConscript │ │ ├── fal_cfg.h │ │ ├── fal_flash_port.c │ │ └── fal_flash_sfud_port.c │ └── wifi │ ├── SConscript │ ├── wifi_config.c │ └── wifi_config.h ├── rtconfig.h └── rtconfig.py [/code][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]以上就是我项目文件夹的结构设置,其中软件包部分略有缩减。[/size][/font][/color] [color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px][b]applications[/b][align=left] 这里放置了我的主要代码,共11个文件,c文件8个,头文件2个,编译文件1个。[/align][code]applications ├── SConscript /* 编译文件 */ ├── defines.h /* 变量 函数声明 */ ├── init.c /* 初始化 */ ├── keyboard.c /* 键盘相关处理 */ ├── logic.c /* 逻辑处理 */ ├── main.c /* 主函数 */ ├── mqtt.c /* MQTT操作相关 */ ├── network.c /* 网络操作相关 */ ├── qrcode_array.h /* 配网二维码数组 */ ├── screen.c /* 屏幕操作相关 */ └── timer.c /* 计时器 */[/code][align=left]下面我随意挑选部分内容简单介绍一下:[/align][b]defines.h[/b][code]#define MAX_TODO_SIZE 8 typedef struct { char content[64]; short status; } TODO; typedef struct { char date[16]; TODO todo_list[MAX_TODO_SIZE]; char festival[64]; char words[256]; } CALENDAR; extern CALENDAR calendar_data;[/code][align=left] 此处定义了我传输数据的结构体,大部分数据都是存储在这个结构体中。[/align][b]init.c[/b] [code]/* 集中初始化 */ void init_all(void) { fal_init(); easyflash_init(); init_mq(); init_sem(); init_keyboard(); hwtimer_init(); }[/code][align=left]这个函数将各个部分放置到一起,按照顺序逐个初始化。[/align][b]keyboard.c[/b] [code]/* 按键触发调用函数 */ void got_key_callback(rt_uint8_t key_code) { if (REFRESH_END_FLAG == 1) { /* 发送消息到消息队列中 */ int result = rt_mq_send(&mq, &key_code, 1); if (result != RT_EOK) { rt_kprintf("rt_mq_send ERR\n"); } touch_led(); start_timer(30); REFRESH_END_FLAG = 0; } }[/code]这里便是实现了检测到按键触发后的逻辑,将键值通过消息队列发送出去,并且启动按键提示灯和开始按键计时。 [/size][/font][/color]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[i=s] 本帖最后由 进击的错觉 于 2019-12-8 21:31 编辑 [/i] [b]逻辑流程图[/b][align=left][attach]12617[/attach][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 大概的流程如上,主要分为上电,配网,以及点击按键。每个部分逻辑上都比较简单,就没有详细展开。[/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]软件包[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]这里我使用到的软件包有9个,分别是:[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]EasyFlash-v3.3.0[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] airkissOpen-latest[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] bs8116a-latest[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] cJSON-v1.0.2[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] fal-v0.3.0[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] lunar_calendar-latest[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] netutils-v1.1.0 [/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]pahomqtt-v1.1.0 [/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]u8g2-c-latest[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]其中,我贡献的软件包有两个:[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]bs8116a-latest 是 合泰触摸芯片的操作软件包 ;[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]lunar_calendar-latest 是一个阳历日期转阴历日期的软件包;[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]这两个最开始是我写在项目代码当中,后来进行代码优化的时候,觉得可以重构出来,形成单独的软件包。于是用了一点时间重新改写了一下,已提交到了RT-Thread的Package代码仓库当中,相关资料欢迎到软件包仓库中查阅。[/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]代码地址[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]bs8116a-latest 代码地址:[color=rgb(3, 102, 214)][url=https://github.com/illusionlee/bs8116a.git]https://github.com/illusionlee/bs8116a.git[/url][/color][/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]lunar_calendar-latest 代码地址:[color=rgb(3, 102, 214)][url=https://github.com/illusionlee/lunar_calendar.git]https://github.com/illusionlee/lunar_calendar.git[/url][/color][/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px]项目代码地址:[color=rgb(3, 102, 214)][url=https://github.com/illusionlee/desk_calendar.git]https://github.com/illusionlee/desk_calendar.git[/url][/color][/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
[b]未来将要做的[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 这个版本的软件和硬件还有着很多不足,还有很多可以继续优化和改进的地方。未来即将要做的有:[/size][/font][/color][/align][b]设备端[/b][list] [*]滑框指示灯 在最下面添加一排LED,对应滑框的位置亮起来,可以直观的告诉用户,滑框应该摆放在什么位置 [*]按键反馈灯 因为墨水屏的原因,会经常感觉没有点击到按键,所以需要加个触摸反馈 [*]底部支架优化 支架的作用不仅仅是用作支撑,还可以画成尺子,两根支架合成剪子,充分发挥办公室文具的作用 [*]提示音 可以使用蜂鸣片,在设定的时间进行提示,缩减查看屏幕的次数 [/list][b]服务端[/b][list] [*]架构优化 当前自己搭建的服务器,比较简陋,需要重新设计 [/list][b]客户端[/b][list] [*]用户注册 当前不允许用户自行注册,未来需要完善这部分功能 [*]界面优化 这块不专业,自己随便配了色,虽自我感觉良好,但只能认清现实,我不适合做UI设计师 哈哈 [*]…… [/list][b]结语[/b][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 这个桌面台历,在2018年年底就已经有一些构思,随着时间的推移,终于在2019年10月上旬正式下决心进行制作。中间遇到了很多困难,有无数个抓狂的时刻,但好在坚持了下来。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 不知我利用了多少的业余时间,只记得很多个夜里,凌晨一两点我还在抓挠着头发,思考着BUG的原因。也不知多少个清晨,被闹钟吵闹多次才叫醒的我想过放弃。人生艰难,坚持不易。[/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 感谢我的好友,帮我完成了硬件部分,若不是有他作为我坚强的后盾,我想我可能在这么短的时间完成这个台历。在这里谢谢他![/size][/font][/color][/align][align=left][color=rgb(36, 41, 46)][font=-apple-system, system-ui, "][size=16px] 最后,如果你有什么好点子或者想法,欢迎分享给我。[/size][/font][/color][/align]
进击的错觉
2019-12-08
这家伙很懒,什么也没写!
因为是使用Markdown编写的Readme,我贴到论坛之后可能有些变形,特此上传了一版PDF。 [attach]12626[/attach]
撰写答案
登录
注册新账号
关注者
0
被浏览
3.3k
关于作者
进击的错觉
这家伙很懒,什么也没写!
提问
9
回答
39
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
FATFS文件系统详解
2
PY32移植RT-Thread Nano记录
3
keil+env在STM32H743上实现pwm呼吸灯
4
STM32H7 实现 BootLoader 内 SDRAM 的初始化的注意事项
5
PSoC™ 62 温湿采集功耗测试
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
WIZnet_W5500
RTC
rt-smart
UART
flash
rtthread
packages_软件包
freemodbus
潘多拉开发板_Pandora
I2C
cubemx
FAL
定时器
PWM
BSP
AB32VG1
ADC
中断
消息队列_msg_queue
SDIO
msh
keil
Debug
编译报错
socket
LVGL
SFUD
C++_cpp
本月问答贡献
xiaorui
3
个答案
1
次被采纳
rcp
3
个答案
1
次被采纳
RTT_逍遥
2
个答案
1
次被采纳
WKJay
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
小权一句两句
1
篇文章
4
次点赞
喵小黑
1
篇文章
4
次点赞
jaffer
1
篇文章
2
次点赞
Agony_L
1
篇文章
1
次点赞
疯洋CrazySheep
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部