使用Blinker(点灯科技APP)与ESP32单片机实现远程控制RGB灯
文章目录
一、项目简介
本项目基于点灯科技的一款物联网服务平台APP——Blinker和一块32位物联网单片机——ESP32。实现远程控制RGB灯的开关和调节颜色及亮度。
-
一个ESP32单片机
-
一个RGB灯
-
四根杜邦线
-
一条microUSB数据线
1.Blinker
1.1 APP下载
1.2 APP界面
2.ESP32
2.1 ESP32实物图
2.2 ESP32引脚图
ESP32简介 https://makeronsite.com/esp32-intro.html
二、项目实现步骤
1.硬件连线
1.1 引脚连接表
RGB | ESP32 |
---|---|
R | GPIO 5 |
G | GPIO 18 |
B | GPIO 19 |
- | GND |
1.2 硬件连线仿真图:
1.3 硬件连线实物图:
2.软件配置
2.1 创建联网设备
2.2 查看Blinker提供的设备密钥
2.3生成APP交互界面
3.实现代码
#define BLINKER_WIFI //定义连接的模式,BLINKER_WIFI 表示使用ESP8266/ESP32
#include <Blinker.h> //导入Blinker库的Blinker.h头文件 导入前需要提前下载Blinker库
#define RED 5 //定义RED 为GPIO 5
#define GREEN 18 //定义GREEN 为GPIO 18
#define BLUE 19 //定义BLUE 为GPIO 19
uint8_t R_val=0; //定义红灯的电压模拟值并赋初值为0
uint8_t G_val=0; //定义绿灯的电压模拟值并赋初值为0
uint8_t B_val=0; //定义蓝灯的电压模拟值并赋初值为0
char auth[] = ""; //此处输入Blinker提供的密钥
char ssid[] = ""; //此处输入要连接的热点名称
char pswd[] = ""; //此处输入要连接的热点密码
/*
*新建组件对象
*/
BlinkerButton Button1("btn-abc"); //新建对象名为btn-abc的按键
BlinkerButton Button2("btn-def"); //新建对象名为btn-def的按键
BlinkerRGB RGB1("col-ghi"); //新建对象名为col-ghi的按键
BlinkerNumber NUMR("num-R"); //新建对象名为num-R的数字
BlinkerNumber NUMG("num-G"); //新建对象名为num-G的数字
BlinkerNumber NUMB("num-B"); //新建对象名为num-B的数字
// 按下按键Botton1即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
analogWrite(RED, 0);
analogWrite(GREEN, 0);
analogWrite(BLUE, 0);
}
// 按下按键Botton2即会执行该函数
void button2_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
analogWrite(RED, 255); //对RED引脚写入模拟值255
analogWrite(GREEN, 255); //对GREEN引脚写入模拟值255
analogWrite(BLUE, 255); //对BLUE引脚写入模拟值255
}
//该函数用于获得APP颜色组件的RGB数据
void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
{
BLINKER_LOG("R value: ", r_value); //获得R(红光)的值
BLINKER_LOG("G value: ", g_value); //获得G(绿光)的值
BLINKER_LOG("B value: ", b_value); //获得B(光)的值
BLINKER_LOG("Rrightness value: ", bright_value); //获得bright(亮度)的值
R_val=map(r_value,0,255,0,bright_value); //红光的值由0~255重映射为0~bright_value
G_val=map(g_value,0,255,0,bright_value); //绿光的值由0~255重映射为0~bright_value
B_val=map(b_value,0,255,0,bright_value); //蓝光的值由0~255重映射为0~bright_value
analogWrite(RED,R_val); //对RED写入模拟值R_val
analogWrite(GREEN,G_val); //对GREEN写入模拟值G_val
analogWrite(BLUE,B_val); //对BLUE写入模拟值B_val
NUMR.print(R_val); //对NUMR数字组件写入R_val数据
NUMG.print(G_val); //对NUMG数字组件写入G_val数据
NUMB.print(B_val); //对NUMB数字组件写入B_val数据
}
//初始化设置
void setup()
{
Serial.begin(115200); // 初始化串口设置波特率为115200bps
/* 初始化有LED的IO */
pinMode(RED, OUTPUT); //RED引脚设为输出
analogWrite(RED, LOW); //把RED引脚初始化为低电平
pinMode(GREEN, OUTPUT); //GREEN引脚设为输出
analogWrite(GREEN, LOW); //把GREEN引脚初始化为低电平
pinMode(BLUE, OUTPUT); //BLUE引脚设为输出
analogWrite(BLUE, LOW); //把BLUE引脚初始化为低电平
/* 初始化blinker */
Blinker.begin(auth, ssid, pswd); //连接无线热点,热点需要能连接互联网
RGB1.attach(rgb1_callback); //连接RGB1颜色组件
Button1.attach(button1_callback); //连接Button1按键组件
Button2.attach(button2_callback); //连接Button2按键组件
}
//无限循环
void loop() {
Blinker.run(); //启动Blinker物联功能
}
4.程序烧录
4.1 下载芯片支持包
!!务必下载2.0.9版本,Blinker目前仅支持到2.0.9,使用最新版本会导致程序烧录失败!!!
4.2 选择开发板与端口号
- 开发板选择ESP32-WROOM DA Module
- 端口选择USB所连接的端口 可通过设备管理器查看
- 其他设置默认即可
- 最后点击烧录程序