在当前市场上,ARM Linux Qt 可以说是非常主流的技术之一。随着物联网、智能家居、工业自动化等领域的快速发展,越来越多的设备需要具备良好的用户交互体验和可靠性,并且需要满足不同行业对安全性、稳定性等方面要求。而 ARM Linux Qt 正好可以满足这些需求,在各个领域都有广泛应用。
此外,Qt 作为一个跨平台框架,在 Windows、Linux 和 macOS 等 *** 作系统上也得到了广泛应用。因此学习并掌握 ARM Linux Qt 技术将会是一个非常有前途和有价值的选择。花开半夏
面向物联网的21个开源软件项目有哪些,物联网开源平台搭建
admin 07-26 04:41 166次浏览
2019独角兽企业重金招聘Python工程师标准
51CTOcom直译物联网市场呈现碎片化、无定形化、不断变化的特征,其性质通常只需关注互 *** 作性。 难怪开源在这方面不俗。 ——客户犹豫不决,害怕将物联网的未来寄托在可能难以定制或互联的专有平台上。
本文介绍了主要的开源软件项目,重点讨论了面向家庭和工业自动化的开源技术。 我们忽略了专注于垂直领域的物联网项目,如Automotive Grade Linux和Dronecode。 我们还忽略了面向互联网的开源 *** 作系统发行版,包括Brillo、Contiki、Mbed、OpenWrt、Ostro、Riot和Ubuntusnappping。这次,我们将智能
这里介绍的21个项目包括由Linuxfoundation管理的两个大型项目: Allseen(Alljoyn )和ocf (iotivity ),以及物联网传感器的端点和网关我还介绍了几个专门针对物联网生态系统特定领域的小项目。 我们曾介绍过更多的项目,但越来越难分清物联网软件和普通软件的区别。 从嵌入式环境到云,越来越多的项目都带有物联网元素。
您声称这21个项目都是开源的,但请确保完整的名称不在本文的范围内。 它们至少在生态系统的一个部分运行Linux,大多数都完全支持Linux,从开发环境到云/服务器、网关和传感器端点部件。 大多数组件都有可以在Linux开发板(如Raspberry Pi和BeagleBone )上运行的组件,大多数都支持Arduino。
物联网领域仍然有很多专有技术,特别是在自上而下的企业平台上。 但是,其中也提供了部分开放访问权限。 例如,威瑞森的ThingSpace针对4G智慧城市APP应用,拥有一套免费的开发API,支持开发板,尽管核心平台本身是独一无二的。 相似的是,亚马逊的AWS物联网工具包包括部分开放的设备SDK和开源入门工具包。
其他主要的专有平台包括苹果的HomeKit和微软的Azure物联网工具包。 在拥有230个成员的Thread Group中,该组织监督基于6LoWPAN的对等Thread网络协议。 Thread Group由谷歌的母公司Alphbet旗下的Nest设立,没有提供像AllSeen和OCF那样全面的开源框架。 但是,它与Brillo相关,也与Weave物联网通信协议相关。 5月,Nest发布了名为OpenThread的开源版Thread。
介绍21个面向物联网的开源软件项目。
AllseenAlliance(Alljoyn ) )。
由Allseenalliance(asa )监管的AllJoyn互 *** 作系统框架可能是市场上采用最广泛的开源物联网平台。
Bug Labs dweet和freeboard
bugglas是从制造基于模块化Linux的有bugh的硬件设备开始的,但很久以前就演变成了与硬件无关的企业级物联网平台。 Bug Labs提供“dweet”消息、警告系统和“freeboard”物联网设计APP。 dweet使用HAPI Web API和JSON来帮助发布和描述数据。 freeboard是一种拖放式工具,用于设计物联网仪表板和可视元素。
DeviceHive
DataArt基于AllJoyn的设备管理平台可以运行在许多云服务上,包括Azure、AWS、Apache Mesos和OpenStack。 DeviceHive专注于使用ElasticSearch、Apache Spark、Cassandra和Kafka,分析大数据。 有些网关组件可以在运行Ubuntu Snappy Core的任何设备上运行。 模块化网关软件与DeviceHive云软件和物联网协议配合使用,作为Snappy Core服务进行部署。
DSA
分布式服务架构(DSA )便于集中式设备的互 *** 作性、逻辑和APP应用。 DSA项目正在构建分布式服务链接(DSLinks )库,以支持协议转换以及与第三方数据源的数据集成。 DSA提供了一个可扩展的网络拓扑,其中包括多个DSLinks,用于在连接到分层代理分层结构的物理互联网边缘设备上运行。
EclipseIOT(Kura ) )。
Eclipse基金会的物联网主要围绕基于Java/OSGi的Kura API容器和聚合平台,支持在服务网上运行的m2m APP应用。 Kura基于Eurotech的Everywhere Cloud物联网框架往往与Apache Camel集成,后者是基于Java的基于规则的路由和中介引擎。 Eclipse物联网子项目包括Paho消息传递协议框架、面向轻量级服务器的Mosquitto MQTT体系结构和Eclipse SmartHome框架。 有些项目实现名为Californium的基于Java的受限APP应用协议(CoAP )。
Kaa
CyberVision支持的Kaa项目为云互联的大型物联网提供了可扩展的端到端物联网框架。
该平台包括一种支持REST的服务器功能,可用于服务、分析和数据管理,通常部署成由Apache Zookeeper协调的节点集群。Kaa的端点SDK支持Java、C++和C开发,负责处理客户机/服务器通信、验证、加密、持久性和数据编排。SDK包括针对特定服务器、支持GUI的模式,这些模式可转换成物联网物件绑定。模式治理语义,并抽象一组迥异设备的功能。
Macchinaio
Macchinaio提供了一种“支持Web、模块化、可扩展的”JavaScript和C++运行时环境,可用于开发在Linux开发板上运行的物联网网关应用程序。Macchinaio支持一系列广泛的传感器和连接技术,包括Tinkerforge bricklet、XBee ZB传感器、GPS/GNSS接收器、串行和GPIO联网设备以及方向感应器。
GE Predix
GE面向工业物联网的平台即服务(PaaS)软件基于Cloud Foundry。它增添了资产管理、设备安全、实时预测分析,并支持不同数据的采集、存储和访问。GE Predix是GE为内部运营而开发的,它已成为最成功的企业物联网平台之一,收入大约60亿美元。GE最近与HPE达成了合作伙伴关系,HPE将把Predix整合到自己的服务中。
Home Assistant
这个作为后起之秀的草根项目提供了一种面向Python的家居自动化方法。
Mainspring
M2MLabs的基于Java的框架针对远程监控、车队管理和智能电网等应用领域中的M2M通信。与许多物联网框架一样,Mainspring高度依赖REST Web服务,并提供了设备配置和建模工具。
Node-RED
这种面向Nodejs开发人员的可视化布线工具拥有基于浏览器的数据流编辑器,可用于设计物联网节点当中的数据流。然后,节点可以迅速部署成运行时环境,并使用JSON来存储和共享。端点可以在Linux开发板上运行,支持的云包括Docker、IBM Bluemix、AWS和Azure。
Open Connectivity Foundation(IoTivity)
英特尔和三星支持的开放互联联盟(OIC)组织和UPnP论坛组成的这个组织正在努力成为物联网方面领先的开源标准组织。OCF的开源IoTivity项目依赖充分利用的JSON和CoAP。
openHAB
OpenIoT
这款基于Java的OpenIoT中间件旨在使用一种公用云计算交付模式,为开放、大规模的物联网应用提供便利。除了表示物联网物件的本体、语义模型和标注外,该平台还包括传感器和传感器网络中间件。
OpenRemote
OpenRemote为家庭和楼宇自动化而设计,它以广泛支持众多智能设备和网络规范而出名,比如1-Wire、EnOcean、 xPL、Insteon和X10等规范。规则、脚本和事件都得到支持,还有基于云的设计工具,可用于用户界面、安装、配置、远程更新及诊断。
OpenThread
这是Nest最近从基于6LoWPAN的物联网Thread无线网络标准分离出来的开源项目,它还得到了ARM、Microchip旗下的Atmel、Dialog、高通和德州仪器的支持。OpenThread实现了所有Thread网络层,还实现了Thread的端点设备、路由器、Leader和边界路由器等角色。
Physical Web/Eddystone
谷歌的Physical Web让蓝牙低能耗(BLE)信标可以将URL发送到智能手机。它针对谷歌的Eddystone BLE信标经过了优化,这提供了除苹果的iBeacon之外的一种开放技术。其想法是,行人可以与任何具有BLE功能的支持性设备(比如汽车停放计时器、标牌或零售产品)联系。
PlatformIO
基于Python的PlatformIO包括IDE、项目生成器和基于Web的库管理器,它是为访问来自基于微控制器的Arduino和基于ARM Mbed的端点的数据设计的。它为200多种板卡提供了预先配置的设置,并与Eclipse、Qt Creator及其他IDE整合起来。
The Thing System
这种基于Nodejs的智能家居“监管”软件声称支持真正的自动化,而不是简单的通知。其自学习人工智能软件可处理许多协同式M2M *** 作,不需要由人干预。缺少云组件恰恰提供了更好的安全性、隐私性和控制性。
ThingSpeak
成立五年的ThingSpeak项目专注于传感器日志、位置跟踪、触发器及提醒以及分析。ThingSpeak用户可以使用用于物联网分析和可视化的MATLAB版本,不需要向Mathworks购买许可证。
Zetta
Zetta是一种面向服务器的物联网平台,利用Nodejs、REST和WebSockets构建而成,奉行基于数据流的“响应式编程”开发理念,用Siren超媒体API连接起来。设备被抽取成REST API,用云服务连接起来,这些服务包括可视化工具,并支持Splunk之类的机器分析工具。该平台可将Linux和Arduino开发板之类的端点与Heroku之类的云平台连接起来,以便构建地理分布式网络。
转载于:>嵌入式方向很多,这是现在最流行的这个方向。
由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系统
的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家
提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便
,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌
入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都
是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用
vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE60听说也开源,不过在成本和资源上
linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子
,Google近期开发的智能手机 *** 作系统Android其实就是使用linux-2623内核进行改进得到的。
第一,学习基本的裸机编程。
对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如
果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(
主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制
led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复
杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了学习裸机的
编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个
硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,
有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那
么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这
个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗
?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映
射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到
一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?诸如此类都是对
硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这
一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。不过先声明一下,本
人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进
行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实
验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。
第二,使用linux系统进行一些基本的实验。
在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的
,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按
照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们
不做重复工作,只提供他们没有的、最有价值的东西给大家。
第三,研究完整的linux系统的的运行过程。
所谓完整的linux系统包括哪些部分呢?
三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的
执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就
打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。
第四,开始做系统移植。
上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学
会制作这些东西。
当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代
码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就
叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经
算是一个初出茅庐的高手了。
在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不
提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码
时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-
2611内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验
的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,
如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我
相信能给你一点建议,也许有助你解决问题。
这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,
最终运行在板子上。
盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。
第五,研究linux驱动程序的编写。
移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
Linux的驱动程序可以说是五花八门,linux24和linux26的编写有相当大的区别,就是同为linux26但是
不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程
序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动
的编程就有足够的资料了。这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。
第六,研究应用程序的编写。
做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用
程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产
的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的
VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就
是没有像qtopia这样的图形 *** 作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的
版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形 *** 作平台,不过由于水平有限这只能是幻想了,
呵呵。完成这一步你基本就学完了嵌入式linux的全部内容了。
还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同
学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提
高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题
都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是
一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你
解决问题。记住,问题是学习的最好机会。另外笔者推荐你可以用嵌视科技qs-pte9
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)