在物联网当中,最理想的实现方案就是利用开发底板构建设计原型——而Photon在将成果与云环境对接方面拥有着独特的优势。
硬件与软件开发人员在构建物联网产品时面对着一项值得关注的难题:我们该如何将其接入更为广阔的互联网世界当中?
当然,直接构建联网Arduino或者使用Raspberry Pi提供的内置以太网端口也是可行的。但如果我们希望能够最大程度发挥传感器以及执行器的全部功能,我们当然需要以无线网络技术作为立足根基——具体而言,就是利用Wi-Fi以及蜂窝网络将用户自身与设备接入网络体系。
遗憾的是,我们还面临着一道难以逾越的障碍:无线网络世界在设计方面并没有真正考虑到处理设备、特别是采用固件而非软件驱动的单一用途单元的实际需求。但幸运的是,我们还有其它选项。
我们完全可以选择蜂窝网络服务运营商所使用的机器到机器模型,其中由独一无二的设备识别码(即IMEI以及手机号码)处理设备的验证、连接与交互任务,这相当于把设备当作应用并加以控制。除此之外,对于像Arduino Yùn这样的设备,我们还可以将固件与软件加以结合,并在其中搭载一块与微控制器固件共享内存的无线应用处理器。
由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的使用感受与其它开发底板非常相似,我们可以使用C类语言直接访问Photon的数字化与模拟端口。不过与其它开发底板不同的是,Particle公司的固件当中包含有多种函数,用于处理设备同云服务之间的对接——大家在设置过程中需要将该服务连入自己的开发底板。
云API调用使用的是Spark.function调用,负责将云调用链接到本地函数——举例来说,我们可以将一项云函数调用链接至本地ledblink()函数处。这种处理方式简化了固件功能与外部应用程序之间的对接途径,从而保证用户能够更为轻松地对应用程序在云与设备之间进行映射。一条Spark.function总是接受一条字符串作为参数,且永远返回一个整数结果。
发送字符串的意义在于:我们的设备端代码能够使用不同的字符串在多种不同选项之间切换,例如允许开发者将数字输出设定为开或关,或者改变受控输出组合。在这种情况下,我们也能够更轻松地发回整数,因为由模拟到数字的转换器通常都会提供整数输出能力。大家可以使用组件规范对返回的温度或者亮度级别整数进行转换。