前言
基于ESP8266模块驱动舵机,使用blinker平台接入小爱同学和软件控制。可以使用blinker实现开关灯效果,以及小爱同学语音控制,同时使用的是Platform环境,这个环境基于vscode
一、准备材料
- ESP8266模块
- 数据线一根
- Arduino开发环境(本次使用的是PlatformIO环境)
- 舵机SG90(180°)
- Blinker账号
- Vscode(非必选项)
- 小米手机一部
二、环境配置
- 本人嫌弃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.导入程序所需要的库
- 打开库管理器
- 选择Blinker
- 点击添加库函数
- 选择需要添加库的项目
2.编译文件
- 点击右上角展开编译项目和上传项目到ESP8266
四.BlinkerAPP配置
- 使用手机安装BlinkerAPP,应用市场有就应用市场下,没有就官网下
- 配置BlinkerAPP
设置按键
设备密钥粘贴到程序当中
五.硬件连接图
六.接入小爱同学
打开米家APP进入我的,添加其他平台设备即可
#总结
因此,本次教程到此结束。。