攻略:如何用一天时间做一个开源版的Nest

上周科技界最大的新闻恐怕就是谷歌花了32亿美刀收购了大名鼎鼎的智能设备公司Nest。它的两款产品(智能温控器和烟雾探测器)以优秀的工业设计和颠覆性的功能为人称道。更重要的是,Nest向我们展现了什么才是用户想要的“物联网”产品。

不过,Nest固然好,在中国想要得到它可不容易。它在淘宝上的价格高达1200+人名币。不过不用担心,在这个创客横行的时代,神马硬件都是浮云。买不到?太贵?不用担心,我们来自己动手做一个。

来自于开源硬件领域的Spark已经利用自家的产品把这事搞定了,而且只是3个工程师花了一天的时间,成本也不过几十美金。让我们一起来看看他们是怎么做到的。

1. 硬件部分

先来看看我们都需要哪些零件:

(注:这些零件除了Spark Core之外,你在淘宝上都可以轻松找到,价格也会便宜不少。Spark Core可以考虑用Arduino + Wi-Fi模块来代替,不过程序部分可能会麻烦不少。)

搞定上述零件(除了外壳)后,我们需要把这些东西都用面包板连接起来,这个过程需要大概1个小时。使用面包板能够帮你快速制作出第一版的产品原型,而且便于修改。

下一步,是给我们的“Nest”做一个外壳。官方外壳的材质采用的是玻璃和铝的材质,这两种材料质感不错但是不方便在家里加工。我们选用木材和亚克力板来代替。

首先,我们用CNC来加工两块木头,一个作为固定的基座,另一个则是可以自由旋转的调温装置,顺时针转调高温度。接下来,用激光切割机加工三块亚克力板,一块是正面显示温度的面板,一块是背面固定在墙面上的安装板,第三块连接在可以旋转的那块木头上,使其成为一个电位器。

一旦我们完成了外壳,我们就需要把所有的面包板零件都塞进去,调整一下零件的布局,用焊接的方式固定电路。

2. 软件部分(Spark团队已经将所有代码上传至Github

调温器的程序(又称固件)需要实现从传感器读取数据、控制继电器和在屏幕上显示温度等等功能。同时,我们还需要一个无线信号接收器,以便远程从手机或电脑上来控制温度。 当然,调温器还要实现基本的机器学习的功能,以便它能够根据人是否在家而自动控温,这部分代码需要跑在云端上。

之所以称这部分软件为“固”件,是因为相对其他软件而言,这部分代码除了研发团队外,在用户使用过程中基本上不会再接触到。如果我们让设备能够联网,就能通过远程让固件升级,方便迭代。如果你使用了Spark Core,就可以通过他们的在线IDE来更新代码。

调温器的控制部分是通过一个在线云端App来实现的。所以,我们可以改用迭代更快的Ruby on Rails来搞定程序,而不是麻烦的嵌入式C。Spark Cloud通过自带的REST API来连接设备,这意味着你可以将其嵌入到任何可以产生HTTP request的程序中,基本上所有语言都可以做到这一点。用户界面是一个web app,你可以通过上面的javascript来选定你想要的温度。同时,在页面下方会生成一个历史温度的曲线图。

3. 连接

如果你分别搞定了硬件和软件,最简单的把它们连接起来的方法就是通过一个Wi-Fi模块,这样就可以让你的产品成为一个本地Wi-Fi的终端。Spark Core自带Wi-Fi模块,并且因为其内置的微处理器,连接变得非常容易。Spark Core能自动通过加密通道连接Spark Cloud,你无须再额外构建代码来操作Wi-Fi模块,或者是适配通讯协议。

4. 组装

现在,调温器的所有部分都已将完成了,下一步就是把这些零件都塞进我们的木头外壳中,再把它固定在墙上。想必大家在这部分都不会花太多时间。装配好之后,我们的Nest就算正式完成啦!

整个制作过程花费了70美金(其中,Spark Core 39美金);木材和亚克力板很容易找到。时间上,3.5个工程师从第一天上午十点搞到第二天凌晨3点半(有一个人提前上床睡觉去了)。提前做的工作只是去订购一些电子元件。

另外, Spark团队强调,这篇文章的目的并不是说任何人都可以在一天时间内创立一家价值32亿美金的公司……但是,现在这事已经变得没那么难了。

“所有的巨头都来自于一开始几百块钱的产品原型。”所以,你还在等什么?

除非注明,本站文章均为原创或编译,转载请注明: 文章来自 36氪


36氪官方iOS应用正式上线,支持『一键下载36氪报道的移动App』和『离线阅读』 立即下载!

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>