lidunyong 发表于 2019-12-8 10:40:40

【掌控2.0测试】利用SIoT实现远程语音开关灯

本帖最后由 lidunyong 于 2019-12-8 10:42 编辑

    2.0版本到手已经有几天了,其实我第第一时间就开箱了。最令人感兴趣的无非就是它的语音识别功能。一开始我就想把语音识别功能与物联网结合起来,但经过测试后发现无法与MQTT一起使用。经过几天的琢磨,发现另一种途径可以与MQTT一起使用。那就是通过MQTT的WebAPI功能,然后通过mPython的“网络”的扩展模块来实现消息的发送,通过SIoT架起两块掌控板之间的桥梁。下面我就与大家来分享一下。
一、功能描述

首先来张对比照片:



    主要是通过2.0板上的麦克风传感器将我们的声音通过网络进行识别,然后返回识别结果,再根据结果进行比较后向SIoT服务器发送对应消息。如有“开”字,就发送“open"消息,有”关“字就发送”close"消息。而当1.0板子接收到“open”消息时,则点亮三个RGB灯;相反,接收到“close"则关闭RGB灯。

二、准备工作

硬件:
掌控板2.0*1
掌控板1.0*1
供电可直接数据线接电脑,或用其他扩展板供电(我的是一块用百灵鸽,一块用micro:bit掌控I/O扩展板)



软件:
1、mPython
下载地址:https://www.labplus.cn/software
2、SIoT1.2
下载地址:http://mindplus.dfrobot.com.cn/siot


三、功能实现


1、打开SIoT服务器,并始终打开着。



网页端访问:http://192.168.8.69:8080



2、规划协议



3、程序编写(利用mPython软件)


控制端(掌控板2.0):

    控制端要实现语音识别以及消息的发送,再加上测试过程中发现语音识别与MQTT不能同时使用,所以只能利用网络功能。因此要添加”音频“、”网络“两个应用扩展。

首先,添加应用扩展



其次,编写程序

因语音识别与网络功能都需要连接WIFI。因此首先就要连接WIFI





进行语音识别。掌控板不能时时刻刻在语音识别,因此要标记何时开始语音识别,我是用按A键,同时亮绿灯开始识别,红灯亮识别结束。



然后进行语音识别结果的比较,再通过网络的GET方式进行发送消息。



那这个请求的网址是参考SIoT的WebAPI功能的。
参考:https://siot.readthedocs.io/zh_CN/latest/advanced/03_webapi.html



参考这些之后,完成程序如下:



完整的控制端(2.0)程序


最后将程序刷入到掌控板2.0上。




受控端(掌控板1.0):

    受控端没有语音识别功能,所以不会与MQTT冲突。那就可以通过MQTT去订阅消息,从而实现对应的执行。

首先就是添加MQTT应用扩展。




根据协议设置相关参数:




根据接收到的消息进行对应地执行



注:同一项目下可以有多个设备。

完整的受控端(1.0)程序


因个人水平有限,在摸索中前进,分享的内容有限,可能有些地方还有待纠正和改进,希望同行不吝赐教。最后附上测试视频。

https://v.youku.com/v_show/id_XNDQ2MDE3MTY0MA==.html?spm=a2h3j.8428770.3416059.1







rzyzzxw 发表于 2019-12-8 13:12:17

高技术含量的教程,赞一赞。{:5_190:}

刁雷 发表于 2019-12-9 08:25:14

掌控版厉害!!!
页: [1]
查看完整版本: 【掌控2.0测试】利用SIoT实现远程语音开关灯