「极客教程」RADK从入门到精通-项目1 语音控制普通台灯

极客教程

(yigangfang) #1

RADK从入门到精通-项目1 语音控制普通台灯

1. 概述

使用ROKID语音开发套件,控制扩展板上某排针的电位高低(5伏或0伏),连接继电器,控制220V普通台灯(非智能无蓝牙WIFI)的打开和关闭。

2. 开发套件的准备

  1. 拿到开发套件,包括下图中所有部件,以及USB-C线、螺丝等零件。 出售的开发套件是已经完全组装好的,可以立刻使用。

CPU板和Mic板是组装好的。扩展用的Debug板并没有预先安装。如果用户需要用到,可以自行安装,需要的螺丝和FPC排线等均随套件提供。

  1. 下载镜像文件,共5个img文件,及一个刷机脚本flash_radk.sh。确保他们都在同一文件夹中。 img files
  2. 把开发套件用USB-C线连接到Mac电脑,并拔掉其它所有安卓设备,防止误操作。
  3. 在Mac电脑上打开Terminal终端,用cd命令切换到镜像所在目录。
  4. 执行./flash_radk.sh。脚本会自动寻找开发套件、重启进入刷机模式、刷写镜像、完成后重启,即进入正常使用状态。

3. 电路连接

本示例中使用的继电器的指标如下:

  • 输入(控制端):5V 直流DC
  • 输出(被控制端):250V交流,最大电流10A,或125V交流,最大电流15A。
  • 低电平触发,即信号输入端与地之间的电压为0V时触发。可以理解为信号输入端与GND极短路触发的一种方式

连接示意图

注意!!!在通电前,继电器 被控制端的C端和NO端需要用绝缘胶带包好,防止意外触电!切记!

4. 新建一个skill

登陆Rokid开发者社区,https://developer.rokid.com

点击右上方“控制台”,然后点击左侧“技能开发工具”下的“创建技能”。

创建新技能。

第一页:技能信息:

  • 开放性:私有,本地技能。(此选项非常重要!)
  • 技能类型:自定义技能
  • 技能名称、入口词:请自行填写。

点击,下一步。

此时系统会自动生成一个“技能ID”,格式为:rokid.rsk.R8A1D50C4DF6401234567897A07ADB23(此为示例。)

其中的R8A1D50C4DF6401234567897A07ADB23将作为appID填写在Android app开发时的RokidManifest.xml文件中。

此处的R8A1D50C4DF6401234567897A07ADB23仅是示例,你看到的字符串会跟它不同。

接下来进入第2个页面:语音交互。

在意图定义框中,写入以下内容。

更多教程,请参见:https://developer.rokid.com/docs

{
	"intents": [
		{
			"intent": "Hello_Developer",
			"slots": [],
			"user_says": [
				"你好"
			]
		},
		{
			"intent": "LAMP_ON",
			"slots": [],
			"user_says": [
				"开灯",
				"把灯打开"
			]
		},
		{
			"intent": "LAMP_OFF",
			"slots": [],
			"user_says": [
				"关灯",
				"把灯关上"
			]
		}
	]
}

接下来进入第3个页面:配置。

在此页进行APK管理。因为我们还没有编写安卓APK,所以此步先跳过。

第4个页面:集成测试。

这一步,要添加用于测试的硬件设备,在这里就是指你用的ROKID语音开发板啦。

操作:点击“添加测试设备”->添加自定义设备,输入设备TypeID和设备ID即可。

你需要2个ID来完成这一步,分别为:

  • 设备TypeID
  • 设备ID

怎么拿到这2个ID呢?我们一个一个来说。

第1个:设备TypeID。 这个是需要你在线申请得到,步骤如下:

  • 打开:https://developer.rokid.com/#/portal
  • 选择右侧“语音接入”。
  • 创建新设备。
  • 填写“设备名称”,
  • 认证文件->创建新文件。
  • 填写认证文件名称认证文件描述
  • 点击“下一步”,此时系统会生成四个很长的字符串。把这4个字符串复制保存下来,一会将要用到。
  • 我们此时只需要四个中的一个,设备TypeID。例如:48005AB1237E4E768612345670F346CD

第2个:设备ID。 这个就是你的开发板的序列号,按下面步骤可以得到。

  • 把开发板连接到电脑上。
  • 确保已经安装了adb工具。如果没有,请自行查找教程,安装。
  • 在命令行执行adb devices,确保你能看到一行xxxxx device。(如果把开发板从电脑上拔出再执行这个命令时,就看不到这一行了)
  • 在命令行执行adb shell getprop|grep rokid.serialno,会看到[ro.sys.rokid.serialno]: [0201021702012345]。方括号中的那一串数字0201021702012345就是我们要找的设备ID

好,现在我们得到了:

  • 设备TypeID:48005AB1237E4E768612345670F346CD
  • 设备ID:0201021702012345

好,第4步你应该可以顺利完成了。

第5、6个页面:发布;隐私与合规

如果只是自己使用,这2个页面可以忽略,不用填写。


5. 开发板的配置

  • 连接开发板到电脑。
  • adb shell,进入开发板命令行界面。
  • cd /system/etc
  • vi openvoice_profile.json 此文件的内容是这样的:
{
    "host": "apigwws.open.rokid.com",
    "event_req_host": "apigwrest.open.rokid.com",
    "port": "443",
    "branch": "/api",
    "key": "这里填写KEY字符串,将用于认证设备",
    "device_type_id": "这里填写设备TypeID字符串",
    "device_id": "这里填写此测试设备的ID",
    "secret": "这里填写Secret字符串,将用于认证设备",
    "api_version":"1",
    "lang": "zh",
    "codec": "opu",
    "vad_mode": "cloud",
    "vend_timeout": 500
}

把里面有中文说明的4处引号中的内容,使用上文中找到的“四个很长的字符串”替换。

  • reboot(重启开发板)

这样开发板就准备好了。

6. Android 本地app

打开Android Studio,新建一个APP。

6.1 添加RokidManifest.xml文件

app/src/main/下面新建一个文件夹叫assets,然后在里面新建一个RokidManifest.xml文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:rokid="http:www.rokid-inc.com" rokid:version="1.0.0">
    <application rokid:isSystem="false">
        <scene rokid:activity="com.rokid.lampcontrol.MainActivity"
            rokid:appID="R8A1D50C4DF6401234567897A07ADB23" />
    </application>
</manifest>

注意,有2个地方要根据你自己的情况修改:

  1. com.rokid.lampcontrol.MainActivity修改为你的Activity的包名
  2. R8A1D50C4DF6401234567897A07ADB23修改为你的appID。

7. GPIO的控制代码

8. 测试

9. 小结


(medea) #2

沙发


如果获取麦克风阵列唤醒和拾音技术?
(chao.xuc) #3

前排,坐等更新。


(illxi) #4

赞!期待后面SPI和I2C。


(智能阿才) #5

什么时候发出来啊,好期待


(eddieccq) #6

期待出后面的信息。目前不太明白的是,刷入新系统后,若琪还是原来的若琪莫?语音可以控制系统IC的电平莫?
想了一下,这种操作要产品化的话,还是有问题的吧。合理的做法,应该还是做成类似智能插排那样的,两者通过WIFI连接进行控制。


(yigangfang) #7

感谢您对Rokid开发套件的兴趣与支持!

目前的开发套件的镜像系统,比若琪产品多了一些“可定制”的功能,比如控制输出电平,通过i2c, i2s, spi, uart等协议与外部设备通信等,方便第三方开发者定制自己的产品。当然套件相比若琪产品也少了一些出厂时默认安装的APP。

这里的示例主要目的是向开发者们展示开发套件的能力,演示基本功能的使用方法。
用最优方案来解决语音控制台灯这个问题,不是本文的主要目的。

谢谢。欢迎探讨。


(mzjlswatt) #8

后续再何处?如何控制输出低电平??


(yigangfang) #9

因准备拉斯维加斯的CES展会,将在1月15号后继续更新。抱歉。


(mzjlswatt) #10

OK…非常感谢,等待你后续的好消息…


(mzjlswatt) #11

请问什么时候继续未完的部分?


(yigangfang) #12

谢谢关注。昨天重烧了系统,准备更新


(mzjlswatt) #13

恭候多时了…期待你的续集… 幸苦啦…


(大发) #14

静静等待中 :massage_man:t2:


(Iris_pml) #15

期待,静静等待更新中~


(咪酱酱) #16

期待,静静等更新中~


(mzjlswatt) #17

一个多月过去了,有啥进展不?


(yigangfang) #18

更新了:slight_smile:


(大发) #19

更新啦 @Iris_pml @ca40d18980fb801295f2a4c497003b6


(475020060) #20

请问更新的代码在哪里呢?