先看效果
用ESP8266 NodeMCU与BlinkerAPP接入小爱同学实现语音识别的垃圾分类智能垃圾桶
具体操作可以去B站参考这个 BV1ak4y1d7mp 视频
设备
需要下载点灯·Blinker app ,小爱同学,米家(小度也可以,这里只是以小爱做参考)
SG90舵机2
ESP8266 NodeMCU1
接线
SG90 | Node MCU |
---|---|
VCC(红) | 3.3V |
GND(棕) | GND |
PWM(橙) | D1,D2 |
代码
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //Blinker小爱同学接口函数-light-灯
#define BLINKER_PRINT Serial //串口协议库
#include <Blinker.h> //APP官方库
#include <Servo.h> //舵机库
Servo myservo1; //定义舵机1
Servo myservo2; //定义舵机2
char auth[] = "修改"; //Blinker里面你设备的密钥
char ssid[] = "修改"; //WIFI名称
char pswd[] = "修改"; //WIFI密码
//定义舵机管脚
int ms1=5; //舵机1-D1-5
int ms2=4; //舵机2-D2-4
BlinkerButton Button1("btn-3an"); //Blinker里面你控件的数据键名
BlinkerButton Button2("btn-h9r"); //Blinker里面你控件的数据键名
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("可回收垃圾桶盖开关");
myservo1.write(90);
delay(3000);
myservo1.write(0);
}
void button2_callback(const String & state)
{
BLINKER_LOG("其他垃圾桶盖开关");
myservo2.write(90);
delay(3000);
myservo2.write(180);
}
//用户自定义电源类操作的回调函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//用户自定义模式设置的回调函数
void miotMode(uint8_t mode)
{
BLINKER_LOG("need set mode: ", mode);
if (mode == BLINKER_CMD_MIOT_DAY) { //日光模式
BLINKER_LOG("语音控制操作可回收垃圾桶盖");
myservo1.write(90);
delay(3000);
myservo1.write(0);
delay(30);
}
else if (mode == BLINKER_CMD_MIOT_NIGHT) { //夜光模式
BLINKER_LOG("语音控制操作其他垃圾桶盖");
myservo2.write(90);
delay(3000);
myservo2.write(180);
delay(30);
}
BlinkerMIOT.mode(mode);
BlinkerMIOT.print();
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
// 初始化舵机
myservo1.attach(ms1);
myservo2.attach(ms2);
myservo1.write(0);
myservo2.write(180);
delay(100);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
BlinkerMIOT.attachPowerState(miotPowerState); //注册小爱电源类回调函数
BlinkerMIOT.attachMode(miotMode); //注册小爱模式的回调函数
Button1.attach(button1_callback); //注册按键1的回调函数
Button2.attach(button2_callback); //注册按键2的回调函数
delay(100);
}
void loop() {
Blinker.run();
}
手机上设置
blinker
小爱同学
小结
之前做的ld3320语音识别模块的,识别率不高,用这个只要十来块钱就可以实现。
如有做的不好的地方,可以一起交流。