手机遥控的红包发射器。有了它,你就是今年春节最靓的仔!📱🧧🚀

2021-02-08 12:15:44 +08:00
 rocwang


我业余时间用树莓派制作了一个红包发射器,前后断断续续大约花了三个月时间。

* [视频演示]( https://www.bilibili.com/video/BV1fT4y1N7Ng)
* [客户端 Demo]( https://kiwiberry.nz/)
* [客户端源代码]( https://github.com/rocwang/cash-launcher)
* [服务器源代码]( https://github.com/rocwang/cash-launcher-server)

## 客户端





客户端是一个手机 Web App,用于控制发射器硬件。 这个 App 会连接安装在发射器中的树莓
派,使用 WebSocket 将手机朝向数据和手指滑动速度实时地发送至服务器。而服务器会用这
些数据来控制发射器的动作。

App 有两个页面:

* 菜单:提供数种纸币和红包以供选择。
* 发射界面:显示一叠钱。用户上滑即可发射。

App 使用 Vue 3 以及 vue-router 实现。为了在手机上实现流畅的动画效果,发射 UI 的那一叠钱
是使用一个 HTML 2D Canvas 库——[konva]( https://github.com/konvajs/konva) 实现的。另
外我还使用了 rxjs 来帮助实现用户操作和设备朝向事件流向 WebSocket 消息的变换。

## 服务器

服务器跑在树莓派中,使用 Node.js 实现,提供 HTTPS + WebSocket 服务,用于将客户端发来
的控制信息转换为发射器的控制信号,最终旋转发射器和开启其内部的直流电机,将纸币从
不同角度吐出去。

服务器使用[ws]( https://www.npmjs.com/package/ws) 库接受客户端的连接。有两个接口:
`/orientation`和`/velocity`。它将手机朝向和手指滑动速度值转化为脉宽调制信
号和使能信号,用以控制连接在树莓派上的两个伺服电机和一个直流电机。底层的 GPIO 操作交
由[rpio]( https://www.npmjs.com/package/rpio) 处理。服务器同样利用了 rxjs 来实现数据
流的变换。

服务器还提供了一个`/siri`接口。当其被调用时,发射器上的直流电机会工作半秒钟。视
频中一开始使用 Siri 来控制发射器就是使用此接口实现的。

---

(不知为何,V2EX 的 Markdown 发帖接口总报 500 错误,所以只能使用 Default 接口。)
3167 次点击
所在节点    分享创造
10 条回复
rocwang
2021-02-08 12:25:43 +08:00
ThirdFlame
2021-02-08 12:48:50 +08:00
有趣 更想看发射部分的物理实现
whyou126
2021-02-08 12:55:07 +08:00
大佬牛逼
Tink
2021-02-08 13:23:44 +08:00
UncleBrandy
2021-02-08 13:50:47 +08:00
帅的一批
lihanyu
2021-02-08 15:07:46 +08:00
我缺的是发射器吗
neekeV2
2021-02-08 15:47:23 +08:00
默默的看了眼我那正在吃灰的树莓派 2B
rocksolid
2021-02-08 15:50:16 +08:00
我要的是接收器
Cytion
2021-02-08 16:00:57 +08:00
只能买一箱冥币清明再用了
gba
2021-02-09 11:15:37 +08:00
有点萌

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX