ESP8266_26基于blinker平台接入百度小度音箱

既然感兴趣的人挺多,那我就写一下。

首先是智能音箱的选择,百度、小米、天猫都在发力,看眼缘。而且这个东西其实还是挺有意思的,因为我媳妇很喜欢这个东西,现在听歌基本都靠吼:小度小度!所以,我只能趁着我媳妇外出的时候,偷偷研究,否则会打扰她听歌。

然后说方案,有人还留言说:希望我开源~~~

开源就夸张了,本来我就是跑了个例程,上升不到开源的高度。我使用的是blinker他们家的方案,上一节已经说过了。用法还算简单,但是他们家目前貌似发力点集中在arduino的开发方式上,eclipse下编程的代码也有,但是相对提供的支持少很多,原因不明。

但这并不表示blinker有多强大,因为它能可以接入百度?原因很简单,百度,或者说小度是希望外部设备接入的,毕竟都想布局物联网的市场。百度搜索:小度技能开放平台,结果如图:

你搜索小爱、或者天猫开放平台,里面都是教你如何接入它们的平台。所以,blinker是针对这几家的开放平台,根据官方的要求写了一个相对比较好用的接入的函数库。

虽然我是一个爱思考的工程师,也花了半天时间啃官方的文档。但我还是放弃了,太累人,我懒………..

所以,使用现成的方案吧,你要先找到blinker提供的函数库文件。个人建议你先逛一下他们的开发文档,起码有个大致的印象。实在找不到,再看我的程序。

第三,我使用的是基于安信可的一体化开发环境,最新版,RTOS方式。如果没有看懂前面系列教程的童鞋,建议你看着玩就行了,想看懂是很难的。

最新版的安信可一体化开发工具,相比之前的版本,有一个重要的变化:增加了menuconfig。

很多人第一次见到这个东西,我也是刚接触一段时间。简单来说,官方的SDK中提供了大量的接口驱动,如果所有驱动都编译进程序里,一个是太费时间(虽然现在也很慢),另外就是太占flash。而通过menuconfig,我们可以选择添加我们需要的驱动,避免资源浪费。界面如下:

怎么用?

按按上下左右,空格、回车,多试几遍就行了。跟电脑开机时候的BIOS页面很像。前期,建议多看“Component config”里面的内容,有基础的,敲几遍就有感觉了。敲回车,进入后页面如下:

选中blinker,再回车。进入之后,主要是下面这两项:

“BLINKER_WIFI”里面填入你家的wifi账号和密码,模块对应的密钥,同时设置wifi模式为默认模式。下面三个分别是:天猫、小度、小爱。用哪个选哪个,我这里选小度,模式选OUT_LET模式。

wifi的账号、密码,已经模块密钥都在这里填写,程序里就不用再写了。

源码打开后,如果你看了我的程序,会发现里面有两部分源码:一部分是小度的,一部分是小爱的。没错,小爱的是官方提供的,小度是我在小爱基础上改出来的。主要看下面:

前面的,和上一节一样,没必要再看了。但是需要你有上一节的基础,就是说上一节的内容,最好是跑过一遍。这一节主要看这两个,这里起作用的主要是这两个函数,一个是:

blinker_dueros_power_state_init(dueros_power_state);

从函数名字可以大致猜出来它的功能:基于小度的开关类设备状态初始化,括号里面是状态发生变化时对应的回调函数。代码如下:

void dueros_power_state(const char *state)
{
    static int state_flag = 0;
    if(state_flag == 0)
    {
        //GPIO12拉高,GPIO13拉低
        gpio_output_set(BIT12, BIT13, BIT12|BIT13, 0);
        state_flag = 1;
    }
    else
    {
        gpio_output_set(BIT13, BIT12, BIT12|BIT13, 0);
        state_flag = 0;
    }
    BLINKER_LOG(TAG, "need set power state: %s", state);
    blinker_dueros_config_t config = {
.    power_state = state,
    };
    if (strcmp("True", state) == 0) wsState = 1;
    else wsState = 0;
    blinker_dueros_print(&config);
}

GPIO操作的那部分是我加的,看到这里该懂的就懂了。说白了就是,收到语音控制开关状态时,执行该函数。

另一个函数是和设备查询相关的,简单来说,小度要判断你是什么东西!

另外,小度APP里面即便绑定了blinker的账号,有时候设备也刷新不出来,这时候需要跟小度说:小度小度,查找设备(也可能是:添加设备,我记不清了)!

我这里只是简单的把思路跟大家说一下,具体操作还是比较繁琐的,需要细心!例如,我最开始绑定账号后,设备刷新不出来,是在小度APP里找到的使用说明、评论,才知道要语音要求它添加设备。

最后,就是你们前几天看到的效果,视频如下:

最后,程序放出来,你们可以测试一下,但是密钥信息不要用我的,改成你们自己的。

完整工程源码,请关注公众号:单片机爱好者,回复关键字:ESP8266,即可获取。

《ESP8266_26基于blinker平台接入百度小度音箱》有8条评论

  1. 牛逼!网上很多都是接入小爱同学,直接用官方的例程,连改都懒得改。你这里直接移植到了小度下面!

    回复

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据