查看: 3852|回复: 10

[原创] 【Cortana智能你的生活】Cortana控制窗帘方法参考

[复制链接]

签到天数: 49 天

连续签到: 1 天

[LV.5]常住居民I

16

主题

221

积分

6

支持

发表于 2017-7-23 17:12:26 | 显示全部楼层 |阅读模式

马上注册,享受积分奖励和更多功能,让您轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 老李拉面馆 于 2017-7-24 13:26 编辑

这个标题出来的时候,想必大家已经有一些想法了。好比说可以上树莓派啊,搭载win10IoT,语音直接控制岂不是美滋滋。或者通过蓝牙,给单片机弄个HC-05,连着串口也是可以的!而我们今天讨论的是,通过树莓派/PC的串口给单片机发送消息,来控制电机动作。
如图是控制顺序
1.png
我们从上往下,一步步进行。
先讲PC串口发送消息给Arduino或者其他单片机,
这里我们用Arduino UNO来测试
先给Arduino下载这样一段程序
[mw_shl_code=c,true]String comdata="";
void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  while (Serial.available() > 0)  
    {
        comdata += char(Serial.read());
        delay(2);
    }
    if (comdata.length() > 0)
    {
        Serial.print("Received Data:");
        Serial.println(comdata);
        comdata = "";
    }
}[/mw_shl_code]
效果如图   2.png
使我们看的到串口发送了什么消息
接下来,我们打开微软的官方例程,SerialPort
https://github.com/ms-iot/samples/tree/develop/SerialUART/CS
9.png
我们先了解如何调用小娜(用前台就够了)
参考这篇教程
http://www.cnblogs.com/Aran-Wang/p/4816313.html
有什么不懂可以先照抄,Run一遍,看看操作就懂了。
我将他的参数全部删掉了,只留了页面导航;在判断cmdName时,将propertie赋值,
然后重写MainPage导航事件,读取App.xaml.cs传过来的propertie。根据不同的propertie值,串口发送不同的消息。
具体流程如图:
13.png

再接着,我们看,拿到了propertie值,我们怎么发送串口消息
12.png
代码写的比较烂,各位看的懂就好
https://github.com/SylvesterLi/CortanaControlMotor
然后我们部署一下,就可以了。
测试程序是否正常
(如果部署VoiceCommandDictionary.xml失败了,会在App.xmal.cs里报错,这时候你需要检查你的VCD文件是否写对了)
10.png
如果你有什么不懂,可以将指针移在函数上,查看相关注释。
像这样
3.png

4.png

5.png

7.png

8.png

6.png
接着我们来写Arduino的程序
[mw_shl_code=c,true]String rx_Buffer;
void setup()
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  analogWrite(5,0);
  analogWrite(6,0);
  Serial.begin(9600);
}

void loop()
{
  while(Serial.available()>0)
  {
    rx_Buffer=Serial.readString();
    if(rx_Buffer=="OpenDoor")
    {
      //开窗
      analogWrite(5,0);
            analogWrite(6,80);
      MotoStop();
      Serial.println("窗帘打开咯");
    }
    else if(rx_Buffer=="ShutDoor")
    {
      analogWrite(5,80);
            analogWrite(6,0);
      MotoStop();
      Serial.println("窗帘关上咯");
    }
    else if(rx_Buffer=="MSGreat")
    {
      MotoStop();
      Serial.print("微软大法好!");
    }
    else
    {
      Serial.print("这是啥?");
    }
   
    Serial.println("接收到了:");
    Serial.print(rx_Buffer);
    delay(1000);
  }
}
void MotoStop()
{
    delay(1000);
delay(500);
analogWrite(5,0);
    analogWrite(6,0);
}[/mw_shl_code]
下载下去,联调测试一下。
L298N的连线如图
11.png
最终效果,我们还是老样子B站视频见
http://www.bilibili.com/video/av12499202/

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

38

主题

811

积分

1

支持

发表于 2017-7-23 17:30:56 | 显示全部楼层
顶一个。供电是个硬伤
[你知道吗]:

签到天数: 49 天

连续签到: 1 天

[LV.5]常住居民I

16

主题

221

积分

6

支持

 楼主| 发表于 2017-7-23 18:08:58 | 显示全部楼层
analyzer 发表于 2017-7-23 17:30
顶一个。供电是个硬伤

供电不是硬伤啊,其实部分小电机5V也可以动,只是电机转得慢,可以试试嘛
[你知道吗]:

签到天数: 1973 天

连续签到: 34 天

[LV.Master]伴坛终老

284

主题

2962

积分

458

支持

6周年-资深元老会员

发表于 2017-7-23 19:53:14 | 显示全部楼层
不是UWP已经无法唤起了吧·········EXE全部不能打开

签到天数: 49 天

连续签到: 1 天

[LV.5]常住居民I

16

主题

221

积分

6

支持

 楼主| 发表于 2017-7-23 23:43:34 来自手机 | 显示全部楼层
々殇£月¢ 发表于 2017-7-23 19:53
不是UWP已经无法唤起了吧·········EXE全部不能打开

你说的是树莓派吗?

签到天数: 116 天

连续签到: 2 天

[LV.6]常住居民II

49

主题

611

积分

0

支持

发表于 2017-7-24 11:00:13 来自手机 | 显示全部楼层
尼玛  看不懂

来自:Lumia 950 XL Win10旗舰-智机社区客户端
[你知道吗]:

签到天数: 49 天

连续签到: 1 天

[LV.5]常住居民I

16

主题

221

积分

6

支持

 楼主| 发表于 2017-7-25 15:07:23 | 显示全部楼层

那就看视频嘿嘿

签到天数: 89 天

连续签到: 1 天

[LV.6]常住居民II

40

主题

420

积分

13

支持

开发之神

Rank: 6Rank: 6

积分
420

微软MVP

发表于 2017-7-27 09:25:28 | 显示全部楼层
赞楼主,加油!
[你知道吗]:

签到天数: 413 天

连续签到: 1 天

[LV.9]以坛为家II

16

主题

715

积分

0

支持

6周年-资深元老会员

发表于 2017-7-27 09:29:58 | 显示全部楼层
会编程的就是帅~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

        

网站地图| 小黑屋|京ICP证150706号|京B2-20160045| 京公网安备11010802018258号

Powered by Discuz! X3.4 / Copyright 2010-2017 © 智机网 WFUN.COM Inc. All rights reserved.

快速回复 返回顶部 返回列表