查看: 377|回复: 0

[项目] 【掌控小度】小度智能音箱与掌控板“本地物联”

[复制链接]



一、基本信息
作品名称
小度智能音箱与掌控板“本地物联”
作者姓名
宋秀双
作者单位
河北省涿鹿县涿鹿中学
教材名称
《万物智控》
教材类型
自编教材
教材简介
高中信息技术人工智能、编程设计
执教年级
高二
课时长度
2课时
涉及器材
小度智能音箱、掌控板
涉及软件
小度技能开放平台、Mind+软件、Siot物联网
文件清单
教学设计、教学课件、演示视频、任务单、评价表、配套代码

二、作品内容
小度智能音箱与掌控板“本地物联”

【硬件搭建】
掌控板连接扩展板,电磁继电器接在P1口。小度智能音箱按使用说明配置好。注意:登录小度音箱的帐号与登录小度音箱开发平台的帐号为同一个,进行调试。
【作品功能】
实现通过小度智能音箱控制台灯(220V)的亮与灭。结合“【掌控小度】开启小度智能音箱与掌控板“智控”之旅”课堂,学习本地物联网Siot的使用。



教学内容
本课主要内容是设计小度智能音箱控制掌控板开关台灯,目的是让学生通过小度音箱开发平台对Python编程实现简单应用,通过Mind+实现WIFI连接,本地物联网Siot使用,电磁继电器的使用。
【学情分析】
高二年级学生,对编程及网络使用已经有一定的基础,先通过TinyWebDB微数据库进行小度音箱与控掌控板简单连接,逐步过渡到使用MQTT物理网进行连接,先控制彩灯,再到电机、舵机、电磁继电器……,从此开启智控万物。
让学生亲身体验人工智能技术的应用给我们的生活带来的方便,并尽量通过讨论、实践与想象设计,发挥学生的能动性,使全体学生都能自主探索并获取新知。
【教学目标与要求】
1. 知识与技能
  学习小度智能音箱开放平台使用,Python编程简单应用,本地物联网Siot使用,Mind+实现WIFI连接。
2. 过程与方法
(1)通过视频展示、亲自实践、创意设计等环节,提高对语音智能控制及其应用的认识;
(2)通过对实验器材LED灯、电机、舵机、电磁继电器等的实践,了解本地物联网Siot使用,并设计相关的语音人工智能控制实际应用。

3. 情感态度价值观
(1)在体验与实践相结合的过程中感受语音人工智能控制的应用,产生并保持学习的兴趣;
(2)通过分组讨论、小组合作等方式开展多种形式的团队合作,培养学生的动手能力、解决实际问题的能力,提高团队协作能力;
(3)通过对创意设计的交流与展示,培养学生的创新能力与语言表达能力;
(4)能辩证地认识语音人工智能控制对社会发展、科技进步和日常生活产生的影响。

【教学重点与难点】
重点:小度智能音箱控制掌控板的设计与应用。
难点:本地物联网Siot的原理及使用方法

【教学方法与手段】
体验式教学。通过制作一个小度智能音箱控制掌控板来了解其语音控制技术,对本地物联网Siot进行全面的剖析。

【教学准备】
1、准备百度帐号:https://dueros.baidu.com/open,小度智能音箱开放平台(DuerOS智能设备开放平台)。
2、准备本地物联网Siot安装程序
3、小度音箱、掌控板、扩展板、电磁继电器、旧台灯(220V)
【教学过程】
一、演示小度智能控制台灯(课前)
教师活动:演示小度智能控制台灯220V,通过本地物联网Siot

因暂时未完成内网到外网的透传,所以没有视频。


学生活动:思考、讨论。
二、本地物联网Siot——工作原理讲解

SIoT是一个针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困扰。
与Mind+结合可以让小学生到高中生都可以轻松上手物联网。
下载链接版本V1.2:
学生活动:参考例程:【SIoT实例:智慧农场】基于mind+掌控板实时模式,了解本地物联网Siot的应用。

三、学思践悟——走近小度智能音箱
教师活动:指导学生登陆开放平台


学生活动:复习自定义技能中配置服务,利用“百度云CFC”自定义“空函数”
1、打开本地物联网Siot服务。
30.jpg
31.jpg

2、查看本地ip地址,新建主题及端口映射用。
32.jpg
3、新建主题
登陆192.168.31.142:8080
33.jpg
34.jpg
35.jpg
36.jpg
37.jpg
38.jpg
对代码进行主题修改
3、打开路由端口转发,内网透传,将本地端口1883映射到外网。

42.jpg
43.jpg

4、发现问题
无线路由(192.168.1.2)还有上一层,中国移动智能网关(192.168.1.1),这个网关没有透传能力,并且他把我的IP地址NAT到了他的大局域网中。
49.jpg

启发同学们思考、讨论,是否有办法,将192.168.31.142:1883映射到外网。
已解决的是通过无线路由的端口设置已,将192.168.31.142的1883端口映射到了192.168.1.2上1883端口。但再往上如何处理。
同学们利用已有知识,及通过网上查询,整理解决办法,并不断尝试。


以下代码为Python2.7

[Python] 纯文本查看 复制代码
#!/usr/bin/env python2
# -*- encoding=utf-8 -*-


import sys
from dueros.Bot import Bot
from dueros.directive.Display.RenderTemplate import RenderTemplate
from dueros.directive.Display.template.BodyTemplate1 import BodyTemplate1
import dueros.paho.mqtt.client as mqtt
reload(sys)
sys.setdefaultencoding('utf8')

class Test(Bot):

    def __init__(self, request_data):
        super(Test, self).__init__(request_data)
        self.add_launch_handler(self.launch_request)
        self.add_session_ended_handler(self.ended_request)

    def launch_request(self):
        """
        打开调用名
        """

        self.wait_answer()
        template = BodyTemplate1()
        template.set_title('控制台灯')
        template.set_plain_text_content('为您打开台灯')
        template.set_background_image('https://mc.dfrobot.com.cn/data/attachment/forum/202004/03/220658jy93iiy9b89p9a8i.jpg')
        template.set_token('0c71de96-15d2-4e79-b97e-e52cec25c254')
        renderTemplate = RenderTemplate(template)
        on_publish("xiaodu/light", "1", 0)#0代表保存在服务器上
        return {
            'directives': [renderTemplate],
            'outputSpeech': r'为您打开台灯'
        }
    def ended_request(self):
        """
        关闭调用名
        """
        self.wait_answer()
        template = BodyTemplate1()
        template.set_title('控制台灯')
        template.set_plain_text_content('为您关闭台灯')
        template.set_background_image('https://mc.dfrobot.com.cn/data/attachment/forum/202004/03/220658jy93iiy9b89p9a8i.jpg')
        template.set_token('0c71de96-15d2-4e79-b97e-e52cec25c254')
        renderTemplate = RenderTemplate(template)
        on_publish("xiaodu/light", "0", 0)#0代表保存在服务器上
        return {
            'directives': [renderTemplate],
            'outputSpeech': r'为您关闭台灯'
        }    
   

MQTTHOST = "***.***.***.***"
MQTTPORT = 1883
mqttClient = mqtt.Client()
  
  
# 连接MQTT服务器
def on_mqtt_connect():
    mqttClient.connect(MQTTHOST, MQTTPORT, 60)
    mqttClient.loop_start()
  
  
# publish 消息
def on_publish(topic, payload, qos):
    mqttClient.publish(topic, payload, qos)
    #print(topic)
  
# 消息处理函数
def on_message_come(lient, userdata, msg):
  
    print(msg.topic + " " + ":" + str(msg.payload))
  
  
# subscribe 消息
def on_subscribe():
    mqttClient.subscribe("xiaodu/light", 1)
    mqttClient.on_message = on_message_come # 消息到来处理函数

def handler(event, context):
    on_mqtt_connect()
    #on_publish("12IZ3JpWR", "Hello MQTT!", 0)#0代表保存在服务器上
    #on_subscribe()
    bot = Test(event)
    result = bot.run()
    return result


四、自学探究
自学本地[url=]物联网Siot使用:[/url]https://mc.dfrobot.com.cn/thread-281102-1-1.html
引导学习不断测试,发现问题。是否能利用本地物联网订阅功能,触发小度响应。
五、Mind+程序设计
1、Mind+连接Easy IOT物联网
50.jpg

六、进行测试
1、模拟测试
2、真机测试

七、发布上线

八、总结提升——憧憬未来
能使用物联网,就可以开启智联万物了。同学们可以结合之前的学习内容,说说我们能不能继续完善,解决这节课存在的问题,引导学生说出下次我们要进行的内容,智联万物——电视机的使用。



49.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail