jjzjj

基于STM32小熊派开发智慧路灯项目实践

CoCo哥 2024-02-21 原文

目录

  一、引言

  二、智慧路灯物联网架构介绍

1.感知层:

2.网络层:

3.平台层

4.应用层

 三、开发环境

 四、开发注意事项

 五、学习网站(实践指南)

1.华为云实战训练营教学视频

2.智慧路灯项目实战教学(博主分享)

3.华为云最佳实践项目:基于NB-IoT小熊派开发智慧路灯

一、引言

       本文将介绍利用小熊派物联网开发板开发“智慧路灯”项目的实现方案,并着重介绍整个端管云的物联网实现架构,介绍如何从设备、平台、应用端到端构建一款智慧路灯解决方案样例。并提供相应的小熊派“智慧路灯”项目的学习网站。

二、智慧路灯物联网架构介绍

  • 感知层:即通过传感技术,感知并采集物理世界的数据,建立人与物之间的沟通桥梁;
  • 网络层:网络层作为数据传输的管道,把物与互联网进行连通,实现人、机、物之间互通;
  • 平台层:数据接入到系统平台后,平台可对数据进行解析、分析、处理后,提供丰富的服务与功能;
  • 应用层:物联网最终将会应用于各类行业,如智能家居、智能汽车、智慧城市、智慧交通、智慧医疗等等,推动智能化发展。

1.感知层:

即我们使用的小熊派开发板,外接E53_SC1扩展板(光强传感器+高亮LED),用于采集外界环境的光强信息。

2.网络层:

网络层,实现数据传输,把数据从感知层传输至平台层。网络层又分为物接入互联网、互联网传输两部分。

在智慧路灯的实现中(物接入互联网):可以选择以下通信技术接入互联网:

  • Wifi:一种高速短距的无线通信技术,工作频段在2.4GHz和5GHz,通讯距离在百米范围,功耗很大,一般只用于有源设备;
  • Lora(Long Range Radio):一种低速远距调制技术,采用线性调制扩频方式,增强通讯距离,可达2~15km的范围,在中国使用的是470-510MHz免授权频段。与ZigBee类似也是需要通过节点+网关的方式搭建网络,功耗较低;
  • NB-IoT(Narrow Band Internet of Things,窄带物联网):一种新兴的低功耗远距通信技术,属于授权频段,只需要180kHz的带宽便可部署至运营商网络上。通讯距离也在10km级别。其低功耗休眠机制,会导致无法实时通信;

这几种通信方式都有对应的小熊派通信模块,都是可以实现连接网络的,这一层的作用是将感知层采集的光强数据通过连接网络后上传至华为云物联网平台。

互联网数据传输:

目前有两种主流的通讯协议:MQTT和CoAP

  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输):是一个基于客户端-服务器的消息发布/订阅传输协议,可保持长连接,实现多对多异步通信;
  • CoAP(The Constrained Application Protocol,受限应用协议):是一种客户端-服务器单对单的协议,具备轻量低功耗的特点。

小熊派设备连接华为云平台还可以采用LWM2M(Light Weight Machine-to-Machine),即轻量型的通信协议,该协议是建立在COAP协议之上的。这里需要说明下:COAP协议和LWM2M协议实际上是应用层的协议,只是COAP协议是负责数据的传输部分,LWM2M协议在此基础上进行了资源定位。有的人把COAP协议看做是传输层的协议也是可以理解的,因为它负责将感知层设备采集的信息传输至物联网平台(数据传输)。

LwM2M协议底层使用CoAP协议传输数据和信令。而在LwM2M协议的架构中,CoAP协议可以运行在UDP或者SMS(短信)之上,通过DTLS(数据报传输层安全)来实现数据的安全传输。

注:MQTT协议、CoAP协议等都是运行在应用层,底层使用TCP协议或者UDP协议进行数据传输,整个协议栈运行在IP网络上。而LoRaWAN等协议则是物理层/数据链路层协议,它解决的是设备如何接入互联网的问题,并不运行在IP网络上。

3.平台层

在华为云物联网平台上创建产品——定义产品模型——开发编解码插件——添加真实设备(小熊派开发板),之后便可在华为云物联网平台上接收感知层设备上报的光强数据,并通过下发命令控制“路灯”(开发板扩展板的LED灯)的开启与关闭,还可以在应用侧添加相应的规则使得“路灯”能够根据采集的光强信息自动选择开启或者关闭灯光,以实现“智慧路灯”。(之所以需要开发编解码插件是因为传输的数据在物联网平台上是JSON格式,而LWM2M协议和COAP协议传输的数据是二进制数据,故在物联网平台上需要开发编解码插件对传输数据进行编码与解码操作)平台层的开发相对简单,因为很多功能是华为云平台封装好的,直接配置调用即可。

4.应用层

可以在华为云物联网平台上开发相应的Web应用“路灯管理”界面以展现感知层采集的信息以及路灯的状态信息。(因为华为云IoT开发者服务(IoT Studio)已经于2021/04/30 退市,故目前无法通过华为云的IOT studio创建应用界面)

画了一个简单的物联网架构图如下:

 具体的实践方案:(图源华为云实践文档)

 三、开发环境

开发板:小熊派开发板(含 NB 卡、NB35-A 通信扩展板、E53_SC1 案例扩展板等)
IDE开发软件:IoT Studio/Liteos Studio/MDK Keilv5/VSCode(安装IOT Link插件)

(使用IoT Studio/Liteos Studio开发时都点击创建IOT Studio或者Liteos Studio工程即可,并使用相应的工程模板即可,若选择导入其他嵌入式工程GCC,里面的代码个人觉得会比较乱,不利于学习和后续云平台的开发)

物联网通信技术:NB-IOT / WI-FI等均可以

物联网通信协议:COAP/ LWM2M/ MQTT均可
平台:华为云平台(需要华为云账号登录,且需完成实名认证)

操作系统:使用的是华为的LiteOS物联网操作系统提供了丰富的端云互通组件,该组件实现了LwM2M等协议,可以应用该组件实现与华为云平台的IoTDA的对接。

四、开发注意事项

        1.小熊派开发板连接后,光敏传感器以及NB-IoT扩展板插入到开发板上,若电源灯被点亮,说明开发板通电成功。但是注意!!有可能开发板的调试灯(图中而定橙色灯)是不会亮的,那么这个时候先不要怀疑是不是硬件出了问题,若烧录程序可以正常烧录(橙色灯闪烁)则证明开发板没有问题,毕竟板子之间存在微小差异,只要不影响功能实现即可。

         2.需要将开发板右上角的开关拨至AT-MCU(系统模式),这样才能够让开发板上的通信模块连接网络并将采集的信息传输至云平台。

 

         3.在添加真实设备后,在云平台上需要等待一会才能看到设备从未激活转为在线状态,此时若可以接收到上报的数据则证明云平台可以接收感知层采集的信息数据了(有2-3s的延迟)。

 五、学习网站(实践指南)

因为这一块的资料比较多,所以这里对一些个人认为比较有价值的资料进行汇总:

1.华为云实战训练营教学视频

小熊派智慧路灯开发项目教学视频https://www.bilibili.com/video/BV1nV411j7PH?p=1&vd_source=3705b01347fc48e3e92d04fc643860ef可以重点看前面的开发板介绍,但后面涉及云平台的教学内容基本没有什么价值(因为华为云网站这两年变化较大,导致视频中的云平台开发内容和实际操作的内容不匹配,没有实战价值)

2.智慧路灯项目实战教学(博主分享)

1 智慧路灯_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1e341177Tj?p=2&vd_source=3705b01347fc48e3e92d04fc643860ef

使用IOT studio软件进行开发,内容较详细且涉及云平台的内容是和实际网站的内容匹配的,强烈推荐。

3.华为云最佳实践项目:基于NB-IoT小熊派开发智慧路灯

基于NB-IoT小熊派开发智慧路灯_设备接入 IoTDA_最佳实践_设备接入_华为云 (huaweicloud.com)https://support.huaweicloud.com/bestpractice-iothub/iot_bp_0007.html

使用VScode以插件的形式进行开发,内容极为详细,具有很多扩展内容。

有关基于STM32小熊派开发智慧路灯项目实践的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  5. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  6. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  7. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  8. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  9. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  10. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

随机推荐