开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Wifi- nodeMCU 之配置编译下载 alios-things 到 esp8266 实现天猫精灵语音控制】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11214
Wifi- nodeMCU 之配置编译下载 alios-things 到 esp8266 实现天猫精灵语音控制
演示
如何接入平台,首先注册账号,登录如下网页:
www. aligenie.com
我已经注册过账号,可以直接点立即开始。如果没有注册过,就需要点击右上角的注册,使用淘宝账号即可注册。登录完成之后,就可以开始创建自己的产品,
步骤如下:
控制台->产品开发->添加新产品->家装灯饰-灯->
品牌:任选一个
产品名称:智能灯
产吕型号:顶灯 001
接入方式:直接接入
通信协议: wifi
数据格式:标准
登录完成之后直接选择首页-控制台 -iot 接入平台,然后选择控制台。进入之后,可以开始添加产品。选择家装灯源,选择灯,点击下一步。
品牌如果没有确定的第三方品牌,就随便选一个,名字也可以自定义。产品型号输入顶灯 001。通信协议选择 WiFi,点击标准,点击提交即可。
创建完成之后,主要有 4 条信息:
分别是产品密钥,三元组。产品密钥也就是标识符。如果要查看三元组,就需要进入到调试设备,调试设备当中,有三元组点击查看,一般会给普通用户提供 10 个设备,可以使用这 10 个设备进行测试:
将 3 个信息,产品 ID,设备,Mir 和设备名粘贴到后面需要修改的代码中:
example/ linkkitapp/ linkkit_ example_ _solo. C
#define PRODUCT KEY"a1WnjjL.. .”
#define PRODUCT SECRET"04omx06. . .”
#define DEVICE NAME"43TGkfp. . ."
#define DEVICE SECRET'qR13N2I. . .
文件开头加入两个头文件:
#include "espressif/esp common.h"
#include "gpio.h"
要修改的第一个文件如下:
源代码中找到 example,linkkitapp,solo.c,首先需要在开头加入头文件,因为要操作 8266,所以需要将 8266 相关的头文件加入:
#include "espressif/esp common.h"
#include "gpio.h"
接下来在三元组当中加上产品密钥。直接在网页中复制产品 ID,产品 ID 对应的是产品 key,第二个是 device secret,第三个设备名也相同,接下来产品密钥需要回到开头复制标识符,将修改进行保存,三元组就修改完毕。相当于是产品设备的唯一标识,否则不能够唯一的操作设备。
更改完成之后,还需要在回调函数当中进行相应的操作。在代码中进行搜索,搜索完成之后粘贴如下代码:
static int user_ property_ set_ event_ handler(const int devid, const char *request, const int
request_ len)
{
intres= 0;
cJSON *root,* prop;
user_ example_ _ctx_ t *user_ example_ ctx = user_ example_ get_ _ctx();
root = cJSON_ Parse(request);
if(root == NULL) return res;
prop = cJSON_ _GetObjectltem(root,' powerstate");
if(prop != NULL && cISON_ lsNumber(prop))
{
if(prop->valueint== 1)
{
GPIO_ OUTPUT(GPIO_ Pin_ _2, 0);//D4
}
else if
{
(prop->valueint == 0)
GPIO_ OUTPUT(GPIO_ Pin_ 2, 1); //D4
}
else
}
res = IOT_ Linkkit_ Report(user_ example_ _ctx->master_ devid, ITM_ MSG_ _POST_ PROPERTY,
(unsigned char *)request, request_ len);
return 0;
}
将代码直接覆盖即可。
此时指定的灯是 D4,D4 对应的是面板灯,此时 D4 的 io 口是 gpio2,需要操作D2 对应的 io 口,就是 gpio4,所以就要将 io 口改为 4,改为 4 表示可以直接控制具体的实际产品,接下来需要修改初始化代码,初始化代码是 LinkkitAPP 中的entry,也就是在启动函数加初始化代码。
首先需要定义连接 WiFi 的基本账号信息:
netmgr_ ap_ config_ t config = {{"ChinaNet- fTVU"}, {""}, {"hgd4de5a"};
接下来添加初始化代码。加入到网络初始化后:
netmgr_ set_ ap_ config (&config) ;
//配置 wifi 网
netmgr_ start (false) ;
//配置 wifi 网相关
linkkit_ check_ awss() ;
//自动配网,代码自己添加
前面两句是配置 WiFi 网络,后面的代码需要实现,所有操作在官方文档当中都有讲解,将函数加入上去,就可以完成自动配网。接下来重新生成,编译一次。此时出现错误,系统提示 165 行错误,将多余的 else 删除即可。接下来将程序下载。复制代码之后,进入目录:
OUT-LINK -banary-bin
将文件复制在文件夹中。回到如下目录。:
Platform-MCU-ESP 8266-BSP
中。
将以下文件复制在文件夹中:
接下来将下载工具打开,打开下载工具之后,还需要配置。因为不只有一个镜像有许多镜像需要将地址修改。
首先修改 0 地址:
0x0000 地址: boot_ v1. 7. Bin
其次,修改 ESP:
0x3FC000 地址: esp_ init_ data_ default. Bin
最后修改 BLACK:
0x3FE000 地址: blank. Bin
然后修改地址。第一个地址不用修改,第 2 个地址是 3FC,之后是 3FE,最后是01。效果如下:
要注意在开头打勾,第一次下载完成之后,第二次只需要下载最后一个即可。
配置完成之后,将设备连接:
点击 Flash。出现二维码,
进行烧录:
烧录完成之后,打开串口调试助手,查看输出信息,串口调试助手需要记住波特率是最大波特率,此时无任何信息输出:
复位之后,进行扫描热点。连接完成之后。用户说出如下词汇:
“天猫精灵”,“搜索设备”,效果如下:
用户说出如下词汇:
“天猫精灵”,“开灯”,效果如下:
此时没有现象是因为没有连接继电器。连接继电器之后,用户说出如下词汇:
“天猫精灵”,“开灯”,效果如下:
用户说出如下词汇:
“天猫精灵”,“关灯”,效果如下:
此时发现引脚连接相反,更改代码如下:
if (prop != NULL && cJSON_ I sNumber (prop) )
{
if (prop->valueint == 1)
{
GPIO_ OUTPUT (GPIO_ Pin_ 4,1) ; //D4
}else if (prop->valueint == 0)
{
GPIO_ OUTPUT (GPIO_ Pin_ 4,0) ;
/ /D4
}
}
代码更改完成,连接到具体硬件上查看效果,连接方法与之前相同。连接方法如下:
插头夹了几根线:
以下是开发板:
用户说出如下词汇:
“天猫精灵”,“开灯”,效果如下:
用户说出如下词汇:
“天猫精灵”,“关灯”,效果如下:
以上是通过 8266 完成从普通的 LED 灯到家中的实际灯泡,再从本地云端到第三方阿里云云端。将来也可以接百度、腾讯等第三方,原理相同。
以上是 8266 接入天猫精灵的内容讲解。