要是近些年来你以任何一种方式参与过IT行业,恐怕就听过“物联网”(即IoT)这个术语。据知名调研机构Gartner声称,IoT正处于技术成熟度曲线(hype cycle)的顶峰,这意味着许多人因此而兴奋不已,但还没有出现太大的实质性进展。2009年,连接到互联网的设备数量不到10亿个,但Gartner预测,到2020年安装的物联网设备数量将多达260亿个,这将为生产商和服务提供商创造3000亿美元的收入,并且给全球经济带来1.9万亿美元的影响。
简而言之,物联网就是使用智能设备,收集数据,然后这些数据通过互联网传输到其他设备。它与机器对机器(M2M)技术密切相关。虽然“物联网”问世已有一段时日,但这个概念却由Kevin Ashton在1999年首次使用,那时他是宝洁公司的一名员工。
自此以后,物联网概念迅速广泛传播开来。ARM开展的一项调查发现,75%以上的企业已经在以某种方式使用物联网,或者在探究如何使用物联网。96%的调查对象预计会在2016年之前使用物联网。
之所以大家对物联网抱有浓厚的兴趣,一方面在于它大有潜力。Ashton在2006年的一篇文章中解释:“如果我们拥有无所不知的计算机――使用它们收集的数据,又不需要我们人类的任何帮助,我们就能够跟踪和统计一切设备,大大减少浪费、损耗和成本。我们知道设备何时需要更换、维护或召回,它们是全新还是越来越破旧。”他最后得出结论:“物联网有潜力改变这个世界,就像互联网那样。也许它的影响力还要大。”
物联网技术和标准方面的早期工作基本上出现在开源社区里面。我们将介绍一些比较值得关注的、目前在积极开发的开源物联网项目。虽然我们所列的开源项目通常侧重于软件,但也介绍了一大批开源硬件,业余爱好者能够低价买到其中好多硬件。
与往常一样,要是你觉得另外哪些项目应该榜上有名,欢迎留言交流。
开发工具篇
1、Arduino
Arduino既是面向交互式电子产品的硬件规范,又是一套软件,含有集成开发环境(IDE)和Arduino编程语言。官方网站解释,Arduino“是一款工具,用来制造比普通台式机更加能感知和控制物理世界的计算机。”背后的这家组织提供了许多供出售的板卡、入门套件、机器人及相关产品,另外许多机构已使用Arduino来制造自己的物联网相关软硬件产品。
相关网站:http://www.arduino.cc/
2、Eclipse IoT Project
Eclipse正在赞助物联网方面的几个不同项目。它们包括应用框架和服务;使用开源技术实现的物联网协议,包括MQTT CoAP、OMA-DM和OMA LWM2M;处理Lua的工具,Eclipse在大力宣传Lua,声称这是一种理想的物联网编程语言。Eclipse相关的项目包括Mihini、Koneki和Paho。官方网站上还有用于试用工具的沙箱环境和在线演示。
相关网站:http://iot.eclipse.org/
3、Kinoma
Kinoma软件平台归Marvell所有,它包括三个不同的开源项目。Kimona Create是一个DIY构造工具箱,可用于制作电子设备的原型。Kimona Studio是开发环境,可与Create和Kinoma Platform Runtime协同运行。Kimona Connect则是一款免费的iOS和安卓应用程序,将智能手机和平板电脑与物联网设备互联起来。
相关网站:http://www.marvell.com/kinoma/
4、M2MLabs Mainspring
Mainspring是为了开发远程监控、车队管理和智能网格等应用软件而设计的,它是一种开源框架,用于开发M2M应用软件。其功能包括:灵活的设备建模、设备配置、设备与应用软件之间的通信、数据的验证和规范化、数据的长期存储以及数据检索功能。它基于Java和Apache Cassandra NoSQL数据库。
相关网站:http://www.m2mlabs.com/framework
5、Node-RED
Node-RED立足于Node.js,自称是“用于连接物联网的可视化工具”。它让开发人员可以使用一种基于浏览器的流程编辑器,连接诸多设备、服务和API(应用编程接口)。它可以在Raspberry Pi上面运行,60000多个模板可用来扩展其功能。
相关网站:http://nodered.org/
硬件篇
6、Arduino Yún
这个微控制器将基于Arduino的板卡具有的易用性与Linux结合起来。它有两个处理器:ATmega32u4(支持Arduino)和Atheros AR9331(运行Linux)。其他特性包括:无线、以太网支持、USB端口、micro-SD卡槽、三个重置按键及更多。可以从Arduino官方网站购买。
相关网站:http://arduino.cc/en/Main/ArduinoBoardYun?from=Main.ArduinoYUN
7、BeagleBoard
BeagleBoard提供了信用卡大小的计算机,可以运行安卓和Linux。由于它们对耗电量的要求非常低,所以对物联网设备来说是个不错的选择。硬件设计和硬件运行的软件都是开源的,可以通过众多分销商购得BeagleBoard硬件(常常以BeagleBone这个品牌名来销售)。
相关网站:http://beagleboard.org/
8、Flutter
Flutter赖以成名的地方是传输距离远。这款基于Arduino的板卡有无线传输器,传输距离超过半英里。另外,你也不需要路由器;Flutter板卡可以彼此直接联系。它采用了256位AES加密技术,易于使用。硬件和软件都是完全开源的;基础板卡的价格只有20美元。
相关网站:http://www.flutterwireless.com/
9、Local Motors Connected Car
Local Motors是一家汽车公司,专门小规模设计开源汽车方案。它与IBM合作开发了一款与物联网连接的汽车,今年夏季的一次展会上展示了这款汽车。原型的开源软件和设计规范大部分可从下列链接下载。
相关网站:https://localmotors.com/awest/connected-car-project-internet-of-things/
10、Microduino
你也许能从名字中猜到,Microduino提供与Arduino兼容的超小板卡。实际上,这种板卡的大小如同硬币,可以堆叠起来,做成新的产品。所有硬件设计都是开源的,核心模块每个起价只有8美元。其资金来源是Kickstarter网站的一项众筹活动,到时筹到了134563美元。
相关网站:http://www.microduino.cc/
11、OpenPicus
这家公司提供一系列可编程模块和套件,用于将设备连接到云和物联网。其硬件和平台都是开源的,但其产品可用来制造闭源商用产品。该公司还提供供租用的开发服务。
相关网站:http://www.openpicus.com/
12、Pinoccio
与Arduino兼容的Pinnoccio板卡(公司称之为“Scouts”)可在低功耗网状网中彼此连接。板卡里面有内置的可充电电池,电池可以连接到太阳能电池板或任何USB电源装置。该组织还提供用于监控板卡活动的GUI:Pinoccio HQ和ScoutScript,而后者是一种易于使用的脚本语言,可用于控制设备。入门套件售价197美元。
相关网站:https://pinocc.io/
13、RasWIK
RasWIK由一家名为Ciseco的公司开发,其全称是Raspberry Pi Wireless Inventors Kit(Raspberry Pi无线发明家套件)。它让拥有Raspberry Pi的任何人都可以试着制作自己的与无线网络连接的设备。它含有29个不同项目的说明文档,你也可以自行编制说明文档。设备需要收费,但所有包含的代码都是开源的;当然,如果你愿意,可以用它来制作商用产品。
相关网站:http://shop.ciseco.co.uk/raswik/
14、SODAQ
SADAQ的全称是“太阳能供电的数据采集”,它提供了与Arduino兼容的板卡,还有类似乐高积木的插件模块。官方网站上有许多教程,因而很适合初学者学习。而太阳能电池板让它成为一个很好的选择,可以在可能没有电力和互联网连接的众多地方记录环境数据。基础板卡起价为39美元。
相关网站:http://www.sodaq.net/
15、Tessel
Tessel旨在借助这款能够支持JavaScript的、插入任何USB端口的微控制器,让软件开发人员更容易从事硬件开发。你还可以将它连接到额外的模块,从而添加方向感应器、环境光及环境声、摄像头、蓝牙、GPS及/或另外九种功能。一块板卡和一个模块起价99美元,额外模块也有售,售价25美元。所有软硬件设计都是完全开源的。
相关网站:https://tessel.io/
16、UDOO
这款与Arduino兼容的板卡还可以从第二个处理器来运行安卓或Linux(名为UDOObuntu的发行版)。它声称,功能很强大,四倍于Raspberry Pi。官方网站上有多个教程和项目,它还在网上开设了“Made by UDOOers”部分,人们可以在此展示自己的作品。基础板卡的起价为99美元。
相关网站:http://www.udoo.org/
家庭自动化软件篇
17、OpenHAB
OpenHAB让你家里已有的智能设备能够彼此联系。它与厂商无关、与硬件无关,可以在任何能够支持Java的系统上运行。它的目标之一就是,让用户可以为其设备添加新的功能特性,并以新的方式结合起来。它获得了几个奖项,还有一个配套的云计算服务,名为my.openHAB。
相关网站:http://www.openhab.org/
18、The Thing System
这个项目包括软件组件和网络协议。它承诺可以找到你家里面所有与互联网连接的物件,并结合起来,那样你就能控制它们。它支持一大批的设备,包括Nest恒温器、三星智能空调系统、Insteon LED灯泡、Roku、谷歌Chromecast、Pebble智能手表、Goji智能锁及其他众多设备。它用Node.js编写,可以装在Raspberry Pi上。
相关网站:http://thethingsystem.com/index.html
中间件篇
19、IoTSyS
这个物联网中间件为智能设备提供了一个通信堆栈。它支持多种标准和协议,包括IPv6、oBIX、6LoWPAN、受限应用协议(Constrained Application Protocol)和高效XML交换。官方网站上的几段视频演示了它是如何实际工作的。
相关网站:https://code.google.com/p/iotsys/
20、OpenIoT
OpenIoT网站解释,这个项目“是一个开源中间件,用于获取来自传感器云的信息,没必要操心具体使用什么传感器。”它旨在能够实现基于云的“感知即服务”,已开发了诸多用例,面向智慧农业、智能制造、城市群体感知、智慧生活和智能校园。其支持者包括:雅典信息技术学院(AIT)、洛桑联邦理工学院(EPFL)、弗劳恩霍夫光电系统技术和影像处理研究院、SENSAP Microsystems AE、AcrossLimits、联邦科学与工业研究组织、萨格勒布大学电气工程和计算机学院以及爱尔兰国立大学高威分校。
相关网站:http://openiot.eu/
操作系统篇
21、AllJoyn
这个面向物联网的开源操作系统最先由高通公司开发,现在得到了最负盛名的物联网组织之一AllSeen Alliance的支持,其成员包括Linux基金会、微软、LG、高通、夏普、松下、思科、赛门铁克及另外诸多知名公司。它包括一个框架和一套服务,让制造厂商得以制造出兼容设备。它具有跨平台的特点,拥有面向安卓、iOS、OS X、Linux及Windows 7的API。
相关网站:https://allseenalliance.org/developer-resources/alljoyn-open-source-project
22、Contiki
Contiki自诩为“面向物联网的开源操作系统”。它将低功耗微控制器连接到互联网,支持IPv6、6lowpan、RPL和CoAP等标准。其他主要功能包括:高效的内存分配、全IP联网、非常低的功耗、动态模块加载及更多特性。支持的硬件平台包括Redwire Econotags、Zolertia z1 motes、意法半导体开发工具包和德州仪器芯片及板卡。还提供收费的商业支持服务。
相关网站:http://www.contiki-os.org/
23、Raspbian
虽然Raspberry Pi其本意是作为一种教学设备,但许多开发人员已开始使用这种信用卡大小的计算机用于物联网项目。完整的硬件规范并非开源,但大部分软件和说明文档是开源的。Raspbian是一款流行的Raspberry Pi操作系统,基于Linux的Debian发行版。
相关网站:http://raspbian.org/
24、RIOT
RIOT号称是“面向物联网的友好的操作系统”。RIOS由FeuerWhere项目派生而来,于2013年首次亮相。它旨在既对开发人员友好,又对资源友好(即占用较少资源)。它支持多种架构,包括MSP430、ARM7、Cortex-M0、Cortex-M3、Cortex-M4和标准的x86 PC。
相关网站:http://riot-os.org/
25、Spark
Spark是一款基于云计算的分布式物联网操作系统。同一家公司还提供易于使用的硬件开发工具包及相关产品,起价只有39美元(硬件设计也是开源的)。它包括:基于Web的IDE、命令行接口、支持多种语言,以及可与许多不同的物联网设备兼容的代码库。它有一个非常活动的用户社区,还提供了大量说明文档和在线帮助。
相关网站:https://www.spark.io/
监测篇
26、Freeboard
Freeboard旨在让用户可以制作自己的仪表板,用于监测部署的物联网。代码在GitHub上可以免费获取;如果你将自己的仪表板公之于众,也可以免费试用服务。还为那些想确保数据私密的人提供了低价方案。网站上的示例仪表板显示了如何使用仪表板来跟踪空气质量、民用家电、酿酒厂运转状况或保湿器里面的环境条件。
相关网站:http://freeboard.io/
打印篇
27、Exciting Printer
Exciting提供了一套开源工具包,可用于体验物联网打印。有了它,你可以制作自己的小型打印机,然后用该打印机来打印从各种物联网设备获得的信息。比如说,它可以打印每日提醒和天气预报等信息。颇有意思的是,如果你想联系项目负责人,可以绘制图案,然后图案就能在对方办公室的物联网打印机上打印出来。
相关网站:http://exciting.io/printer/
平台和整合工具篇
28、DeviceHive
这个项目提供了一个机器对机器(M2M)通信框架,可用于将设备连接到物联网上。它含有易于使用的基于Web的管理软件,可用于构建网络、应用安全规则和监测设备。官方网站提供了用DeviceHub创建的示例项目,网站上还有一个“游乐场”部分,让用户可以在网上使用DeviceHub,看看它是如何工作的。
相关网站:http://www.devicehive.com/
29、Devicehub.net
Devicehub.net自称是“面向物联网的开源基石。”这项基于云的服务存储与物联网有关的数据,以可视化方式显示这些数据,并且让用户可以从网页来控制物联网设备。开发人员已使用该服务编写诸多应用程序,用来跟踪健康信息、监控孩子位置、自动化管理家用电气、跟踪车辆数据以及监测天气等。
相关网站:http://devicehub.net/dev/api#summary
30、IoT Toolkit
这个项目背后的组织正在开发一系列工具,用于将多个与物联网有关的传感器网络和协议整合起来。主要项目是Smart Object API,不过该组织还在开发HTTP-to-CoAP Semantic映射代理系统,这个应用框架包含嵌入式软件代理及更多组件。它还支持在硅谷举行的见面会,以便对物联网发展有兴趣的人士相互交流。
相关网站:http://iot-toolkit.com/
31、Mango
Mango自称是“世界上最受欢迎的开源机器对机器(M2M)软件”。它基于Web,支持多种平台。关键功能包括:支持多种语言和数据库、元点(meta point)、用户定义的事件、导入/导出及更多特性。
相关网站:http://infiniteautomation.com/forum/
32、Nimbits
Nimbits可以存储和处理一种特定类型的数据――时间标记或地理标记的数据。提供公共平台即服务,你也可以下载软件,将软件部署到谷歌应用引擎、亚马逊EC2上的任何J2EE服务器或者Raspberry Pi上。它支持多种编程语言,包括Arduino、JavaScript、HTML或Nimbits.io Java库。
相关网站:http://forum.infiniteautomation.com/
33、OpenRemote
OpenRemote为基于家庭的业余爱好者、集成商、分销商和制造商提供了四种不同的整合工具。它支持几十种不同的现有协议,让用户可以制造出他们想象得到的几乎各种类型的智能设备,并使用支持Java的任何设备来控制。平台是开源的,但该公司还出售一系列支持服务、电子书及其他工具,旨在帮助设计和产品开发过程。
相关网站:http://www.openremote.com/
34、SiteWhere
这个项目提供了一个完整的平台,可用于管理物联网设备、收集数据,并将该数据与外部系统整合起来。SiteWhere发行版本可以下载,也可以在亚马逊的云上使用。它还与多个大数据工具整合起来,包括MongoDB和ApacheHBase。
相关网站:http://www.sitewhere.org/
35、ThingSpeak
ThingSpeak可以处理HTTP请求,并且存储及处理数据。这个开放数据平台的关键功能包括:开放式API、实时数据收集、地理位置数据、数据处理及可视化、设备状态消息及插件。它能整合多种硬件和软件平台,包括Arduino、Raspberry Pi、ioBridge/RealTime.io、Electric Imp、移动和互联网应用、社交网络及MATLAB数据分析工具。除了开源版本外,它还提供一项托管版服务。
相关网站:https://thingspeak.com/
作者:Cynthia Harvey
来源:Datamation.com