家有故障吃灰台灯一枚 随改造之
通过ESP32接入Blinker实现台灯的远程开关。之前使用的一直是Micro Python,今天换一下,Arduino+free-RTOS。
实现原理:手机通过IoT平台控制Esp32引脚,输出高低电平触发继电器开断,实现电源的接通与断开。
一、配置开发环境
1、下载并安装 Arduino
2、点击 文件/首选项 在附加开发板管理网址处输入 https://dl.espressif.com/dl/package_esp32_index.json
3、点击 工具/开发板***/开发板管理器 搜索ESP32并安装
4、配置编译工具
下载ESP Arduino编译工具https://github.com/espressif/arduino-esp32 解压到Arduino安装目录下\Arduino\hardware\espressif\esp32文件夹(需新建)
打开get.exe或者get.py 下载编译必要的工具
5、配置Blinker库
点击 项目/加载库/管理库 搜索Blinker并安装
二、连接GPIO
ESP32 GPIO22 ------→继电器 IN
三、编译软件并烧录
1、手机下载blinker并添加设备,记录设备的密钥。
2、打开Arduino选择 工具/ESP32 Dev Module
#define BLINKER_WIFI
#include <Blinker.h>
// 填入设备的密钥和WiFi账号密码
char auth[] = "46fe300331a1";
char ssid[] = "Mr.Han";
char pswd[] = "1234500890";
// 新建组件对象
BlinkerButton Button1("btn-led");
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
// 按键本身会保存开关状态,默认为off,按下时会发送{"btn-led":"on"};保存的状态为on时,按下会发送{"btn-led":"off"}
// 如果收到的按键状态为on
if (state=="on") {
// GPIO22置为高电平
digitalWrite(22, HIGH);
// 打开蓝色LED
digitalWrite(LED_BUILTIN, HIGH);
// 设置开关样式
Button1.color("#04a6f3");
Button1.text("已打开");
// 改变开关状态为{"btn-led":"on"}
Button1.print("on");
//
} else if(state=="off"){
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(22, LOW);
// 设置开关状态
Button1.color("#6c757d");
Button1.text("已关闭");
Button1.print("off");
}
}
void setup() {
// 初始化串口
Serial.begin(115200);
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
pinMode(22, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(22, LOW);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
}
void loop() {
Blinker.run();
}
四、成品如下
接下来就可以愉快的玩耍了 ^-^
生活不易、且行且珍惜。