在一个线下公共空间里,放置一些计算设备,参与者在这个环境里,用编程表达自己的想法,构建自己感兴趣的项目。大家的探索过程和成果都置于公共视野,想法和经验持续流动,彼此启发,就像 Scratch 线上社区。 – 《公共树莓派》

本文是 《公共树莓派》 的第一个案例。

树莓派守护者!

树莓派守护者是我在2016年做的一个项目。 那时刚玩树莓派不久。

树莓派守护者! 的想法是: 使用树莓派 + 超声波传感器,构建一个小偷报警器,解决我童年时候遇到的一个问题:

老板说自己早便发现他们入室盗窃,为了证据确凿,设计了一套精巧的陷阱:在柜台入口,近地面处系一根绳子,绳子一直连到老板睡觉的卧室,在卧室里系上易拉罐。少年们再次登门,触发开关,弄倒老板卧室的易拉罐,老板醒后,有备而来,少年们毫无知觉,来个瓮中捉鳖. – 树莓派守护者!

我觉得这计划稍有不足:

有一处不够优美:报警器竟是绳子做的!如果少年们更警觉些,看到绳子,或是踩到之后便逃离,老板恐怕要竹篮打水一场空。

我想用树莓派作为解决方案:

将超声波传感器(或者红外线)放在柜台下边,当有人路过时,树莓派给老板手机发送一条短信(或邮件),这个隐形的卫士几乎没有破绽

后来我发现,这装置可以用来守护私密空间: 当树莓派检测到有人进入房间,给电脑发送信号,将屏幕切换到阅读状态。

在公共树莓派中构建它

我在公共树莓派中构建的这个项目,希望能通过这些项目分享我的经验,并希望团队成员能 remix 它,去构建自己的项目。

也想借此分享我喜欢怎样使用树莓派(Linux).

整个项目在一个 notebook:distance.ipynb里, 在局域网里打开树莓派的 jupyterlab 地址,就可以发现并运行这个项目,当然也可以通过 SSH/VNC 进入树莓派运行它。

项目的开头使用 markdown 对项目做了基本描述:从想法的来源到使用到的核心库。

今早,我给团队成员分享我的这个项目,演示完抓小偷的功能,我邀请大家进入 jupyterlab 里与我结对编程,通过修改 notify 函数,将通知推送给自己。

接下来演示了如何使用 git 管理这个项目,以及如何将 jupyterlab 当作主要的编程环境: 文件上传与管理以及系统管理(terminal)都可以在 jupyterlab 里完成。

分享结束之后大家各自都有想实现的新想法,并希望我给出进一步学习 Git/Linux 的新资料,我把它们放在了这里

小结

项目中的好几个部分是通用的:

  • 展示树莓派社区最好的GPIO驱动的用法,用于与各类传感器交互
  • 展示如何推送通知(展示了2种方式),这在大多数项目中都很有用
  • 展示如何在 jupyterlab 中使用 terminal
    • 在terminal里使用 ngrok 将 jupyterlab 投射到公网
  • 分享到 Github: Public_RPI_PBL
    • 使用 Git 做版本管理
    • 使用项目wiki写博客
  • 讨论了开机自启的思路(暂未实现)

大家的热情是超出我的预期的,几乎每个人都觉着过去这些令人生畏的东西非常有意思。

我们希望这个公共计算空间随着时间的演进,会持续产生新项目新想法,彼此启发与混合。

就像你家阳台的花盆里所发生的事情。

参考