在物联网当中,最理想的实现方案就是利用开发底板构建设计原型——而Photon在将成果与云环境对接方面拥有着独特的优势。
硬件与软件开发人员在构建物联网产品时面对着一项值得关注的难题:我们该如何将其接入更为广阔的互联网世界当中?
当然,直接构建联网Arduino或者使用Raspberry Pi提供的内置以太网端口也是可行的。但如果我们希望能够***程度发挥传感器以及执行器的全部功能,我们当然需要以无线网络技术作为立足根基——具体而言,就是利用Wi-Fi以及蜂窝网络将用户自身与设备接入网络体系。
遗憾的是,我们还面临着一道难以逾越的障碍:无线网络世界在设计方面并没有真正考虑到处理设备、特别是采用固件而非软件驱动的单一用途单元的实际需求。但幸运的是,我们还有其它选项。
我们完全可以选择蜂窝网络服务运营商所使用的机器到机器模型,其中由***的设备识别码(即IMEI以及手机号码)处理设备的验证、连接与交互任务,这相当于把设备当作应用并加以控制。除此之外,对于像Arduino Yùn这样的设备,我们还可以将固件与软件加以结合,并在其中搭载一块与微控制器固件共享内存的无线应用处理器。
Photon的云连接之道
由Particle公司推出的Photon售价19美元,这套方案为我们提供了另一种选择。我曾经在上个月的Maker Faire上买到过一套开发工具包,并且一直饶有兴味地鼓捣到现在。与其它众多开发底板一样,它也采用ARM Cortex M3处理器并提供充足的I/O端口。
Photon出色的联网能力源自其围绕博通Wi-Fi芯片组构建而成的Wi-Fi模块,能够以802.11b/g/n方式接入互联网。更重要的是,这款Particle云设备拥有强大的联网服务,能够实现该设备与用户应用之间的桥接,并以此为基础进行代码编写、更新以及设备管理等操作。
从零开始上手Particle的服务以及开发底板其实非常轻松——大家只需要简单下载一款iOS或者Android应用程序即可。我们利用该应用创建一个Particle账户,而后就能通过该公司的云服务访问自己的设备了。接下来,大家可以使用这款手机应用随时接入Photon开发底板并对其Wi-Fi连接进行配置。在***次联网时,设备会下载一项相关固件更新。
在Photon上编写代码
设置工作完成之后,接下来我们就可以着手编写代码了。大家会发现,Photon的使用感受与其它开发底板非常相似,我们可以使用C类语言直接访问Photon的数字化与模拟端口。不过与其它开发底板不同的是,Particle公司的固件当中包含有多种函数,用于处理设备同云服务之间的对接——大家在设置过程中需要将该服务连入自己的开发底板。
云API调用使用的是Spark.function调用,负责将云调用链接到本地函数——举例来说,我们可以将一项云函数调用链接至本地ledblink()函数处。这种处理方式简化了固件功能与外部应用程序之间的对接途径,从而保证用户能够更为轻松地对应用程序在云与设备之间进行映射。一条Spark.function总是接受一条字符串作为参数,且永远返回一个整数结果。
发送字符串的意义在于:我们的设备端代码能够使用不同的字符串在多种不同选项之间切换,例如允许开发者将数字输出设定为开或关,或者改变受控输出组合。在这种情况下,我们也能够更轻松地发回整数,因为由模拟到数字的转换器通常都会提供整数输出能力。大家可以使用组件规范对返回的温度或者亮度级别整数进行转换。
#p#
Particle云介绍
Particle公司推出的云服务可以被称为是物联网领域的Twilio。它才是实质上的核心业务,而开发底板以及Wi-Fi模块只能算是该服务的附属装置。
作为核心设计思路,Photon单纯是为了设计原型方案所存在。Particle公司迎合了那些以规模化方式产出数以十万甚至百万计设备的企业——在这种情况下,这些企业用户显然更倾向于使用自己的芯片方案。Particle的作用只是帮助这些客户开发出足以同合作方所提供的芯片相匹配的模块设计成果。
与Twilio一样,大家需要处理的只是云REST API,其中每一台设备都拥有一个硬编码ID。大家可以利用自己的账户ID认证相关调用——这样我们就能将这些调用交付至服务器应用,从而确保用户无需访问验证令牌。由于大多数平台都支持REST机制,因此Particle公司不必另行提供公共页面,特别是在用户通过Node-red等工具构建物联网应用的情况之下。设备可以进行重新命名,因此大家可能会采取自己的一套命名规划,从而保证以更为精简的代码同时对多台设备进行调用。
自行构建
Particle公司的Photon开发工具包当中包含多块组件与底板,帮助大家从零开始实现硬件设计,而配套的手机应用则提供一系列***实用性的工具集、能够在无需编写代码的前提下支持我们直接处理这款硬件。基础Photon固件提供一套UI,我们可以利用其处理传感器及输出结果,从而构建电路并了解其如何与Photon底板进行交互——这对于接下来的编程工作而言不啻为重要的前提与基础。
同样重要的是,我们要记住Photon代码由于固件范畴、且***被视为将传感器与执行器同云环境相对接的实现手段——我们的大部分业务逻辑都将在这里运行。大家能够在Web IDE当中找到一套基础Tinker固件副本,从而更轻松地对自有版本进行fork并以此为起点构建属于自己的应用程序。
大家也可以直接通过USB接入闪存设备,并利用ARM开发工具与编译器构建自己的低级代码。如果大家打算利用Particle模块及服务作为硬件基础,那么这一选项将非常重要。
以Photon为代表的各类开发底板适用于那些希望率先迈出物联网探索之旅的用户。大家可以获得易于使用的云API集合,同时利用云IDE让面向硬件的I/O代码编写变得更为轻松。
虽然硬件与开发工具同样***吸引力,但需要强调的是,API才是这一切的核心所在。对云与设备之间的对接进行简化,意味着我们能够真正将注意力集中在关键性事务身上:构建属于自己的应用程序及服务方案。
原文标题:Build your own IoT prototype, cloud included