-
焦点直播 | 星闪技术与OpenHarmony结合应用深度解析❤️ 河北大学齐耀龙副教授亲临指导 | 华为开发者布道师技术直播第9期 ❤️🔔 时间:3月29日(周六09:00-18:00),3月30日(周日09:00-12:00)✅ 主题:基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战核心亮点:1️⃣ 行业领先技术:全面解析星闪(NearLink)新一代无线短距通信技术,了解其在功耗、速度、覆盖范围和连接性能上的全方位优势。2️⃣ 全链路技术实战:深入讲解OpenHarmony操作系统及其与星闪技术的结合应用,涵盖WS63E星闪开发板的详细介绍。3️⃣ 创新实践分享:从智能终端到智能家居、智能汽车、智能制造等各类细分场景,手把手教你实现更极致的应用。4️⃣ 专家深度洞察:齐耀龙副教授结合学术理论与工业实践,分享技术应用中的实战经验和“避坑指南”。[庆祝] 为什么你绝不能错过?华为生态深度赋能:作为创新型技术的代表,星闪与OpenHarmony的结合将带来巨大的技术红利。职场竞争力加持:掌握新一代通信技术和操作系统的高级应用,成为智能技术领域的核心人才。从理论到落地:拒绝纸上谈兵,通过实际操作,全面提升技术能力,直击业务痛点。一次技术盛宴,让你的技术之旅更精彩!特别提示:本次活动将在华为上海练秋湖研发中心举行,同时进行线上同步直播,无论你身在何处,都能参与其中!点击报名,一起探索未来通信与操作系统技术的无限可能!报名地址:cid:link_0
-
又是一年开学、开工季人已在学校上课和工位上班脑子却在迷茫不知道做什么别再摸鱼啦!新的一年学习目标来啦!专为零基础小白提供的5门行业大会的HarmonyOS精品课程。这些课程由权威技术大咖讲解,深入浅出带你轻松理解鸿蒙应用基础概念,助力你全面掌握前沿技术,拥抱职业发展的无限可能!1.精品课程《鸿蒙:万物智联时代的操作系统》,请戳学习链接2.精品课程《鸿蒙应用开发:从Android到HarmonyOS》,请戳学习链接3.精品课程《鸿蒙分布式软总线的前世今生》,请戳学习链接4.精品课程《万物智联下的HarmonyOS开发框架》,请戳学习链接5.精品课程《Zelda :鸿蒙应用静态分析框架》,请戳学习链接
-
星星之火,可以燎原——从鸿蒙小白到校园布道师的故事亲爱的开发者朋友们:大家好!今天想和大家分享一段关于梦想、挑战和传承的故事——也就是我从鸿蒙小白到校园布道师的旅程。接过火种今年年初,我从前辈的手中,接过了鸿蒙的火种。那时,我只是一个对科技充满好奇的普通学生,但在华为校园公开课上,李林峰老师的生动讲解点燃了我心中的火苗。HarmonyOS NEXT的全新架构、分布式软总线、超级终端...这些前沿技术让我看到了一个全场景的万物互联的智慧世界。我决定投身于鸿蒙开发,开始了我的技术探险。微光成炬这条从0到1的开发之路却并不简单。当时正处于鸿蒙NEXT生态建设初期,开发文档还不够完善,网络传输、滑动卡顿、卡片数据同步等问题分分钟让我想要放弃。但是,就像火苗在风中摇曳,却始终不灭,我在广大开发者朋友们的帮助和自身努力下,逐渐克服了这些困难。今年4月份,仅用一个月的时间,我和小伙伴们不仅开发上架了应用,还获了奖。我们的项目,采用HarmonyOS NEXT的最新技术特性,实现了跨设备接续,支持多设备协同和同步的全新体验。如此丰富和全面的鸿蒙开放能力,如此简单的开发语言和配套工具,帮助我们迅速将脑海中的想象变为现实。在校园调查中,逸校园的满意度高达95%,同学们对鸿蒙原生应用带来的原生精致、易用、流畅、安全、智能、互联的使用体验一致地好评。造炬成阳在开发过程中,我们受到了徐彬老师的极大帮助。徐老师是一位华为开发者布道师,他通过深入浅出的课堂帮助我们快速入门。这让我意识到,作为开发者,我们不仅要做技术的探索者,也要做技术的传播者。今年8月份,我也成为了一名华为开发者布道师,立志将鸿蒙技术的力量带给更多同学。我在校内筹办了华为创新俱乐部,开始推广鸿蒙技术。我通过实际操作和案例演示,展示鸿蒙技术的独特魅力。半年的时间里,我已经将手中的火苗传递给了200多名同学。星星之火,可以燎原。星星之火,可以燎原作为一名校园开发者,我深知技术创新的力量。我相信,在华为技术的支持下,未来会有更多像我一样的开发者涌现出来。作为华为开发者布道师的一员,无论是老师、学生,还是企业布道师,我们在逐渐成长为照亮全国乃至全球的火炬。朋友们,让我们一起,用千万火苗,照亮鸿蒙新世界的每一个角落。谢谢大家!
-
中奖结果公示感谢各位小伙伴参与本次活动,欢迎关注华为云开发者社区技术直播更多活动~本次活动获奖名单如下(部分抽奖未填问卷用户无账号名):账号名 奖项名称 奖品名称 备注持久观看有奖开发者定制帆布袋持久观看有奖开发者定制帆布袋持久观看有奖华为云云宝手办-盲盒款持久观看有奖华为云云宝手办-盲盒款
-
参考书籍资料:《鸿蒙操作系统设计原理与架构》 (李毅,任革林)布道活动地点:东北大学(浑南校区)
-
鸿蒙版cordova/PhoneGap介绍鸿蒙版cordova或PhoneGap,这里统称为鸿蒙版Cordova,遵守cordova官方,不再使用鸿蒙版PhoneGap了。 cordova移动端跨平台研发的重要框架之一,支持Android和Ios,官方并不支持鸿蒙系统,harmony-cordova是鸿蒙的cordova,这里主要介绍鸿蒙版corddova,安卓和Ios请查看cordova官方文档,cordova除了cordova sdk外,还有很多的插件,开发者根据自己的APP的需要可以选择使用相关的插件,鸿蒙版cordova sdk地址鸿蒙版cordova已经上架鸿蒙三方库中心,开发者可以直接在DevEco studio中直接使用。cordova sdk 三方库地址:https://ohpm.openharmony.cn/#/cn/detail/harmony-cordova鸿蒙版cordova支持的插件插件ID接口地址说明cordova-plugin-whitelistcid:link_12白名单cordova-plugin-network-informationcid:link_0网络管理cordova-plugin-inappbrowsercid:link_8内置浏览器cordova-sqlite-storagecid:link_11嵌入式数据库cordova-plugin-cameracid:link_14相机功能cordova-plugin-filecid:link_15本地文件管理cordova-plugin-file-transfercid:link_5上传和下载文件cordova-plugin-dialogscid:link_13弹窗cordova-plugin-datepickercid:link_1日期选择phonegap-plugin-barcodescannercid:link_3扫码cordova-plugin-media-capturecid:link_6视频录制cordova-plugin-alipay-v2调用接口:cid:link_9依赖插件:https://ohpm.openharmony.cn/#/cn/detail/@cashier_alipay%2Fcashiersdk自定义支付宝支付插件,只是按照文档接口调用了支付宝插件依赖支付宝官方插件aliyun.uploadvod暂无文档,需联系开发者阿里云OSS插件,实现移动端直接上传文件到阿里云OSScordova-plugin-android-permissionscid:link_2授权插件,接口永远返回为拥有权限,主要为兼容android移植到harmony使用的,避免修改Android端的代码,harmong授权已下放到各个插件,无需单独编写代码phonegap-bluetooth-plugincid:link_10经典蓝牙插件cordova-plugin-ble-centralcid:link_10低功耗蓝牙插件cordova-base64-to-gallerycid:link_7保存图片到相册cordova-plugin-huawei-pushcid:link_4华为推送,自定义插件,详细使用请咨询开发者Android移植鸿蒙步骤1,打开DevEco创建项目,选择Empty Ability进入下一步,填写必要信息,这里要注意,bundle name 先填写com.example.myapplication,也就是保持默认不变,因为在没有cordova.crt证书的情况下,cordova鸿蒙版要求bundle name必须为com.example.myapplication,主要用于研发测试,如果开发测试完成要修改bundle name上架鸿蒙应用市场,请联系开发者申请cordova.ert证书,或者事先联系开发者提供技术服务。2,项目创建成功后,复制原有Android studio的工程assests/www目录下面的所有文件到鸿蒙工程entry/src/main/resources/目录下,注意直接复制原andriod工程www目录下的文件,不包含www。3,复制原android工程res/xml目录下的config.xml文件到鸿蒙工程entry/src/main/resources/目录下。4,打开DevEco studio的Terminal终端,进入工程目录,执行 ohpm install harmony-cordova 安装本插件。5,打开鸿蒙工程文件entry/src/main/etx/pages/Index.ets文件,修改代码如下:import { MainPage, pageBackPress, pageHideEvent, pageShowEvent } from 'harmony-cordova/Index'; @Entry @Component struct Index { onPageShow(){ pageShowEvent(); //页面显示通知cordova } onBackPress() { pageBackPress(); //拦截返回键由cordova处理 return true; } onPageHide() { pageHideEvent(); //页面隐藏通知cordova } build() { RelativeContainer() { MainPage(); //webview首页index.html } .height('100%') .width('100%') } }6,打开鸿蒙工程文件/entry/src/main/ets/entryAbility/EntryAbility.ets文件,修改onCreate函数如下import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { window } from '@kit.ArkUI'; import { webview } from '@kit.ArkWeb'; import { setSchemeHandler } from 'harmony-cordova/Index';...onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {webview.WebviewController.initializeWebEngine();//webview引擎初始化setSchemeHandler();//设置webview schemehilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');}7,鸿蒙混合研发,也许您会增加其他page页面,不一定应用的首页为cordova webview(index.html)的首页,例如应用增加了鸿蒙的原生的启动页面,包含首页弹窗,同意隐私政策后,然后再从启动页面进入cordova的页面,这样避免在用户没有同意隐私政策的情况下,初始化cordova sdk,因为初始化cordova sdk,系统读取了设备的网络状态,因为国内相关法律规定,在用户没有同意隐私政策的情况下,不允许读取设备的网络标识。8,做以上代码修改后,鸿蒙的移植已经完毕,可以使用模拟器或者真机进行编译和测试了。Ios移植鸿蒙步骤如果您的项目有android和Ios的工程,请参考android项目移植项目的鸿蒙下,如果您的项目没有andriod工程,只有Ios工程,请使用如下方法移植,移植时大部分内容和安卓一样,只是复制的文件的路径不一致,以下只介绍不同部分,相同部分请参考android移植步骤。1,复制Xcode的Ios工程目录下的Staging/www目录下的所有文件到鸿蒙工程entry/src/main/resources/目录下。 2,Xcode工程的config.xml文件在Staging目录下,Xcode工程的该文件不能直接被鸿蒙版cordova使用,需要进行转换,该文件主要记录的是插件的名称和初始化的类,因为鸿蒙版是根据android的config.xml进行插件初始化的,因此需要将Xcode工程config.xml转为安卓的config.xml,请将Xcode工程使用node加入安卓平台,系统会自动生成android版的config.xml。然后将文件复制到鸿蒙版工程的entry/src/main/resources/下。附加说明:本人认为使用cordoca跨平台研发,一般至少都会包含android和ios两大平台,很少只有ios平台,没有android平台的,所以大部分移植鸿蒙参考android移植步骤,后续升级SDK会兼容Ios工程的config.xml,无需转换就可以使用。新项目,一次开发适用于andriod、Ios和Harmony三大平台由于cordova官方当前并不支持HarmonyOS平台,使用node无法直接将HarmonyOS加入到cordova,也无法直接安装插件到HarmonyOS,因此对于新项目要一次开发满足三大平台的话,建议先通过node加入Android和Ios平台和安装插件,后续研发可以使用Android studio研发和调试,待研发成功后,然后再在Xcode和DevEco做跨平台适配。Xcode适配请参考cordova的官方文档,HarmonyOS适配请参考以上Android的移植步骤。特别说明当前版本不支持使用者自定义插件研发,如果该版本没有包含您要使用的插件,或者您的项目中有Android或Ios的自定义插件,需要移植到HarmonyOS平台,请您和本开发者联系,获取技术支持。使用鸿蒙版cordova sdk在开发测试阶段务必将bundle name修改为com.example.myapplication,如果将bunlde name改为正式的Id,鸿蒙版cordova sdk会读取entry/src/main/resources/目录的cordova.crt证书文件,用于验签,如果该文件不存在,启动应用后,应用会闪退。如果应用的bundle name为com.example.myapplication,鸿蒙版 cordova sdk会跳过验签,不检测cordova.crt文件。但是上架鸿蒙应用市场,必须将bundle name改为正式的id,所以请联系开发者申请cordova.ert证书,另外由于操作系统之间的差异,虽然保持了cordova的插件接口不变,但是返回值会有所调整,后续文档会逐步完善,在使用本插件跨平台研发时请联系开发者提供技术服务。
-
2024年7月23日,在学生自发组织,负责教师指导下,兰州大学信息科学与工程学院(下文简称“信息学院”)网络安全专业暑期学校暨华为布道师活动“OpenHarmony网络安全能力综合培训”圆满举行。本次活动由华为开发者学生布道师王天一、聂嘉一同学自发组织,信息学院刘新副教授指导,并邀请信息学院博士生刘子昂作分享报告。本次活动主要覆盖了OpenHarmony生态发展、开源社区简介、网络漏洞挖掘等内容。活动现场照片活动伊始,聂嘉一同学介绍了OpenHarmony操作系统的设计理念与生态发展,同时分享了OpenHarmony设备兼容性测试相关经验、王天一同学为大家讲解了近期开源工作的内容,并介绍了兰州大学OpenHarmony俱乐部所承接的年度课题。聂嘉一同学为大家介绍OpenHarmony兼容性测试流程王天一同学为大家介绍OpenHarmony年度课题上午的第二个环节,刘新副教授分享自己在HDC2024发现活动漏洞的经验,并以多所高校官网中存在的安全隐患为例,讲解了常见网络安全漏洞的类型,为同学们下午的实战演练提供理论基础。刘新副教授为大家分享HDC2024漏洞挖掘经验在上午活动的尾声,刘子昂博士作开源许可证治理的报告,揭示了不当使用许可证带来的潜在风险,并介绍许可证兼容性分析的方法。刘子昂博士为大家讲解开源许可证治理23日下午,刘新老师与几位同学指导大家在华为云服务器靶场中进行漏洞挖掘,让大家在实践中提升自身的专业能力。现场挖掘靶场安全漏洞背景概述:华为布道师计划旨在培养更多能够掌握和使用华为开放技术评聘专业人才,更为致力于引领、指导和支持他人学习和应用这些技术。兰州大学信息科学与工程学院周庆国教授为首批华为教师布道师。
-
2024年7月13日-7月18日,在学生自发组织,负责教师指导下,兰州大学信息科学与工程学院(后简称“信息学院”)“人工智能专业综合实训”暑期学校暨华为开发者布道师活动“OpenHarmony开发实战提升”圆满举行。本次活动由华为开发者学生布道师王天一、聂嘉一同学自发组织,信息学院教师狄长艳老师指导,同时华为开发者教师布道师、信息学院教师周庆国教授,信息学院教师刘传义副教授等受邀做了分享报告。本次活动主要覆盖了OpenHarmony的南北向开发以及OpenHarmony初级人才认证考试等内容。活动现场照片活动首日,聂嘉一同学介绍了OpenHarmony操作系统的设计理念与生态发展、钱浩莱同学详细讲解了鸿蒙南北向开发流程,并重点介绍了鸿蒙应用程序的开发。聂嘉一同学为大家介绍OpenHarmony生态发展前景钱浩莱同学为大家讲解OpenHarmony应用程序开发实例此外,活动中王天一同学为大家讲解了OpenHarmony初级人才认证的基本信息和考试方法,在讲解完成之后,还组织了大家现场进行OpenHarmony人才认证考试。王天一同学为大家讲解OpenHarmony人才认证相关内容经过了一个小时的考试之后,共有36名同学通过了OpenHarmony初级人才认证,周庆国教授为同学们颁发了获奖证书。周庆国教授为获得OpenHarmony初级人才认证的同学颁发证书在为期六天的暑期学校中,几位同学均在实战环节指导大家动手实践,从零开始完成智能设备的开发。在活动的最后一日,参加活动的同学们共同合影留念。获得OpenHarmony初级人才认证的同学们合影留念背景概述:华为开发者布道师计划旨在培养更多能够掌握和使用华为开放技术评聘专业人才,更为致力于引领、指导和支持他人学习和应用这些技术。其中,信息学院周庆国教授为首批华为开发者教师布道师。
-
我在Index页面上面这样放置,登录的时候修改了this.token,按文档意思应该是会自动持久化的,但当我关闭app重启打开,又显示token没有数据.试了很多次了,不知道是不是我用arkUI-X的缘故?环境是DevEco Studio 4.0 Release Build Version: 4.0.0.600, built on October 17, 2023ArkUI-X 1.0.0.0OpenHarmony SDK API 10ace build apk 生成的apk文件放在安卓手机安装的,因为我的DevEco Studio经常识别不到手机.
-
小熊派烧录过程中执行upload出现以下错误应该如何解决?
-
本示例将演示如何利用启航KP_IOT主控板和智能风扇模块进行案例开发。模块介绍智能风扇模块主要的部件有STH30温湿度传感器,一个红外传感器,一个led灯,一个按键和电机,该模块能够实现按键控制电机的启停,电机启动一共分三档,按一次按键增加一个档位,控制电机这一部分用到了pwm,和gpio的知识点。该模块上的STH30传感器可以监控环境温湿度,STH30是通过i2c进行数据交互的,采集的数据还可以显示在oled屏上,oled屏是通过spi进行数据交互。模块上的红外传感器能够实现对物体的检测,当红外传感器检测到物体时led灯会被点亮。智能风扇模块主要试验步骤我们将调用motor_demo()函数,我们就可以在motor_module.c文件中motor_demo()函数声明中完成电机的控制功能,电机控制需要用到pwm,按键需要用到一个gpio,第一步先对io口进行复用,像i2c,pwm,spi,uart等这样功能性引脚复用是在wifiiot/init/app_io_init.c文件中完成的。查看电路原理图和芯片手册中可以知道电机是使用的pwm2,知道电机使用的是pwm2之后,就要知道pwm2是哪个gpio引脚输出的,在include/hi_io.h中可以查看,每个gpio引脚可以复用的功能。gpio2管能够复用成gpio,uart1_rts,spi,pwm2_out等功能,我们需要用到的是pwm2_out,所以在wifiiot/init/app_io_init.c中将gpio_2复用成pwm2_out功能,设置引脚功能的函数hi_u32hi_io_set_func(hi_io_name id, hi_u8 val)的具体功能介绍可以在include/hi_io.h中可以查看。pwm设置完成之后在motor_module.c文件中motor_gpio_io_init()函数中对按键接入的引脚进行复用,从原理图可看到按键KEY-1是接GPIO_05。步骤1 按键对应io5之后在motor_gpio_io_init()中将io5复用成gpio/*gpio5按键控制电机速度*/ ret = hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_io_set_func ret:%d\r\n", ret); return; } printf("----- gpio5 fan set func success-----\r\n"); ret = hi_gpio_set_dir(HI_GPIO_IDX_5, HI_GPIO_DIR_IN); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_gpio_set_dir1 ret:%d\r\n", ret); return; } printf("----- gpio set dir success! -----\r\n");io设置完成之后,就可以进行功能的编写了,我们想要实现的功能是通过按键控制电机的启停,电机有三个档位,按键按一次增加一个档位,电机处于三档时再按一次按键电机将停止。首先我们要创建一个任务去实时监听按键接入io引脚的状态,OpenHarmony系统中任务的创建调用hi_u32hi_task_create(hi_u32 *taskid, const hi_task_attr attr,hi_void (*task_route)(hi_void *), hi_void *arg);步骤2 创建的电机任务的属性,包括任务优先级,任务栈的大小,任务名,在任务处理函数中去实现我们想要的功能//创建的电机任务的属性,包括任务优先级,任务栈的大小,任务名等 static unsigned int g_MonitorTask; const hi_task_attr MonitorTaskAttr = { .task_prio = 20, //优先级范围20~30之间 .stack_size = 4096, //任务大小 .task_name = "BuggyNetworkMonitorTask",//任务名称,可自行修改 }; void *MonitorOledTask(void * para) /* OLEDtask处理函数 */ { while(1){ test_led_screen(); printf("OLED task \r\n"); } return NULL; } // 电机task处理函数 void *MonitorMotorTask(void * para) { while(1){ gpio_getval(); //主要任务,对电机的控制在此函数中实现 infrared_ctrl(); //printf("fan task \r\n"); } return NULL; }步骤3 在gpio_getval()实现对电机控制;//按键控制电机程序 hi_void gpio_getval(hi_void) { hi_u32 ret; int temp; static int key = 0; //将gpio_val_1置为1,置为1是因为从原理图中可知按键默认是高电平,按下为低电平 hi_gpio_value gpio_val_1 = HI_GPIO_VALUE1; temp = infrared_ctrl(); //获取gpio5引脚电平,并赋值给gpio_val_1 ret = hi_gpio_get_input_val(HI_GPIO_IDX_5, &gpio_val_1); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_gpio_get_input_val ret:%d\r\n", ret); return; } //printf("----- gpio input val is:%d. -----\r\n", gpio_val_1); //当gpio_val_1为低电平是说明按下了按键,按1次按键增加一个档位 if(gpio_val_1 == 0){ //休眠1s是为了消除按键的抖动 sleep(1); if(gpio_val_1 == 0){ key++; } //key表示是几档,根据不同的档位再输出不同占空比的pwm波去控制电机 switch(key){ case 0: break; case 1: //电机1档,控制端口2输出1占空比的pwm波 motor_pwm_start(1); break; case 2: //电机2档,控制端口2输出2占空比的pwm波 motor_pwm_start(2); break; case 3: //电机3档,控制端口2输出3占空比的pwm波 motor_pwm_start(3); break; default: printf("invalid mode \r\n"); } //当key大于4或等于0时停止电机 if(key >= 4 || key == 0 || temp == 1){ key = 0; ret = hi_pwm_stop(HI_PWM_PORT_PWM2); if(ret != 0){ printf("hi_pwm_stop failed \r\n"); } } } //printf("key : %d \r\n",key); }pwm波控制电机输出部分程序:在使用pwm之前需要先对pwm进行初始化,初始化pwm只需要调用hi_pwm_init(parm),函数中的参数(parm)是需要初始化的端口,使用的pwm2需要填宏定义HI_PWM_PORT_PWM2,具体宏定义含义在include/hi_pwm.h中有说明。步骤4 对端口的初始化只需要完成一次,所以在创建电机任务之前调用一次motor_pwm_init()即可hi_void motor_pwm_init(hi_void) { int ret = -1; ret = hi_pwm_deinit(HI_PWM_PORT_PWM2); //初始化端口2 if(ret != 0){ printf("hi_pwm_deinit failed :%#x \r\n",ret); } ret = hi_pwm_init(HI_PWM_PORT_PWM2); //初始化端口2 if(ret != 0){ printf("hi_pwm_init failed :%#x \r\n",ret); } ret = hi_pwm_set_clock(PWM_CLK_160M); //设置端口2的时钟源频率 if(ret != 0){ printf("hi_pwm_set_clock failed ret : %#x \r\n",ret); } }对电机速度的控制实际上就是控制pwm的占空比和频率,想要输出不同占空比的pwm波调用函数hi_u32hi_pwm_start(hi_pwm_port port, hi_u16 duty, hi_u16freq);参数port表示端口号,duty占空比值,freq频率。在我们使用的模块中,时钟频率默认是160000000hz,所以可以定义一个宏去表示时钟频率,这里我们是用PWM_CLK_FREQ表示时钟频率,分频倍数165535,频率范围就是2441160000000(频率=时钟源频率/分频倍数),我们用最低频率就可以了,所以将频率用一个宏freq去表示值为2441。步骤5 motor_pwm_start(unsigned int duty)中duty就表示占空比,想让pwm2端口输出多少占空比的波形,直接在调用该函数时传入占空比值就可以了。hi_void motor_pwm_start(unsigned int duty) { int ret = 0; DBG("motor start \r\n"); if(duty == 0){ ret = hi_pwm_stop(HI_PWM_PORT_PWM2); //停止pwm2端口输出 if(ret != 0){ printf("hi_pwm_start failed ret : %#x \r\n",ret); } } ret = hi_pwm_start(HI_PWM_PORT_PWM2, duty*(PWM_CLK_FREQ/freq)/100, PWM_CLK_FREQ/freq); //输出duty占空比的pwm波 if(ret != 0){ printf("hi_pwm_start failed ret : %#x \r\n",ret); } }步骤6 motor_pwm_start(unsigned int duty)中duty就表示占空比,想让pwm2端口输出多少占空比的波形,直接在调用该函数时传入占空比值就可以了。hi_void motor_demo(hi_void) { int ret; motor_gpio_io_init(); //完成对按键所接io的复用 motor_pwm_init(); //对pwm进行初始化 //创建一个任务去专门处理电机控制任务 ret = hi_task_create(&g_MonitorTask, // task标识// &MonitorTaskAttr, MonitorMotorTask, // task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor motor task failed [%d]\r\n", ret); return; } return; }红外传感器模块红外传感器有一个发射端和一个接收端,当发射端发出的电磁波被挡住返回,接收端接收到后红外传感器接到模块上的引脚就会从低电平变成高电平,所以我们可以通过监控红外传感器的引脚电平高低来判断是否检测到物体,目前实现的现象是,当检测到物体时led就会被点亮,没检测到物体led就灭。写程序之前我们要先确定红外传感器接入的引脚和led接入的引脚,从原理图中可以看到红外传感器LED_infrared接入的引脚是GPIO_07,LED_SW1灯接入的引脚是GPIO_06。步骤1 知道红外传感器和led接入的引脚后,就需要对相应的IO进行复用,因为是同一个模块所以可以在motor_gpio_io_init()中实现io7,io8的复用。//设置io8的方向,因为led灯是输出信号,所以设置成out ret = hi_gpio_set_dir(HI_GPIO_IDX_8, HI_GPIO_DIR_OUT); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_gpio_set_dir1 ret:%d\r\n", ret); return; } /*gpio7 电机模块红外传感*/ ret = hi_io_set_func(HI_IO_NAME_GPIO_7, HI_IO_FUNC_GPIO_7_GPIO); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_io_set_func ret:%d\r\n", ret); return; } printf("----- io set func success-----\r\n"); //设置io7的方向,因为红外传感器是输入信号,所以设置成输入 ret = hi_gpio_set_dir(HI_GPIO_IDX_7, HI_GPIO_DIR_IN); if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_gpio_set_dir1 ret:%d\r\n", ret); return; } printf("----- gpio set dir success! -----\r\n");步骤2对io功能复用完成后,就可以完成对led控制这一部分的功能了,首先这两引脚的默认值都是低电平,所以先将这两个引脚赋值HI_GPIO_VALUE0,然后根据gpio_val_7引脚的电平高低来判断红外传感器是否检测到物体,检测到物体是将gpio_val_8置为高电平点亮led。hi_void infrared_ctrl(hi_void) { hi_u32 ret; hi_gpio_value gpio_val_7 = HI_GPIO_VALUE0; //设置gpio_val_7默认值 hi_gpio_value gpio_val_8 = HI_GPIO_VALUE0; //设置gpio_val_8默认值 ret = hi_gpio_get_input_val(HI_GPIO_IDX_7, &gpio_val_7); //监控gpio_val_7的电平 if (ret != HI_ERR_SUCCESS) { printf("===== ERROR ===== gpio -> hi_gpio_get_input_val ret:%d\r\n", ret); return; } //printf("----- gpio input val is:%d. -----\r\n", gpio_val_7); if(gpio_val_7 == 1){ hi_gpio_set_ouput_val(HI_GPIO_IDX_8,HI_GPIO_VALUE1); //gpio_val_7为高电平时,将HI_GPIO_IDX_8置为高电平输出 }else{ hi_gpio_set_ouput_val(HI_GPIO_IDX_8,HI_GPIO_VALUE0);//gpio_val_7为低电平时,将HI_GPIO_IDX_8置为低电平输出 } }步骤3 功能完成后就需要在适合的时机去调用,因为红外线监控也是需要实时监控gpio引脚,和监控按键一样所以可以在电机任务中去调用。void *MonitorMotorTask(void * para) /* 电机task处理函数 */ { while(1){ gpio_getval(); //电机按键监控 infrared_ctrl(); //红外传感器监控 } return NULL; }sht3x温湿度传感器模块SHT3x-DIS是Sensirion新一代的温湿度传感器,精度为±2%RH和±0.3℃,输入电压范围从2.4V到5.5V,采用IIC总线接口,速率可达1MHz。测量温湿度范围分别为是-40℃ ~ 125℃和0 ~ 100%。具体规格和原理参考说明手册。步骤1 初始化sth3xvoid SHT3X_init(void) { int ret = 0; unsigned short data[2] = {0}; SHT3X_SoftReset(); //软件复位SHT3X SHT3x_WriteCMD(CMD_READ_SERIALNBR); //向i2c发送读命令 SHT3x_WriteCMD(CMD_MEAS_PERI_2_M); //设置读取周期为2hz }步骤2 读取测量数据void SHT3X_ReadMeasurementVal(unsigned int para) { (void) para; static int cunt = 0; static float humidity = 0.0; static float temperature = 0.0; SHT3X_ReadMeasurementBuffer(&temperature,&humidity); //将读取数据存到temperature和humidity中 } //数据存储的具体实现 void SHT3X_ReadMeasurementBuffer(float* temperature, float* humidity) { unsigned int rawValueTemp = 0; SHT3x_WriteCMD(CMD_FETCH_DATA); //读取数据前先发送一个周期读取指令 SHT3x_Read4BytesDataAndCrc((unsigned short *)&rawValueTemp);//读取i2c上四个字节的数据 dump_buf((unsigned char *)&rawValueTemp,sizeof(rawValueTemp)); //调试打印读取的数据 *temperature = SHT3X_CalcTemperature(rawValueTemp); //将读取的数据转换成浮点型温度数据 *humidity = SHT3X_CalcHumidity(*((unsigned short *)(&rawValueTemp)+1));//将读取的数据转换成浮点型湿度数据 Temperature = *temperature; Humidity = *humidity; DBG("temp :%f,hum :%f \r\n",Temperature,Humidity); //打印读取的温湿度 } //将读取的数据转换成浮点型的温度 static float SHT3X_CalcTemperature(unsigned short rawValue) { return 175.0f * (float)rawValue / 65535.0f - 45.0f; //转换公式 } //将读取的数据转换成浮点型的湿度 static float SHT3X_CalcHumidity(unsigned short rawValue) { return 100.0f * (float)rawValue / 65535.0f; //转换公式 } //读取4字节数据的具体实现 int SHT3x_Read4BytesDataAndCrc(unsigned short *data) { int ret = -1; unsigned char sendbuf[2] = {0}; unsigned char rcvbuf[6] = {0}; hi_i2c_data sht3x_i2c_data = { 0 }; //i2c在该模块的数据收发数据都是存储在结构体中的,该结构体可以再include/hi_i2c.h中查看 sht3x_i2c_data.send_buf = sendbuf; sht3x_i2c_data.send_len = sizeof(sendbuf); sht3x_i2c_data.receive_buf = rcvbuf; sht3x_i2c_data.receive_len = sizeof(rcvbuf); if(data == NULL){ DBG("invalid para \r\n"); return ret; } ret = hi_i2c_read(0, ((unsigned char)0x44) << 1 | 0x01, &sht3x_i2c_data); //sht3x地址为0x44,读温湿度传感器中数据,数据存储在sht3x_i2c_data中 if(ret != 0){ DBG("hi_i2c_read failed ret :%#x \r\n",ret); return ret; } ret = SHT3X_CheckCrc(rcvbuf,2,rcvbuf[2]); //将读取的数据进行校验 if(ret != NO_ERROR){ DBG("read serial number crc check failed \r\n"); return ret; } ret = SHT3X_CheckCrc(&rcvbuf[3],2,rcvbuf[5]); //将读取的数据进行校验 if(ret != NO_ERROR){ DBG("read serial number crc check failed \r\n"); return ret; } data[0] = rcvbuf[0] << 8 | rcvbuf[1]; //将数据存到data数组中 data[1] = rcvbuf[3] << 8 | rcvbuf[4]; return 0; }步骤3 任务调用hi_void motor_demo(hi_void) { int ret; SHT3X_init(); //初始化SHT3X ret = hi_task_create(&g_MonitorTask, // task标识 // &MonitorTaskAttr, MonitorSthTask, // task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor motor task failed [%d]\r\n", ret); return; } return; }到这一步温湿度传感器的程序已经编写完成了,可以将程序进行编译然后下载到模组中验证一下是否可以读取温湿度,如果能读取到温湿度,在日志中会打印出读取的数据。OLED显示模块采集完成数据之后可以在oled模块上显示,oled模块的具体开发详见oled开发流程知道,这里是直接使用oled去显示SHT3X读取的温湿度,显示温湿度首先我们要对oled进行初始化,我们使用的spi0所以初始化时spi_id=0。hi_void screen_spi_master_init(hi_spi_idx spi_id){int ret = -1;//screen_ERR;test_spi_para spi_para; //test_spi_para结构体是spi的基础属性,定义在oled_module/spi_screen.h文件中步骤1 给spi基础属性赋值spi_para.spi_id = spi_id; //spi端口号,我们是用的是0 spi_para.irq = HI_FALSE; //是否启用中断,选择否 spi_para.cfg_info.data_width = HI_SPI_CFG_DATA_WIDTH_E_8BIT; //传输数据位为8位 spi_para.cfg_info.cpha = HI_SPI_CFG_CLOCK_CPHA_0; //时钟相位0,采集第一个跳变沿数据 spi_para.cfg_info.cpol = HI_SPI_CFG_CLOCK_CPOL_0; //时钟极性0,空闲状态为低电平 spi_para.cfg_info.fram_mode = HI_SPI_CFG_FRAM_MODE_MOTOROLA; //选用的通讯协议 spi_para.cfg_info.endian = HI_SPI_CFG_ENDIAN_LITTLE; //数据传输为小段模式 spi_para.slave = HI_FALSE; //没有从机 spi_para.lb = HI_FALSE; //不设置回环测试模式 spi_para.dma_en = HI_FALSE; //不采用dma spi_para.cfg_info.freq = 2000000; //通讯频率2Mhz test_spi_printf("app_demo_spi_test_cmd_mw_sr Start"); ret = screen_spi_init(spi_para.spi_id, &(spi_para.cfg_info), spi_para.slave); //spi的系统初始化 if (ret == HI_ERR_SUCCESS) { test_spi_printf("SPI init succ!"); } else { test_spi_printf("SPI init fail! %x ", ret); return; } hi_spi_set_loop_back_mode(spi_para.spi_id, spi_para.lb); //设置回环测试模式 hi_sleep(1000); /* 1000 */ hi_spi_set_irq_mode(spi_para.spi_id, spi_para.irq); //设置中断模式 hi_spi_set_dma_mode(spi_para.spi_id, spi_para.dma_en); //设置dma模式 hi_sleep(1000); /* 1000 */ }步骤2 初始化完成之后,需要创建一个oled任务去完成显示功能ret = hi_task_create(&g_MonitorTask, // task标识 // &MonitorTaskAttr, MonitorOledTask, // task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor oled task failed [%d]\r\n", ret); return; } void *MonitorOledTask(void * para) /* OLEDtask处理函数 */ { while(1){ test_led_screen(); //显示功能 printf("OLED task \r\n"); } return NULL; }温湿度的显示主要是由TEST_Menu2()显示的,这个oled模块显示数字有一个特点,它显示20这样的两位数时,是将这两位数分开来显示的,先显示2再显示0,我们读取的温度是一个浮点型数据,所以在显示时需要将各个位上的数字分离出来。void TEST_Menu2(void) { extern float Temperature; //Temperature的读取是在不同的文件中,所以想在这个文件中使用就需要将Temperature定义成全局变量,这边引用时加extern extern float Humidity; printf("Temperature:%f Humidity:%f \r\n",Temperature,Humidity); int a = 0; int b = 0; int c = 0; int d = 0; int e = 0; int f = 0; int g = 0; a = Temperature; b = a / 10; //整除获取十位上的数据 c = a % 10; //取余获取个位上的数据 d = (Temperature - a) * 10; //Temperature为浮点型数据,a为整形,相减之后就是小数,再乘十,获取到的就是小数后的第一位 e = Humidity; f = e / 10; //整除获取十位上的数据 g = e % 10; //取余获取各位上的数据 printf("b:%d c:%d d:%d f:%d g:%d\r\n",b,c,d,f,g); u8 i; //图形界面的绘制 GUI_DrawLine(0, 10, WIDTH-1, 10,1); GUI_DrawLine(WIDTH/2-1,11,WIDTH/2-1,HEIGHT-1,1); GUI_DrawLine(WIDTH/2-1,10+(HEIGHT-10)/2-1,WIDTH-1,10+(HEIGHT-10)/2-1,1); GUI_ShowString(0,1,"2021-08-1",8,18); GUI_ShowString(14,HEIGHT-1-10,"Cloudy",8,1); GUI_ShowString(WIDTH/2-1+2,13,"TEMP",8,1); GUI_DrawCircle(WIDTH-1-19, 25, 1,2); GUI_ShowString(WIDTH-1-14,20,"C",16,1); GUI_ShowString(WIDTH/2-1+2,39,"HUMI",8,1); GUI_DrawBMP(6,16,51,32, BMP5, 1); //温湿度的显示 GUI_ShowNum(WIDTH/2-1+9,20,b,1,16,1); //温度的十位数字显示 GUI_ShowNum(WIDTH/2-1+9+8,20,c,1,16,1); //温度的十位数字显示 GUI_ShowString(WIDTH/2-1+9+8+8,20,".",16,1); //小数点显示 GUI_ShowNum(WIDTH/2-1+9+8+16,20,d,1,16,1); //温度的小数显示 GUI_ShowNum(WIDTH/2-1+5,46,f,1,16,1); //湿度的十位显示 GUI_ShowNum(WIDTH/2-1+5+8,46,g,1,16,1); //湿度的个位显示 GUI_ShowString(WIDTH/2-1+5+8+8,46,"/rh",16,1); //湿度的单位显示 sleep(2); }步骤1 在motor_demo()中去调用hi_void motor_demo(hi_void) { int ret; motor_gpio_io_init(); //智能风扇模块gpio的初始化 SHT3X_init(); //温湿度传感器的初始化 motor_pwm_init(); //pwm的初始化 hi_spi_deinit(HI_SPI_ID_0); screen_spi_master_init(0); //spi的初始化 ret = hi_task_create(&g_MonitorTask, // task标识 // &MonitorTaskAttr, MonitorOledTask, // oled task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor oled task failed [%d]\r\n", ret); return; } ret = hi_task_create(&g_MonitorTask, // task标识 // &MonitorTaskAttr, MonitorMotorTask, // motor task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor motor task failed [%d]\r\n", ret); return; } ret = hi_task_create(&g_MonitorTask, // task标识 // &MonitorTaskAttr, MonitorShtTask, // sht task处理函数 // NULL); // task处理函数参数 // if (ret < 0) { printf("Create monitor motor task failed [%d]\r\n", ret); return; } return; }修改 applications / sample / wifi-iot / app / 路径下 BUILD.gn 文件,指定 motor_module 参与编译。"22_KP_SHT30_example:motor_module",运行结果将智能风扇模块和oled模块安装在开发板上,将上面编译好的程序下载到模组上验证温湿度的显示。原文地址:【OpenHarmony样例】基于启航KP_IOT开发板的智能风扇模块 - OpenHarmony开源社区 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)
-
前提启航kp OpenHarmony环境搭建搭建好OpenHarmony环境未搭建好可以参考OpenHarmony docker环境搭建安装vscode下载好启航kp所需的开发包和样例下载地址搭建过程进入正确文件夹首先要进入 /home/openharmony 目录下,如果没有打开在vsc左上角找到文件,点击,然后找到打开文件夹,输入想要进入的目录。能看到便代表成功进入。配置开发板所需要的文件在vendor文件夹内新增文件夹:isoftstone,把从gitee下载文件中vendor_isoftstone文件夹中的qihang文件夹复制到isoftstone目录下。device/board文件夹内新增文件夹:isoftstone,在isoftstone文件夹中新建文件夹:qihang,再将附加包内的board_qihang文件夹的人内容拷贝到这个文件夹内:检验是否安装成功输入hb set选中启qihang输入hb build -f尝试编译输出 qinghang build success则构建成功。制作“hello word”案例在device/board/isoftstone/qihang/app目录建一个目录:01hello,然后在这个目录下新建文件:hello.c内容如下#include "ohos_init.h" void hello_demo(void) { printf("hello word!\n") } SYS_RUN(oled_demo); 在hello.c同级别目录添加文件BUILD.gn,填入以下内容static_library("hello_demo"){ sources=["hello.c"] } 在app目录BUILD.gn添加01hello模块import("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "01hello:hello_demo", ] } hb set选择启航开发板hb build -f进行编译有以下输出表示编译成功6。 编译成功后可以在out/qihang/qihang/Hi3861_wifiiot_app_allinone.bin找到编译后的二进制文件
-
OpenHarmony docker环境搭建要求一台安装ubuntu的虚拟机,vscode软件安装docker在 Ubuntu 上安装 Docker 非常直接。我们将会启用 Docker 软件源,导入 GPG key,并且安装软件包。首先,更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源:sudo apt update sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common使用下面的 curl 导入源仓库的 GPG key:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -将 Docker APT 软件源添加到你的系统:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"现在,Docker 软件源被启用了,你可以安装软件源中任何可用的 Docker 版本。01.想要安装 Docker 最新版本,运行下面的命令。如果你想安装指定版本,跳过这个步骤,并且跳到下一步。sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io02.想要安装指定版本,首先列出 Docker 软件源中所有可用的版本:sudo apt update apt list -a docker-ce可用的 Docker 版本将会在第二列显示。docker-ce/focal 5:19.03.93-0ubuntu-focal amd64 通过在软件包名后面添加版本=<VERSION>来安装指定版本:sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io 一旦安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它: sudo systemctl status docker 输出将会类似下面这样:● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-21 14:47:34 UTC; 42s ago ...当一个新的 Docker 发布时,你可以使用标准的sudo apt update && sudo apt upgrade流程来升级 Docker 软件包。拉取镜像运行 Docker 软件,打开 CMD 命令行或者 PowerShell 终端,使用指令下载 docker 官方镜像:docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0等待下载完成之后,使用 docker images 可以查看到已下载的 docker 镜像 此时镜像名称太长不方便使用,可以使用重命名操作对镜像重命名:docker image tag swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0 openharmony-docker:1.0.0此时使用 docker images 再次查看镜像,发现多出一个名为 openharmony-docker:1.0.0 的镜像 可以执行docker rmi swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0删除旧的镜像: 执行docker run -it openharmony-docker:1.0.0 指令可以运行镜像可以看到系统直接进入到了/home/openharmony,但是此时仅是容器运行成功了,还没有代码,无法完成开发,接下来需要获取代码OpenHarmony 代码获取通过git(不推荐,有时会卡死)首先要设置git用户名和邮箱,否则拉去代码时会报错git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com"拉去代码repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Release -g ohos:mini repo sync -c repo forall -c 'git lfs pull'通过httprepo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Release -g ohos:mini repo sync -c repo forall -c 'git lfs pull'检验输入hb -v如果出现版本号代表成功Vscode 安装开发板实验需要烧录固件,所以要用到 vscode 编辑器导出固件 到该网址下载最新版的 Visual Studio Code,简称 vscode,下载完成后执行安装. 网址: cid:link_0安装 vscode 插件打开安装好的 vscode 编辑器,点击左侧插件图标,输入 remote ssh 点击安装图标,等待安装完成,安装完成之后左侧会出现下面的图标 然后重复步骤安装入 dev contains 远程连接服务器3、添加服务器连接配置 点击该选项卡,会进入SSH TARGETS的添加,如下图所示:点击添加按钮,输入远程服务器的地址,账号和ip根据自己的情况进行修改,如下图所示:保存之后,会将刚才的连接信息存储在 C:\Users\chaxun.ssh\config 中。此时就可以在SSH TARGETS中看到添加的远程服务器地址了:4、连接服务器 右键选择远程服务器,如果远程服务器能够连接成功,此时会需要你输入密码:5、基本操作例如我点击Open Folder,这里就会让你选择打开的文件目录:点击ok按钮打开 /home/zhaxun 之后,会需要再次输入密码:启动和连接镜像启动镜像的方式可以是终端命令行,如果容器已启动,可以选择 attach 连接容器 点击连接容器之后,会弹出一个新窗口,点击左侧上面第一个图标,会显示该 容器内的文件系统(需要一点缓冲时间) 如果界面同以上截图不一样,而是如下所示: 就点击打开文件夹,在上方弹出的对话框输入/home/openharmony,再点击确 定, 等待片刻就会显示出文件列表,接下来就可以像操作本地文件一样打开文件 并进行编辑,然后修改一个文件:在顶部菜单栏点击终端,再选择新建终端,可以打开终端: 注意观察弹出来的终端,工作目录是否是/home/openharmony,如果不是请检 查前面的操作是否错误或有遗漏 在终端命令行输入:hb set 指令,再输入回车,到达选择开发板的界面,用鼠标 或键盘上下键选择 qemu_mini_system_demo,再敲回车:选择好了开发板,就可以执行构建命令: hb build -f 此时系统开始构建,由于我们使用的是 docker 环境,在制作镜像的时候环境已 经准备好了,所以不需要配置其他的脚本或者工具即可以达到编译固件的目的. 最后终端会显示编译成功,我们可以在 out 相应的目录下找到对应的固件,输 入:ls out/arm_mps2_an386/qemu_mini_system_demoqemu 模拟器的运行 由于模拟器的运行不涉及到具体的硬件,所以本实验不需要烧录步骤,在 docker 控制台终端输入./qemu-run,再输入 y 就能运行 qemu 模拟器了,下面是运 行状态的截图: 在 qemu 的终端里可以输入 help 命令查看该模拟器支持运行哪些指令: 同学们可以自行尝试列出来的指令退出模拟器的运行: 按住 Ctrl+a 然后同时放开,再按一下 x 键即可退出 qemu 终端可以看出,系统此处退出了 qemu 模拟器回到了 doc
-
8⽉21⽇晚,华为云HCSD校园沙龙·广西制造工程职业技术学院顺利举办!本次活动由华为云计算技术有限公司主办,广西制造工程职业技术学院承办。活动以物联网+鸿蒙为主题,围绕端云生态协同展开技术交流分享,现场华为云专家带领200余名学生了解物联网、鸿蒙技术知识及发展动态。华为自发布鸿蒙系统以来,就引起广泛大众的关注,经过几年的打磨,目前鸿蒙系统已初具规模,在8月4日第五届华为开发者大会2023上又正式发布了全新升级的HarmonyOS 4(以下简称鸿蒙4)。全面进化的智能终端操作系统,更是带来前所未有的个性化,高效、智慧、流畅、安全的革新和体验,如今鸿蒙系统已成为最具生命力的生态底座,为用户提供了全新体验和全场景智慧生活。在万物互联的时代,鸿蒙智联势必加速了物联网时代的真正到来,华为云IoT高级工程师王婵,则以“物联网+鸿蒙,打开校园新方式”为主题,向与会师生详细讲述了物联网与鸿蒙的关系演进、物联网+鸿蒙使能千行百业、当代大学生如何玩转物联网+鸿蒙等,还特别讲述了鸿蒙4在个性化、高效性、智慧化、流畅度以及安全性等五个方面进行了全新升级,带来了前所未有的个性化与高效交互体验,打破了传统操作系统呆板、扁平、无趣的特点,为学生们揭开物联网与鸿蒙系统的神秘面纱。在训练营环节,带领学生们体验了基于现实使用案例场景搭建的实验【10分钟快速体验恒温空调云端控制】,学习如何基于物联网平台,在应用侧或者设备接入控制台设置设备影子,将预置的温度通过设备影子下达属性修改给空调,以实现空调收到修改属性的要求后,自动调节温度。通过理论讲解+实验练习,学生们深入学习如何基于物联网平台实现端云互通、万物智联,并体验开发乐趣。活动现场,氛围十分活跃,学生们不仅踊跃参与实践,还和专家进行互动问答,切磋交流。本次华为云HCSD校园沙龙活动为同学们提供了一个与专家互动交流的平台,拓宽了他们的视野,激发了他们对于科技创新的热情和动力。华为云将继续致力于与高校合作,并为人才培养提供更多支持,共同推动数字产业人才生态发展。
-
8月10日上午,HCSD夏令营·厦门大学走进华为专场活动圆满落幕!厦门大学刘长青书记及师生等一行人至华为(龙岗)工业互联网创新中心参观交流。华为云工业软件人才培养合作经理欧阳航先生全方位介绍了工业互联网整个生命周期及展厅的布局,并带领厦大师生沉浸式体验了工业互联网创新中心的能力。工业软件是现代工业的灵魂,是制造大国迈向制造强国的基础,是研发创新摸高的底线能力。华为云工业软件产教融合总监侯建国基于工业软件人才培养的背景,展开“集众智、聚众力,为突破自主创新工业软件贡献力量”的主旨演讲,他提到,随着工业软件在工业产品的全生命周期性的广泛应用,核心工业软件能力更需要可信可用。华为以云计算框架为核心,开放华为工程场景,与伙伴共建自主创新工业软件体系;以工业数字模型驱动引擎,筑牢工业软件根技术底座。华为云开发者创新中心运营经理邓大启以“智能世界的云底座,支撑华为各大开发者生态发展”为背景,华为云协同鸿蒙生态,全面解读鸿蒙技术优势、鸿蒙ToB、ToC产品能力,带领开发者基于端云协同能力无限创新,从而构建优良生态,全方面使能开发者。人才因产业而聚,产业因人才而兴。发现、培育、凝聚一批有自主创新潜力、政治素质过硬、专业能力突出的卓越工程师,有助于形成“产业聚集人才、人才支撑产业”的良性互动。华为云招聘经理蔡云丽则围绕以华为云为底座的数字技术背景,讲解华为云的发展历程、业务进展、架构技术和应用。她还深度剖析行业发展方向,介绍华为云校招的岗位&流程,为学生们未来择业做行业洞察。华为(龙岗)工业互联网创新中心作为深圳首个工业互联网创新中心,依托于华为云的数字化赋能服务,致力于带动龙岗区整体制造业产业集群转型升级、提升工业互联网能力,助力龙岗区打造成为创新驱动、应用引领、生态活跃的全国工业互联网领先地区。截至目前,创新中心提供场景解决方案100余个,已服务区内工业企业1200余家。接下来,也将持续构建工业互联网产业生态,加速数字龙岗发展,推动龙岗区工业企业数字化转型、助力传统制造业向制造服务业升级。
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签