利用树莓派做一个"私人助理"

背景

最近老是记不住一些事情,写到备忘录有时候忘记看手机也白扯。想着是否用一些更明显的”提醒动作”来告知自己要做什么了。

想法

“明显的提醒动作”,在工位上的话,无非就是闪烁的灯光+刺耳的声音。那么满足这个的,树莓派就非常合适,顺便把尘封已久的技能拿出来擦亮一波。
那么有了这个方向,简单规划一下:

  • 利用树莓派做基础环境支撑
  • 利用rgb led hat做灯光提醒展示
  • 利用3.5mm小喇叭做音频输出
  • 写点python脚本

成果

先展示一波成果吧,编写的程序中,rgd led阵列灯可以展示多种图形,从而来区分到底我该干什么事情了。

  • 比如这个笑脸,就是代表早上站会要开始了
  • 比如这个感叹号,就代表要写运营报告了
  • 等等

还有很多模型,也可以自己写一些模型,不过8x8的阵列限制比较多,所以没啥特别好看的。除非你买一些其他的显示屏接上。

开始

首先我们做这个之前,简单规划一下步骤:

  • 给树莓派刷好系统
  • 外接一个rgb led hat
  • 外接一个3.5mm小喇叭
  • 编写程序
  • 增加定时任务

给树莓派刷好系统

这个不说了,我的就是一个树莓派4B,网上刷机教程多的不行,不浪费时间写这玩意了。

外接一个rgb led hat

买了一个rgb led hat,本来想买一个sense hat,最后想想其实用不到这么多功能和额外的传感器,干脆买一个最简单的led阵列就好了。
我直接买的就是支持gpio的hat,所以直接对接起来就好,非常简单。如下图:

最终我们给树莓派插上电,连接上网络大概就这样吧:

外接一个3.5mm小喇叭

对于播放声音,3.5mm的耳机音响,最合适不过了。不用额外的配置,插上就能用。

编写程序

首先确认一下需求:

  • 支持展示不同模型(图案)
  • 支持控制显示的时长、频率等
  • 支持自定义提醒声音
  • 支持增加定时任务

有了上面的内容,我写了代码,没啥难度,就是一些简单的逻辑:

1
https://github.com/gsgs-libin/raspberrypi-remind

手动运行

可以先看一下他的运行帮助:

1
2
3
4
5
6
(remind) root@raspberrypi:/www/remind# python remind_index.py -h
test.py -t <taskName> -m <modelName> -v <voice>

-t 指定任务名称
-m 指定模型名称
-v 是否输出声音

那么开始运行吧:

1
2
3
4
(remind) root@raspberrypi:/www/remind# python remind_index.py -t output_weekly_report -m exclamation -v false
use task: output_weekly_report
use model: exclamation
voice status: False

效果展示

声音提醒

这个需要接入百度的api,然后个人申请的有调用限制,我白嫖了一个无限制的,放到github上了,想要用的可以直接用。

另外这个可以有妹子音,还是非常不错哦!

定时任务

利用crontab,增加自己一系列提醒事项,举个简单例子吧

每天早上10点提醒我写日报:

1
0 10 * * * root python remind_index.py -t output_weekly_report -m smile -v false