《鸿蒙机器人编程》课件-4. 通过语音让SPARK实现智能家居控制_第1页
《鸿蒙机器人编程》课件-4. 通过语音让SPARK实现智能家居控制_第2页
《鸿蒙机器人编程》课件-4. 通过语音让SPARK实现智能家居控制_第3页
《鸿蒙机器人编程》课件-4. 通过语音让SPARK实现智能家居控制_第4页
《鸿蒙机器人编程》课件-4. 通过语音让SPARK实现智能家居控制_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

©NXROBO2023通过语音实现智能家居控制课程说明了解网络通信星火派WiFi-STA实现在线/离线语音功能开源鸿蒙套件控制灯效©NXROBO20232了解网络通信©NXROBO20233网络通信介绍©NXROBO20234

网络通信是指通过计算机网络实现数据传输和交换的过程。计算机网络是由多个计算机和其他设备(如路由器、交换机等)组成的互联网,它们通过物理链路或无线信道相连,构成一个覆盖范围广泛的信息传输系统。

网络通信的基本原理是使用协议对信息进行编码和解码。通信协议规定了数据格式、传输速率、错误检测和纠正等方面的细节,从而使得网络设备可以相互识别和交换信息。常用的网络通信协议包括TCP/IP、HTTP、FTP、SMTP等。-TCP/IP协议是Internet上最常用的协议之一,它负责将数据分割成小块并在网络上传输;-HTTP是超文本传输协议,用于Web浏览器和服务器之间的通信;-FTP是文件传输协议,用于在不同计算机之间传输文件;-SMTP是简单邮件传输协议,用于电子邮件的发送和接收。WiFi网络组建©NXROBO20235手机客户端要与星火派正常进行网络通信,需要二者处于同一局域网内,连接同一热点或者路由,配置IP。由于星火派每次重启都会重置IP地址,如果设置为动态IP的话开发板IP会不断变化,所以这里采用静态IP的配置方法,配置静态IP时要确保该IP能够正常分配到,网关与掩码都要进行配置。由于Spark有热点功能,也可以通过让Spark开启热点,供给手机客户端与星火派开发板进行连接。STA联网©NXROBO20236STA(Station)是指设备作为无线局域网的客户端或终端,用于连接到无线网络的设备。STA联网是指该设备通过无线接口连接到一个无线网络,并获取网络连接的功能。在无线局域网中,通常有一个无线接入点(AP)作为网络的中心设备,负责提供无线信号和网络连接。STA设备可以通过扫描周围的无线信号找到可用的无线网络,并与其中的一个网络进行连接。连接后,STA设备可以与该网络进行通信,访问互联网或与网络中的其他设备进行交互。STA联网的过程通常涉及以下步骤:1.扫描:STA设备扫描周围的无线信号,获取可用的无线网络列表。2.连接:选择要连接的无线网络,并与该网络建立连接。这通常需要提供网络的身份验证信息,如SSID(网络名称)和密码。3.鉴权:STA设备向无线网络发送身份验证信息,并等待网络的确认和鉴权。4.获取IP地址:一旦STA设备通过身份验证,它会分配一个IP地址,用于在网络中唯一标识设备。5.联网:STA设备成功获取IP地址后,可以与网络中的其他设备进行通信,访问互联网或执行其他网络相关的操作。STA联网相关API©NXROBO20237OpenHarmony提供相关接口API位置于:/openharmony3.1.6/device/soc/hisilicon/hi3861v100/sdk_liteos/include其中hi_wifi_api.h文件提供STA联网相关API星火派WiFi-STA实现©NXROBO20238WIFI开启的流程©NXROBO202391.STA初始化,hi_wifi_sta_start()2.注册回调函数,hi_wifi_register_event_callback():wifi模块接收到事件触发回调3.根据网络接口查找对应的netif结构体指针,netifapi_netif_find():传递网络接口名称作为参数,可以获取到该网络接口对应的netif结构体指针,进而可以对该网络接口进行相关操作,如配置IP地址、启动DHCP等。4.扫描WIFI,hi_wifi_sta_scan():获取到扫描到的无线网络的信息,如SSID(网络名称)、信号强度等。这样可以在应用程序中显示可用的Wi-Fi网络列表或进行其他相关操作。5.获取WIFI扫描结果,hi_wifi_sta_scan_results:获取Wi-Fi扫描结果,即获取附近可用的Wi-Fi网络列表。通过调用该函数,可以获取包含扫描到的Wi-Fi网络信息的结构体数组。6.连接WiFi,hi_wifi_start_connect():与指定的Wi-Fi网络进行连接。通过调用该函数,可以指定要连接的Wi-Fi网络的SSID(网络名称)、认证方式和密码,并进行连接操作。7.配置DHCP获取IP地址,dhcp_start():启动动态主机配置协议(DHCP)客户端,通过向DHCP服务器发送请求,获取IP地址、子网掩码、默认网关等网络配置信息。编写WIFI业务代码wifi_sta.c©NXROBO202310wifi_sta.c文件位于:/spark_hm_pi/example/08_wifi_sta/08_wifi_sta目录下,内容如下:(更多信息请查看实训指导书)编写业务编译构建文件BUILD.gn©NXROBO202311BUILD.gn文件位于:/spark_hm_pi/example/08_wifi_sta/BUILD.gn,内容如下:(更多信息请查看实训指导书)编写模块编译构建文件BUILD.gn©NXROBO202312BUILD.gn文件位于:/spark_hm_pi/example/BUILD.gn,内容如下:(更多信息请查看实训指导书)编译&烧录&调试©NXROBO202313具体过程参照《鸿蒙开发板开发环境操作手册》与《星火派SPARK-HM-PI程序烧录说明》打开串口调试助手,按下开发板reset,可以看到串口打印出WIFI信息:在线/离线语音功能©NXROBO202314语音技术介绍©NXROBO202315外设通过无线,内部通过串口和NUC通信,控制底盘。在线语音功能是指使用互联网连接,与其他人进行实时语音通话。用户可以通过应用程序或网页界面打开麦克风和扬声器,并与其他人进行通话。这种功能常见于即时通讯软件、社交媒体平台或网络电话服务。也可以通过在线语音功能进行远程控制。

离线语音功能是指在没有互联网连接的情况下,仍然能够使用语音功能完成一些操作。例如,在手机或电脑上安装语音识别软件,可以使用离线语音功能将语音转换为文字,从而辅助用户进行文字输入。另外,还有一些设备自带的离线语音播报功能,例如汽车导航系统、智能家居产品,可以在没有网络连接的情况下,对用户进行语音提示和指导。本章节的功能实现采用离线语音功能的语音识别技术。语音识别技术©NXROBO202316语音识别技术,也称为自动语音识别(AutomaticSpeechRecognition,ASR),可以基于机器识别和理解,将语音信号转变为文本或命令。本案例中采用的是华为的鸿蒙手机,利用语音识别功能提供面向移动终端的语音识别能力。开发基于华为智慧引擎(HUAWEIHiAIEngine)中的语音识别引擎,向开发者提供人工智能应用层API。该技术可以将语音文件、实时语音数据流转换为汉字序列,准确率达到90%以上(本地识别95%)。约束与限制:支持的输入文件格式有wav或pcm当前仅支持对普通话的识别输入时长不能超过20s采样要求:采样率16000Hz,单声道引擎的使用必须初始化和释放处理,且调用必须在UI的主线程中进行多线程调用:HUAWEIHiAIEngine不支持同一应用使用多线程调用同一接口,这样会使某一线程调用release方法后,卸载模型,导致正在运行的另一些线程出错。故多线程执行同一功能达不到并行的效果。但是引擎支持使用多线程调用不同接口,如开启两个线程同时使用文档矫正和ASR接口接口说明©NXROBO202317接口说明©NXROBO202318开发步骤©NXROBO2023191在使用语音识别API时,将实现ASR的相关的类添加至工程//提供ASR引擎执行时所需要传入的参数类importohos.ai.asr.AsrIntent;//错误码的定义类importohos.ai.asr.util.AsrError;//加载语音识别Listenerimportohos.ai.asr.AsrListener;//提供调用ASR引擎服务接口的类importohos.ai.asr.AsrClient;//ASR回调结果中的关键字封装类importohos.ai.asr.util.AsrResultKey;开发步骤©NXROBO2023202.调用API接口2.1创建一个AsrClient对象。context为应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例AsrClientasrClient=AsrClient.createAsrClient(context).orElse(null);2.2设置引擎参数。如果希望识别文件,音频文件需满足约束与限制,并设置音频类型为“ASR_SRC_TYPE_FILE”;如果希望识别音频流,则设置音频类型为“ASR_SRC_TYPE_PCM”AsrIntentinitIntent=newAsrIntent();initIntent.setAudioSourceType(AsrIntent.AsrAudioSrcType.ASR_SRC_TYPE_PCM);2.3初始化ASR服务。其中,mMyAsrListener为实现了AsrListener接口的实例对象asrClient.init(initIntent,mMyAsrListener);开发步骤©NXROBO2023212.调用API接口2.4开始识别。用户可以不设置参数,使用默认参数AsrIntentasrIntent=newAsrIntent();//设置后置的端点检测(VAD)时间asrIntent.setVadEndWaitMs(2000);//设置前置的端点检测(VAD)时间asrIntent.setVadFrontWaitMs(4800);//设置语音识别的超时时间asrIntent.setTimeoutThresholdMs(20000);asrClient.startListening(asrIntent);//buffer需要替换为真实的音频数据byte[]buffer=newbyte[]{0,1,0,10,1};//对于长度大于1280的音频,需要多次调用writePcm分段传输asrClient.writePcm(buffer,1280);开发步骤©NXROBO2023222.调用API接口2.5取消或停止识别asrClient.stopListening();//停止识别asrClient.cancel();//取消识别2.6释放引擎asrClient.destroy();开源鸿蒙套件控制灯效©NXROBO202323WS2812LED介绍©NXROBO202324WS2812的8x8灯板是一种由64个WS2812LED灯珠组成的点阵屏幕。每个WS2812LED灯珠都可以独立控制颜色和亮度,因此可以在这种灯板上显示彩色图像和动画。WS2812LED介绍©NXROBO202325WS2812LED灯珠使用一种特殊的通信协议,可以通过单个数据线连接多个灯珠。这意味着您只需要使用一个引脚来控制整个8x8灯板。要控制WS2812的8x8灯板,您需要使用单片机或微控制器来发送控制数据,并使用相应的库函数来设置每个LED灯珠的颜色和亮度。相关API©NXROBO202326图片取模介绍©NXROBO202327

图片取模是指将一幅图片转换为点阵数据的过程。这通常用于将图片显示在点阵屏幕(如LED点阵屏幕或LCD字符显示屏)上。

在图片取模过程中,首先需要将图片缩放到与目标点阵屏幕大小相匹配。然后,根据屏幕的颜色深度和显示能力,将图片的颜色数据转换为点阵数据。例如,对于单色点阵屏幕,图片的颜色数据需要转换为黑白二值数据。

最后,根据屏幕控制器的要求,将点阵数据进行适当的编码和排列。例如,对于横向取模的控制器,需要将点阵数据按行排列;对于纵向取模的控制器,则需要将点阵数据按列排列。

图片取模通常使用专门的取模软件来完成,也可以通过编程实现,具体可以网上搜索取模软件。“SPARK“图片取模©NXROBO202328

横向取模和字节倒序是点阵字库中常用的术语。

横向取模是指在点阵字库中,一个字符的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论