项目说明:
首先你需要一台电脑、一块esp32或esp8266开发板。通过手机上的小爱同学进行语音控制开发板上的板载灯,实现一个基础的语音控制。由于小爱同学不能直接对开发板进行控制所以在这里我使用点灯平台进行间接控制。
环境搭建:
本项目使用Arduino IDE开发,具体环境搭建可自行百度。
小爱同学、米家app(非小米、红米手机也可直接找安装包下载)
点灯app
在点灯esp32官网上有Arduino IDE的安装包、esp32、esp8266的开发包、点灯库以及点灯app,同时本文也是对照电灯官网上的开发文档来写的。
软件设置
在点灯app上添加独立设备
获取密钥
添加按钮
这里组件的数据键名与之后代码里组件的字符串一一对应
米家与点灯关联
点击米家->我的->连接其他平台->添加点灯科技
这样就可以使用小爱同学控制esp32了。
代码部分
友情提示:乐鑫正在用esp32C2逐步替代esp8266,不建议大家继续使用esp8266进行产品开发。
blinker lib 0.3.9开始不再对esp8266做兼容性测试。
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //根据您定义的设备品类选择不同的参数用于配置Blinker
#define LED_BUILTIN 2 //板载灯引脚为GPIO2
#include <Blinker.h>
char auth[] = "**********"; //点灯app中获取到的密钥
char ssid[] = "eh"; //您的WiFi热点名称
char pswd[] = "88888888"; //您的WiFi密码
BlinkerButton Button1("btn-abc"); // 新建组件对象,这个组件是按钮
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//对板载灯进行取反操作
}
//用户自定义电源类操作的回调函数:这里是当小爱同学向设备发起控制, 设备端需要有对应控制处理函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);//调试信息
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, HIGH);//点亮
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, LOW);//熄灭
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
void setup() {
Serial.begin(9600);
Serial.println("hello");//串口
Blinker.begin(auth, ssid, pswd); //配置WiFi
pinMode(LED_BUILTIN, OUTPUT);//设置io口为输出模式
digitalWrite(LED_BUILTIN, HIGH);//默认点亮
Button1.attach(button1_callback);//注册按键回调函数
BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数,当有设备收到APP发来的数据时会调用对应的回调函数
}
void loop() {
Blinker.run();//运行点灯
}
结尾
可以看出点灯库的使用,首先新建组件,然后创建回调函数,所有操作都在回调函数当中实现,最后注册回调函数。