基于BearPi_NM_Nano与华为IOT平台进行数据上云
本篇实操总结是在官方介绍文档,以及网上参考案例的基础上,结合我自己在实操中遇到的种种错误完成撰写。
作为华为的一款官方开发板,BearPi提供了较完整的案例代码,相较于使用其它开发板上云,更加方便。接下来我将从开发工具下载来开始介绍一整套完整的数据上云流程。
一、Windows系统下的开发环境
1.开发工具获取
官方为Windows系统配备了一套完整的开发方案,其中开发环境是基于VS code进行搭建。
HUAWEI DevEco Device Tool(以下简称DevEco Device Tool)是OpenHarmony面向智能设备开发者 提供的一站式集成开发环境,支持OpenHarmony的组件按需定制,支持代码编辑、编译、烧录和调试 等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。(官方介绍)
安装包获取:华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发
安装步骤:
(1)进入官网,选择Windows系统,点击下载安装包
(2)打开安装包,跟随安装向导进行安装(记住安装路径)
代码编辑工具(VS code)
下载地址:Download Visual Studio Code - Mac, Linux, Windows
当安装好VS code与HUAWEI DevEco Device Tool后,我们就可以开始进行环境配置了。
2.环境配置
在安装好软件后,打开VS Code,安装好Burn Tool插件与C语言插件(如果此时你还没有配置好VS Code的C/C++的编译环境,可以参考vscode配置 -- 编写C语言 - 初晨~ - 博客园 (cnblogs.com))
打开位于左侧边框的DevEco Device Tool,选择“New Project”创建新项目
进行项目配置,若之前未下载SDK,点击下载后会自动下载
加载完SDK之后,点击“Confirm”按钮,载入项目,完成后会自动跳转至工作区,接下来我们就可以开始进行代码的编译与烧录了!
二、进行第一次编译与烧录
1.初试编译“HelloWrold”
编译前的准备:
(1)工程文件
同常将想要运行的代码放在路径"src\applications\sample\wifi-iot\app\"下,在该路径下存放的文件,通常除了要进行编译的业务文件,还包括名为”BUILD.gn“的编译脚本。如下图,在"demolink"文件下除了"helloworld.c"业务文件外,还有一个"BUILD.gn"文件。
(2)文件内容及作用
业务文件:用于存放进行编译的代码。
编译脚本:设置编译器需要编译那些文件,并给出对应业务文件以及代码中所引用的头文件地址。
开始编译:
(1)撰写业务文件的代码
在上图所示的”app“文件下创建工程文件夹”first_project“,并新建业务文件”hello_world“,将代码写入业务文件中,编写代码(这里我直接用示例的代码)。
#include "ohos_init.h" #include "demosdk.h" void DemoSdkMain(void) { DemoSdkEntry(); } SYS_RUN(DemoSdkMain);
写好业务代码后,我们就可以进行编译脚本的撰写了。
(2)编译脚本
static_library("myapp") { //定义静态库"myapp" sources = [ "helloworld.c" ] //将要编译的业务文件 include_dirs = [ "//utils/native/lite/include", //业务文件中所引用的头文件路径 "//domains/iot/link/libbuild" ] }
除此之外,在路径”src\applications\sample\wifi-iot\app“下的”BUILD.gn“编译脚本,决定了执行那些工程文件。
脚本代码:
import("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "first_project:myapp", //":"前为工程文件名称,":"后为工程文件下定义的静态库名称 ] }
(3)完成以上两步,我们就可以开始进行编译了
DevEco Device Tool支持一键编译与一键烧录,操作方便。
转到DevEco工具界面,点击Build选项进行编译
编译后发现,系统报错!
检查报错代码:
我们会发现代码提示未发现'DemoSdkEntry'函数,这时候,我们返回业务文件的代码中去寻找,就会发现其所指向的函数:
Ctrl+左键点击该函数就会跳转至函数定义所在的文件中去,既然函数存在,又为什么会找不到?
如果,你检查了下图所示的编辑脚本就会发现,该脚本没有执行,该项目文件下的两个工程文件,此时我们只需要按照之前的操作,将”demolink“与”libbuild“两个工程文件添加进去就可以了。
import("//build/lite/config/subsystem/lite_subsystem.gni") import("//build/lite/config/component/lite_component.gni") lite_subsystem("iot") { subsystem_components = [ "libbuild:demosdk", //添加要执行的工程文件 "demolink:demolinkadapter" ] } lite_component("link") { features = [ ] }
完成上方几步后我们点击”Rebuild“选项,再次进行编译,出现:
至此,第一次编译完成。
2.代码烧录:
(1)准备
首先,我们需要准备一块BearPi_NM_Nano开发板与一根Type-C数据线。
(如果你的DevTools_Hi3861V100_v1.0开发工具时在新建项目时自动安装的,直接在"C:\DevEco\resources\toolset\DevTools_Hi3861V100\1.0.0"寻找)
串口驱动安装(点击下载):
解压后:
打开"usb_serial_driver"文件,双击CH341SER.EXE驱动进行安装
安装后,打开控制面板,搜索设备管理器,查看串口设备,若未出现CH340串口设备,请检查驱动是 否安装正常。
(2)烧录
将开发板通过数据选连接到电脑,打开DevEco工具,选择Project Settings,进入烧录端口设置栏"upload_port"选择端口
选择完成后,点击"Upload"选项,开始烧录,当出现“please reset device...”提示后按下开发板的复位键。
当烧录完成时,端口提示如下图所示,若出现报错,请检查端口是否选择正确,且未被占用。
如果你完成到这一步,恭喜你,你已经完成了第一次的代码编译与烧录,接下来我们就可以开始,通过官方的案例代码,实现数据上云了。
三、华为云平台注册流程
开始界面
点击注册进入注册页面
注册界面
填写对应信息完成注册后并登录
注册产品
进入主页后选择设备接入创建IoTDA实例,随后点击右侧产品选项,创建产品,完成产品注册后,在右方注册下拉选项中选择所有设备,在右上方点击注册设备完成设备注册。
下方三个信息很重要,而且密钥只能重置,无法查看。
MQTT参数获取
获取权鉴参数:Huaweicloud IoTDA Mqtt ClientId Generator (myhuaweicloud.com)
在下方输入设备id与设备密钥,生成参数。
四、设备上云
1.Bearpi的案例代码使用
为了实现快速设备上云,我们将利用官方案例中的D9案例实现设备接入。
文件路径:src\vendor\bearpi\bearpi_hm_nano\demo\D9_iot_cloud_oc_manhole_cover
在该案例中,E53_SC2.c所包含的是华为智慧井盖模块的倾角检测代码,wifi_connect.c是所需的网络以及mqtt连接配置。而我们需要修改的是iot_cloud_oc_sample.c文件中的参数。
在该代码中,我们需要将上一步所获取的设备ID以及设备密钥进行填入。并填入wifi账号与密码,SERVERPORT端口与SERVERIP服务器地址可以不用修改。
修改完成后,按照之前的编译及烧录步骤,将D9案例在app文件夹下运行并上传。
完成后,在华为云平台的设备管理中,所创建的设备将显示为在线,至此,Bearpi设备上云成功。
ps:新手一枚,恳请各位大佬斧正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现