×

蓝牙Mesh应用选择芯片资料下载

消耗积分:2 | 格式:pdf | 大小:196.63KB | 2021-04-05

王平

分享资料个

在本系列的前几篇文章中,我们讨论了、以及。蓝牙Mesh的各项功能使其成为一种具有互操作性的安全低功耗网络。 不可否认,这些特性使蓝牙Mesh方案的实现略显复杂。如果让系统设计人员从头处理所有这些复杂问题,那么推出一款产品需要耗费数百人年的工作量。除此之外,物联网应用类型极为丰富多样,针对每种应用需要不同的外设功能与CPU处理能力,例如,如果您在设计智能家居产品,有些可能采用电池供电,有些采用交流电源供电,有些需要处理模拟信号,有些需要强大的处理能力和大量数字外设接口。 对于系统开发来说,固件开发需要的时间最长,工作量最大。尽管工程师设计的系统各不相同,如果使用同一芯片,那么其中一些固件还是可以重复使用的。基于此,工程师为首款产品评估选择器件/平台时,往往非常谨慎和严格,以便后续产品能最大限度地重复使用IP和现有固件。 在本文中我们将讨论,在为蓝牙Mesh应用选择芯片平台时,必须考虑的几个关键因素。 整体来说,蓝牙Mesh应用开发和部署需要三个关键组成部分: ● 硬件 ● 软件/固件 ● 移动设备APP 硬件 在选择蓝牙Mesh产品平台时,首要的步骤是了解平台器件的现在和未来,在选择器件时应做长期考虑。举个例子,图1是智能家居系统的示例。 图1 使用蓝牙Mesh的智能家居系统示例 正如您所看到的,这个网络中有各种设备,包括灯泡、风扇、温控器和百叶窗控制器。现实中的智能家居系统可以使用类型更丰富的蓝牙Mesh产品,如开关、调光器、人体感应器、喷灌控制器等。如果您正在设计智能家居产品,您需要设计出符合所有这些用途的系统平台。因此,即使您只是在开发智能开关应用,您仍然需要审视其他产品,为其他产品设计留有余量。 每种这样的应用都有不同的设计要求,楼宇自动化等其他领域也存在相同的情况。所以,您的设计应采用一种能够满足大多数应用需求的平台。此外,您应该能够根据应用需求调整或裁剪原有固件,而不必从头开始新的设计。 在选择蓝牙Mesh平台芯片前,首先应该深入了解芯片的规格与特性。 01、发射功率与接收灵敏度 对于无线设备而言,最重要的指标之一是发射功率与接收灵敏度。发射功率与接收灵敏度决定了设备的链路预算,以及设备与网络中其他节点间的通信距离。虽然蓝牙Mesh旨在拓展网络的覆盖范围,但发射功率与接收灵敏度决定了网络中各节点间的通信距离。 正如我们前文提到的,不同的产品功能需求都不同,因此芯片的需求会随着应用的变化而改变。此外,提供较高的发射功率也会增大电流消耗。对于电池供电的应用场景,可能需要限制发射功率,才能降低功耗、延长电池续航时间。例如,温度和湿度传感器、智能开关等应用通常采用电池供电,使用较低发射功率会更加理想。另一方面,交流电源供电应用能够支持更高的发射功率,从而拓展网络覆盖范围。因此,对于交流电源供电应用而言,能够支持高达10dBm发射功率的器件是一个不错的选择。 具备Mesh功能的器件应该既要能够支持电池供电应用所要求的较低发射功率,也要支持交流电源供电应用所要求的较高发射功率,能够提供不同的发射功率选项的同系列芯片是明智的做法。这样您只需对BOM进行修改,而无需对电路板布局进行任何更改,便于简化新产品设计,加快产品上市进程。 芯片可以集成功率放大器(IPA)达到更远的传输距离。但采用IPA会产生额外的成本。为了降低BOM成本,针对电池供电应用,可以采用pin to pin引脚兼容、但发射功率较低的低成本器件(如果有这种器件可供选择)。例如,为满足这一需求,赛普拉斯同时提供支持 4dBm发射功率的 CYW20819和支持最高达 10dBm发射功率的 CYW20820。两者采用引脚兼容的封装,并提供相同的功能集。 02、功耗2 无论是交流电源供电还是电池供电,任何产品必须仔细考虑功耗问题。为了提高产品的环保性,监管机构不断施压,要求降低功耗,甚至对交流电源供电设备也不例外。如果产品不符合规定的功耗要求,就可能无法出售。 在考虑设备功耗时,必须考量多种因素。首先是收发过程中产生的无线电功耗。大多数蓝牙Mesh节点持续地扫描数据包。因此,这些设备几乎全部时间处于接收模式下,接收器功耗成为最重要的考量参数之一。 对于用作中继器、对收到的消息进行转发的Mesh设备来说,发射功耗是另一大重要指标。我们必须在器件的最大发射功率下考量发射功耗,有些器件在较低的发射功率下性能更佳,但在较高的发射功率下则不然。 芯片厂商的产品会支持不同的低功耗模式,我们需要理解哪种模式是自己的应用所需要的,这样才能根据器件处于常规工作模式和低功耗模式的时间,准确估算系统的平均功耗。 03、处理能力 一般来说,选择处理能力强的器件是正确做法。例如,LED灯泡之类的应用可能需要根据用户需求快速处理和改变LED状态(开/关或改变颜色)。由于设备在低功耗模式下功耗最低,使用速度较快的CPU能迅速完成处理工作。这样,设备处于休眠模式的时间就更长,从而降低总体平均功耗。 04、存储 可根据特定的应用选择闪存和RAM容量。找到能灵活使用存储器空间的产品系列十分关键。Mesh设计方案应该能够在使用不同存储器空间的设备之间移植应用代码,无需花费额外的精力,这样便于为存储器需求较低的应用选择较低成本的器件。此外,部分器件使用ROM来存储蓝牙协议栈和外设驱动程序,这样可以将闪存释放给应用程序使用。总起来看,同时拥有内部ROM和闪存的器件更加适合蓝牙Mesh产品。 05、外设 正如前文所提及的,不同应用可能需要不同的外设。例如,智能灯泡可能需要三、四个脉冲宽度调制器(PWM)用于RGB/RGBW LED的控制,一个数模转换器(ADC)用于温度测量(使用热敏电阻器),以及一个I2C接口用作无源红外(PIR)传感器控制器接口;自动调温器需要ADC和电源管理模块,以支持低功耗模式。在选择平台时,要针对所有应用列出可能的外设需求,以便找出最符合要求的器件。 06、芯片温度范围 因为LED和AC-DC子系统的高功率热耗散,照明之类的应用需要支持宽温度范围(最高 105°C),因此,应选择能够为产品同时提供工业温度级别和宽温度范围的芯片。 软件/固件 软件极其重要,必须认真考虑。这里的软件不仅仅指IDE和工具链,也包括底层的软件开发套件(SDK)。IDE必须易于使用,比如基于Eclipse的IDE。 需要特别关注SDK。蓝牙Mesh有多种模式和节点类型。具体使用哪种模式和节点类型取决于具体应用。要使终端产品通过蓝牙技术联盟(Bluetooth Special Interest Group,SIG)的蓝牙Mesh认证,底层的模式和节点类型也必须通过认证(一些器件厂商并未通过所有的蓝牙Mesh模式认证和节点类型认证)。如果应用所需的模式未经认证,终端产品开发者需要负责完成整个认证流程。这就要求开发者必须深入了解蓝牙Mesh技术规范,并投入额外的资金与时间通过SIG认证流程。Mesh芯片厂商理应负责解决这一复杂问题,并提供完全通过蓝牙Mesh认证的解决方案。因此,在为您的蓝牙Mesh应用选择芯片平台前,应查阅蓝牙SIG网站,了解准备选用的芯片通过了哪些Mesh模式认证和节点认证。 在确认器件支持所有Mesh模式和节点类型后,应尽量找出可用的参考示例代码。示例代码可让您事半功倍。 移动设备App 物联网的理念是万物互联,方便用户操控。基本上所有物联网应用都需要移动APP,基于蓝牙Mesh的物联网应用也有同样的要求。无论是控制灯泡还是从气象监测站读取温度信息,用户都需要使用自己的手机访问并控制设备。为了便于实现这项功能,芯片厂商必须为他们的蓝牙Mesh产品提供iOS和安卓版APP。 理想情况下,芯片厂商会提供这些APP的源代码,方便用户进行二次开发。如果芯片厂商不提供这类APP,您就需要从头开发。每个应用的App开发成本可能高达20万美元,还不包括用户开发APP对产品上市时间的影响。  在下一篇,也是本系列文章的最后一篇,我们将讨论针对蓝牙Mesh应用时应该使用芯片还是模组。此外,我们还将探讨在选择这两种备选方案时的考虑因素。

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

评论(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.lene-v.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:'蓝牙Mesh应用选择芯片资料下载',//标题 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.lene-v.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);