ESP32实现手机App控制台灯


家有故障吃灰台灯一枚 随改造之

通过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();
}

四、成品如下

接下来就可以愉快的玩耍了 ^-^

生活不易、且行且珍惜。


文章作者: Rc4x
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Rc4x !