×

使用物联网开发套件创建快速连接

消耗积分:3 | 格式:pdf | 大小:129.4KB | 2021-01-29

分享资料个

物联网 (IoT) 将实现万物互连,有人说它正在形成,也有说它已经出现。无论如何,了解什么是物联网以及它产生的原因都意义重大。物联网牵涉到如何连接东西(非人类)到互联网。这些东西使用或涉及数据,而这些数据是较大系统的一部分并且必须被正确测量。数据经由一个联网的小型嵌入式系统测量,其中一些嵌入式系统外形仅像邮票般大小。

这些带联网功能的嵌入式系统,属于不带人机界面的微控制器设备。这些系统使用传感器或其它检测机制来收集数据,这些数据对于更大型的系统价值巨大。这些数据通过互联网发送到大型计算机上。计算机收集、分析数据,并将之存储在内存中,而且经常根据这些数据的分析结果做出一些实时系统决策。

如同任何嵌入式系统项目,首先第一步是选择合适的开发套件。要选择合适的开发套件,应先了解物联网项目的需求。一般情况下,存在以下三种类型的物联网开发项目:

1、云连接。此类项目可以是遍布全球的巨型系统网络,所有设备都连接到云基础设施。这种云基础设施可以包括一个或多个服务器,来运行分析并处理所收集数据的服务器应用程序。

2、本地联网。一些小型嵌入式系统是更大系统的远程传感器,往往位于企业内部网。

3、网关。此类项目是将传统应用连接到互联网的系统。

云连接开发套件

此类应用可以展示IoT与传统嵌入式系统最显著的差异。“云”是被配置为提供存储和服务功能的Web服务器。物联网节点连接到云服务器,以发送甚至接收数据和指令。云服务器上运行一个或多个软件应用程序,可以做很多事情,包括收集和存储信息以备随后复查,做近乎实时的决策以及发送指令到联网的IoT节点。

“图1:英特尔Edison物联网模块"
图1:英特尔Edison物联网模块

从零开始创建云连接物联网项目可能会很耗时间。开发人员需要建立云服务器的硬件和软件环境,同时为物联网节点和云服务器编写驱动程序和应用程序代码,然后调试两系统间的连接,最后再创建终端应用。为简化该过程,云开发工具提供现成的连接生态系统,包括已测试的应用代码,可以在不到一天的时间内建好工作原型。

英特尔目前有两种开发板,可以支持云开发并作为终端使用设备。第一种是英特尔® Edison,主板很小,只有邮票大小。英特尔Edison(图1)采用22nm的英特尔凌动® SoC,内置一个频率为500MHz的双核、双线程CPU,以及一个100MHz的32位微控制器Quark。板载存储器包括4GB闪存和1GB的RAM,同时支持WiFi和蓝牙4.0连接。Edition通过英特尔IoT分析云服务器来提供WiFi器件到云的连接。这种云服务允许采集和分析物联网数据,而无需创建定制云服务器。总之,英特尔为开发人员提供云服务器,这本身就是一个云开发工具。英特尔还研制了Arduino™开发环境,可以连接到Edison以使用编程和调试功能。

英特尔Galileo 2代 (图2)是一个更大、更复杂的Arduino认证板。Galileo 2由一个400MHz的32位英特尔Quark™ X1000片上系统 (SoC) 驱动。互联网连接由10/100以太网提供,另外还支持其它一系列通用嵌入式连接选项,比如SPI和UART。开发人员也可将Galileo 2连接到英特尔物联网分析云服务器,执行比Edison更复杂的任务。

图2:英特尔Galileo 2,Arduino认证的开发平台 - 资料来源:英特尔

英特尔Edison和英特尔Galileo 2开发套件展示了基本的云开发环境。开发人员可以给这些板编程以从环境中收集数据,然后将这些数据通过互联网发送并和云服务器进行互动。

更进一步,Microchip有一个简便的云开发平台,提供与亚马逊弹性计算云 (EC2) 的连接。不仅Microchip的开发平台可以将数据发送到亚马逊的EC2, EC2甚至也可以发送数据来控制Microchip的开发平台。这也为开发环境增加了另一层复杂度,可以演示无需人工干预前提下的云服务器如何控制物联网节点。

2本地联网的物联网开发套件

本地联网的物联网节点可能不支持WiFi或以太网等TCP/ IP连接协议。这种系统可能使用非互联网协议 (IP) 网络,比如ZigBee®或蓝牙,就像Texas Instruments (TI) CC2650STK SimpleLink蓝牙智能SensorTag物联网套件(图3该套件包含10个环境传感器,可以检测温度、加速度、环境亮度等等。TI SensorTag物联网套件使用蓝牙连接到Android或iOS移动应用。这些移动应用可以监控并显示传感器读数,以图表方式提供基本数据分析,甚至打开或者关闭SensorTag传感器。

图3:Texas Instruments SensorTag与Android App - 资料来源:Texas Instruments

Silicon Labs Sensor Puck提供了类似功能。Sensor Puck测量环境光、紫外线指数、环境温度和湿度,所有这些数据都可以通过低功耗蓝牙 (BLE) 发送到安装了Sensor Puck 的iOS 或Android应用的移动设备上。Sensor Puck支持BLE广播模式,允许单个移动设备从多个Puck收集数据并显示。有经验的移动开发人员可以编写代码来分析这些数据,并得出有意义的结论。

物联网网关开发套件

物联网网关从不支持互联网连接的设备中获取数据,然后将这些数据通过WiFi或以太网发送到别的地方。ZigBee是一种流行的无线网状网络标准,它不支持TCP / IP协议,因此不能分配IP地址。DIGI XBee ZigBee云套件(图4)提供ZigBee到以太网和WiFi的网关转换。这节省了将ZigBee数据转换成TCP / IP数据包所需要的时间和代码开发成本。一旦连接到互联网,XBee云套件就会连接Digi赞助的设备云帐号。然后,开发人员可借助任何浏览器访问在线云控制面板并与XBee云套件进行交互。

图4:DIGI XBee ZigBee云套件与云服务器应用进行通信. –资料来源:DIGI

对于复杂的高端网关应用开发,英特尔提供了DK300系列网关解决方案。DK300套件支持通过2G/3G/4G蜂窝、10/100/1000以太网和WiFi网络连接进行网关开发。开发数据可以被收集并通过蓝牙、USB、串行端口、ZigBee等发送到互联网。

结论

对大多数开发人员而言,从零开始创建可联网的物联网系统需要掌握许多不同的技术,包括有线和无线联网、嵌入式代码开发和设备驱动程序开发。虽然许多有经验的开发人员可能已经熟悉了这些技术,但更多技能,如编写移动设备应用程序和云代码开发是相对较新的技能。新的物联网开发套件提供了硬件、软件、固件和集成工具,可以缩短产品上市时间,同时也能培养开发人员对这些新技术的掌握程度。

Bill Giovino是锡拉丘兹大学 (Syracuse University) 电子工程师,拥有理学学士学位,是为数不多的从设计工程师到现场应用工程师再到技术营销成功过渡的人之一。在过去的20年里,他与许多半导体公司(包括STMicroelectronics、Infineon和National semiconductor)以及一名独立顾问一起,面向技术和非技术受众开发和营销新技术。在STMicroelectronics,Bill为公司在微控制器行业的早期发展做出了突出贡献。他是LinkedIn半导体销售与营销集团(LinkedIn Semiconductor Sales&Marketing Group)的主持人,能流利地讲B2E。Bill仍然驾驶着他信任的福特金牛座(Ford Taurus SHO),这家公司近年来采用贸泽电子元件进行了一些不同寻常的电子升级,获益颇多。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'使用物联网开发套件创建快速连接',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);