动手实践开发一个智慧路灯控制器

动手,实践,开发,一个,智慧,路灯,控制器 · 浏览次数 : 47

小编点评

**1. 项目获取** * 获取项目工程代码包 * 解压代码包 * 获取项目工程 **2. 项目配置** * 在代码中修改设备信息 * 修改WIFI_ESP8266_PWD为热点密码 **3. 配置WIFI** * 打开文件:*\\targets\\STM32L431_BearPi\\.config2 * 修改CONFIG_ESP8266_SSID为热点设备名称 * 修改WIFI_ESP8266_PWD为热点密码 **4. 设备配置** * 打开文件:*\\targets\\STM32L431_BearPi\\iot_config.h5 * 修改CONFIG_ESP8266_SSID为热点设备名称 * 修改WIFI_ESP8266_PWD为热点密码 **5. 编译烧录** * 点击进行编译 * 点击进行烧录 * 如果修改了.config文件和iot_config.h文件,请单击全量重新编译 **6. 串口调试** * 在串口终端中选择端口 * 设置波特率115200 * 开启串口 * 在LCD屏上,可以看到实时数据显示 **7. 示例代码** * 例程序案例程序文件:\"targets\\STM32L431_BearPi\\Demos\\oc_streetlight_template\\oc_streetlight_template.c\"

正文

本文分享自华为云社区《智慧路灯实验手册(MQTT+Wi-Fi)-完善版》,作者:华为云社区精选。

版本说明

本示例代码工程基于IoT LINK 2.1.0版本构建。

简介

智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、较少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。

本实验基于NB-IoT和WIFI实现智慧路灯案例,实现实时数据的采集,实现命令下发的响应,实现端云互通。

E53_SC1扩展板采用了E53标准接口,包含了一个路灯灯珠,一个BH1750光照强度传感器,其中路灯灯珠使用普通GPIO控制,BH1750使用IIC接口通信。

开发前准备

环境准备

• 已注册华为云官方帐号。未注册可点击注册页面 完成注册。

• 已完成实名制认证。未完成可在华为云上点击实名认证 完成认证,否则无法使用设备接入功能。

• 已开通设备接入服务。未开通则访问设备接入服务 ,点击“免费试用”后开通该服务。

• 已下载IDE:Huawei LiteOS Studio 1.45+(含扩展插件)

• 已下载编译烧录工具包 :包含arm-none-eabi、build、openocd-0.10.0。

• 已下载ST-Link驱动包:ST-Link.zip

硬件准备

• 开发板:小熊派开发板(含WIFI通信扩展板、E53_SC1案例扩展板)

环境配置

1. 硬件连接

连接好E53_SC1案例扩展板和Wi-Fi通信扩展板。将串口选择开关拨到AT-MCU模式,并用USB线将开发板与电脑连接,如图所示。

2. IDE安装配置

1) 下载并解压HUAWEI-LiteOS-Studio.zip 

2) 双击运行HUAWEI-LiteOS-Studio-Setup-x64-1.45.9.exe,根据提示步骤完成默认安装。

3) 启动运行HUAWEI-LiteOS-Studio,在IDE活动栏中,打开扩展视图,点击更多操作...,在弹出的菜单中选择从VSIX安装,然后指定中文语言包MS-CEINTL.vscode-language-pack-zh-hans-1.45.1.vsix文件路径,即可完成安装。

4) 根据提示重启IDE,即可切换为中文界面。

3. 编译烧录工具配置

下载并解压Tools.zip ,将解压后的arm-none-eabi、build、openocd-0.10.0全部拷贝到C:\Users\xxx\.huawei-liteos-studio\tools目录下。

注:xxx为本地PC用户名,请根据实际路径进行配置。

4. 驱动安装

下载并解压ST-Link.zip ,根据操作系统类型,双击配套的执行文件进行安装。

开始使用

1. 创建产品

对于设备上报至物联网平台的数据,云端物联网平台要能够解析设备上报的数据。故需要在设备接入服务侧完成产品模型定义,编解码插件开发部署等。

产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息。

步骤1 进入设备接入服务控制台,选择左侧导航栏“产品”进入页面。

步骤2 单击右上角的“创建产品”,按照页面提示填写信息。

• 所属资源空间:选择默认资源空间

• 产品名称:自定义,如MQTT_streetlight

• 协议类型:MQTT

• 数据格式:JSON

• 设备类型选择:自定义类型

• 设备类型:自定义,如MQTT_ streetlight

步骤3 单击“确定”,创建产品成功。

步骤4 单击“查看详情”,进入产品详情页面。在“模型定义”页签下,单击“上传模型文件”。

步骤5 添加产品模型文件“Smart_Light_profile.zip ”,并单击“确定”完成上传。

模型文件下载链接:Smart_Light_profile.zip

查看服务列表,属性和命令信息如下:

2. 注册设备

步骤1 进入设备接入服务控制台,选择左侧导航栏“设备”进入设备列表页面。

步骤2 单击右上角的“注册设备”,按照页面提示填写相关参数。

• 所属资源空间:选择上一步创建产品时选择的资源空间

• 所示产品:选择刚创建的产品,如MQTT_streetlight

• 设备标识码:自定义,如streetlight012345

• 设备名称:自定义,如streetlight_01

• 设备认证类型:选择“密钥”

• 密钥/确认密钥:自定义,如12345678

步骤3 单击“确定”,添加设备成功,请保存好设备ID和密钥,用于设备接入平台认证。

3. 导入代码工程

步骤1 获取项目工程代码包 并解压(注:路径不要包含中文、空格)。

获取项目工程:MQTT_StreetLight_Demo.rar

步骤2 启动HUAWEI LiteOS Studio工具,单击“Open Project”,打开项目工程。

项目工程预览如下:

4. 配置项目工程

步骤3 单击打开工程配置,目标板选择STM32L431RC,并“确认”。

步骤4 填写编译器配置选项后,单击“确认”。

• 编译器类型:arm-none-eabi

• 编译器目录:请根据实际路径配置,例如 c:\Users\xxx\.huawei-liteos-studio\tools\arm-none-eabi\bin

• Make构建器:请根据实际路径配置,例如c:\Users\xxx\.huawei-liteos-studio\tools\build\bin\make.exe

• Make脚本:请根据打开的项目工程进行配置,例如targets\STM32L431_BearPi\GCC\Makefile

步骤5 填写烧录器配置选项后,单击“确认”。

• 烧录方式:选择OpenOCD

• 端口:选择USB

• 烧录器配置:请根据实际路径配置,例如.\tools\openocd-0.10.0\bin-x64

• Interface文件:默认值

• Target文件:默认值

• 烧录文件:无需配置,待项目工程编译成功后会自动填充,例如.\targets\STM32L431_BearPi\GCC\build\Huawei_LiteOS.bin

5. 修改配置参数

步骤1 在代码中修改设备信息。

1) 打开文件:*\targets\STM32L431_BearPi\iot_config.h

2) 修改CN_EP_DEVICEID为在物联网平台注册设备时生成的设备ID,修改CN_EP_PASSWD为在物联网平台注册设备时填写的密钥。

3) 修改完成,请按Ctrl+S保存修改。

步骤2 配置WIFI用户名和密码。

此处只能使用用户名密码加密方式认证的WIFI,不能使用其他加密方式的WIFI。(可以使用手机开启WIFI热点,数据量不大不会占用太多个人流量)

开发板Wifi模块仅支持2.4GHz频段的热点,暂不支持5GHz频段。

1) 打开文件:*\targets\STM32L431_BearPi\.config

2) 修改CONFIG_ESP8266_SSID为热点设备名称,修改WIFI_ESP8266_PWD为热点密码。

3) 修改完成,请按Ctrl+S保存修改。

4) 打开文件:*\targets\STM32L431_BearPi\iot_config.h

5) 修改CONFIG_ESP8266_SSID为热点设备名称,修改WIFI_ESP8266_PWD为热点密码。

6) 修改完成,请按Ctrl+S保存修改。

6. 编译烧录

步骤1 单击进行编译,单击进行烧录。

如果修改了.config文件和iot_config.h文件,请单击全量重新编译,否则修改点可能不会生效。

步骤 2 单击打开串口终端,选择端口,设置波特率115200,开启串口,可以在接收区查看到打印的日志信息。

步骤3 在LCD屏上,可以看到实时数据显示。

7. 调试运行

步骤1 在物联网平台中,可以看到设备实时上报属性数据。

步骤2 在物联网平台中下发控制命令(开启路灯),查看命令下发结果及开发板的响应。

注:当前MQTT设备仅支持同步命令下发,NB设备仅支持异步命令下发。

示例代码

案例程序文件:

"targets\STM32L431_BearPi\Demos\oc_streetlight_template\oc_streetlight_template.c"

参考

详细了解IoT设备接入服务,请参考IoTD 帮助文档 

修订记录

点击关注,第一时间了解华为云新鲜技术~

 

与动手实践开发一个智慧路灯控制器相似的内容:

动手实践开发一个智慧路灯控制器

本实验基于NB-IoT和WIFI实现智慧路灯案例,实现实时数据的采集,实现命令下发的响应,实现端云互通。

动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏

摘要:在本案例中,我们将展示如何基于A2C算法,训练一个LunarLander小游戏。 本文分享自华为云社区《使用A2C算法控制登月器着陆》,作者:HWCloudAI 。 LunarLander是一款控制类的小游戏,也是强化学习中常用的例子。游戏任务为控制登月器着陆,玩家通过操作登月器的主引擎和副引

300行代码模拟cdn

> 这一生听过许多道理,但还是过不好这一生,这是因为缺少真正的动手实践,光听道理,缺少动手实践的过程,学习难免会让人觉得味同嚼蜡,所以我的分享都比较倾向于实践,在一次次动手实践的过程中感受知识原本纯真的模样。 大家好,我是蓝胖子,往往从事互联网开发的同学都听过cdn这个词,不过对于刚入行的同学可能会

500行代码手写docker开篇-goland远程编译环境配置

(1)500行代码手写docker开篇-goland远程编译环境配置 本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似docker的容器化功能,最终能够容器化的运行一个进程。 代码最终运行效果 本系列源码已经上

Libgdx游戏开发(5)——碰撞反弹的简单实践

原文: Libgdx游戏开发(5)——碰撞反弹的简单实践-Stars-One的杂货小窝 本篇简单以一个小球运动,一步步实现碰撞反弹的效果 本文代码示例以kotlin为主,且需要有一定的Libgdx入门基础 注:下面动态图片看着有些卡顿,是录制的问题,实际上运行时很流畅的 水平滚动 简单起见,我们通过

IDP 与 DevOps平台:相似之处与关键差异

软件开发是一个复杂而动态的过程,涉及许多工具、技术和实践。为了更快、更好地交付软件,开发人员需要有效地协作,自动执行任务,并管理环境。然而,由于软件架构的日益复杂,工具和平台的多样性,以及对安全和合规性的要求越来越高,软件开发变得极具挑战。 为了更好地应对开发挑战,企业根据自身情况分别选择内部开发者

自己动手实现一个轻量无负担的任务调度ScheduleTask

至于任务调度这个基础功能,重要性不言而喻,大多数业务系统都会用到,世面上有很多成熟的三方库比如Quartz,Hangfire,Coravel 这里我们不讨论三方的库如何使用 而是从0开始自己制作一个简易的任务调度 技术栈用到了:BackgroundService和NCrontab库 第一步我们定义一

5分钟教你搭建邮件服务器的实用指南

今天我写了一篇实用的文章,重点是教你如何免费搭建一个邮件服务器,这个服务器不仅可以用于发送邮件,还可以供我的待办机器人使用。一开始我试图找一些免费的 API 接口来实现这个功能,但遗憾的是,并没有找到合适的。对于程序员来说,能自己动手实现绝对是最好的选择,幸运的是,我有一台空闲的服务器可以利用。如果...

API 开发的后盾:平台工程提供强力动态支持

过去几年,开发团队一直在发展传统的 DevOps。一些开发人员认为,CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题。其他人则不愿意在承担所有其他职责之外构建、部署、运行和维护运维。显然,确实需要新的云原生开发策略,而不是典型的 DevOps。这就是平台工程的用武

ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践。 本文分享自华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》,作者:吴小鱼。 在之前发布的AI说ModelBox推理真的高效吗一文中,我们使用双阶段单人人体关键点检测作为案例对比测试了ModelB