基于ESP8266+Blinker+小爱同学

前言

基于ESP8266模块驱动舵机,使用blinker平台接入小爱同学和软件控制。可以使用blinker实现开关灯效果,以及小爱同学语音控制,同时使用的是Platform环境,这个环境基于vscode


一、准备材料

  1. ESP8266模块
  2. 数据线一根
  3. Arduino开发环境(本次使用的是PlatformIO环境)
  4. 舵机SG90(180°)
  5. Blinker账号
  6. Vscode(非必选项)
  7. 小米手机一部

二、环境配置

  • 本人嫌弃Arduino编译程序比较慢,因此使用的是vscode编译器中的插件Platform环境进行程序编写,感兴趣可以看我如何配置,如果有Arduino编译经验可以直接跳过此章节。

1. 安装PlatformIO插件

在这里插入图片描述
插件安装可能比较慢,因为服务器在国外,插件安装完成后软件会提示重启Vscode,后面打开软件后下面会有个小房子,点一下进入插件主页面。请添加图片描述
进入主页新建一个项目
请添加图片描述
设置工程信息,点击确定后可以请添加图片描述
点击Finish按钮启动工程创建流程后,PlatformIO将自动开始下载项目依赖的框架和工具链(该过程持续时间受网络环境影响,通常需要1-3分钟)。
在这里插入图片描述
点击src展开main.c函数
请添加图片描述

三.编写程序

#include <Servo.h>
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET  // 小爱同学设备类型声明
#include <Blinker.h>

// 设备认证信息
char auth[] = "xxxxxx";   // Blinker密钥
char ssid[] = "xxxxxx";           // WiFi名称
char pswd[] = "xxxxxx";       // WiFi密码

// 硬件对象初始化
Servo myservo;

// Blinker组件定义
BlinkerButton Button1("btn-max");   // 最大值按钮
BlinkerButton Button2("btn-min");   // 最小值按钮
BlinkerButton Button3("btn-set");   // 复位按钮
BlinkerSlider Slider3("ser-num");   // 角度滑块

// 全局变量
int servo_max = 180;    // 最大角度(修正后的合法值)
int servo_min = 0;      // 最小角度
int servo_set = 90;     // 复位角度
int ser_num = 90;       // 当前角度
int time_num = 2000;    // 保留延时参数

//▼▼▼ 小爱同学控制回调函数 ▼▼▼
void miotPowerState(const String & state) {
    BLINKER_LOG("收到小爱同学指令: ", state);
    
    if (state == BLINKER_CMD_ON) {        // 语音"打开"指令
        myservo.write(servo_min);         // 转到最大角度
        BlinkerMIOT.powerState("on");     // 反馈状态
        BlinkerMIOT.print();             // 发送状态
    }
    else if (state == BLINKER_CMD_OFF) { // 语音"关闭"指令
        myservo.write(servo_max);         // 转到最小角度
        BlinkerMIOT.powerState("off");    // 反馈状态
        BlinkerMIOT.print();             // 发送状态
    }
}

//▼▼▼ 按钮回调函数 ▼▼▼
void button1_callback(const String & state) {  // 最大值按钮
    myservo.write(servo_max);
    Blinker.vibrate();  // 手机振动反馈
}

void button2_callback(const String & state) {  // 最小值按钮
    myservo.write(servo_min);
    Blinker.vibrate();
}

void button3_callback(const String & state) {  // 复位按钮
    myservo.write(servo_set);
    Blinker.vibrate();
}

//▼▼▼ 滑块回调函数 ▼▼▼
void slider3_callback(int32_t value) {
    ser_num = value;
    myservo.write(ser_num);
    Blinker.delay(500);  // 防止滑块拖动过快
}

void setup() {
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    
    // 初始化Blinker
    Blinker.begin(auth, ssid, pswd);
    
    // 绑定回调函数
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Slider3.attach(slider3_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);  // 小爱回调绑定
    
    // 初始化舵机
    myservo.attach(2);    // 舵机信号线接GPIO2
    myservo.write(servo_set);  // 初始位置90°
}

void loop() {
    Blinker.run();  // 保持Blinker持续运行
}

1.导入程序所需要的库

  1. 打开库管理器

请添加图片描述

  1. 选择Blinker
    请添加图片描述
  2. 点击添加库函数

在这里插入图片描述

  1. 选择需要添加库的项目

在这里插入图片描述

2.编译文件

  1. 点击右上角展开编译项目和上传项目到ESP8266

请添加图片描述

四.BlinkerAPP配置

  1. 使用手机安装BlinkerAPP,应用市场有就应用市场下,没有就官网下
  2. 配置BlinkerAPP请添加图片描述

设置按键
在这里插入图片描述
在这里插入图片描述

请添加图片描述
设备密钥粘贴到程序当中
请添加图片描述

五.硬件连接图

在这里插入图片描述

六.接入小爱同学

打开米家APP进入我的,添加其他平台设备即可
请添加图片描述

#总结
因此,本次教程到此结束。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠柚不酸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值