ESP8266远程红外遥控

所需软件

  1. Arduino IDE 
  2. Blinker App 
  3. blinker-library (点灯科技官方库)
  4. IRremoteESP8266 (强大的红外收发库)

Arduino IDE 库安装

  1. 打开Arduino IDE,进入 项目 -> 加载库 -> 管理库...
  2. 搜索并安装以下库:
    • Blinker by blinker
    • IRremoteESP8266 by David Conran, Mark Szabo, et al.
    • DHT sensor library by Adafruit

核心代码功能解析

完整的程序代码较长,这里重点解析几个核心功能模块。

1. 红外信号学习与存储

当设备进入学习模式后,用户按下遥控器,程序会将接收到的红外信号解码并存储到EEPROM中。

void RunIr_r() {
    if (isStudy && IRR.decode(&results)) {
        // ... 校验地址 ...
        uint64_t data2 = results.value;
        EEPROM.begin(4096);
        EEPROM.put(address, data2);
        if (EEPROM.commit()) {
            Serial.printf("保存成功! 地址:%d, 数据:0x%llX\n", address, data2);
            Blinker.notify("红外码已保存!"); // 手机App会收到通知
        }
        EEPROM.end();
        IRR.resume(); // 接收下一个信号
    }
}

2. 红外信号发送

发送时,直接从EEPROM读取之前存储的编码,并通过irsend.sendCOOLIX函数发射出去。

void SendIr() {
    uint64_t data1;
    EEPROM.begin(4096);
    EEPROM.get(address, data1);
    EEPROM.end();
    
    if (data1 != 0) {
        irsend.sendCOOLIX(data1); // 发送Coolix协议信号
        Serial.printf("发送地址:%d\tdata:0x%llX\n", address, data1);
        Blinker.notify("红外指令已发送");
    }
}

3. 双重保障的网络连接管理

这是设备稳定性的关键。我们实现了主动重连超时重启两个机制。

  • 主动重连:在Blinker断开连接且互联网正常时,每2分钟主动尝试重新连接Blinker。
  • 超时重启:如果Blinker断开连接超过10分钟,设备将认为发生了无法恢复的错误,并自动重启,作为最终的“看门狗”手段。
void checkBlinkerConnection() {
    // ...
    bool isConnected = Blinker.connected();
    bool internetOk = checkInternetConnection();
    
    if (!isConnected && internetOk) {
        // 1. 每2分钟尝试重连
        if (currentTime - lastReconnectAttemptTime >= RECONNECT_INTERVAL) {
            reconnectBlinker();
            lastReconnectAttemptTime = currentTime;
        }
        
        // 2. 超过10分钟重启
        if (currentTime - blinkerDisconnectStartTime >= BLINKER_RECONNECT_TIMEOUT) {
            Serial.println("⚠️ 连接超时,执行重启...");
            delay(5000);
            ESP.restart();
        }
    }
}

Blinker App 界面配置

  1. 在Blinker App中,点击右上角的“+”号,选择“独立设备”,获取一个设备Key。
  2. 将代码中的auth[]替换为该Key。
  3. 在App的编辑模式下,添加以下组件(与代码中的组件名称严格对应):
    • btn-On:开关按钮(按键类型)
    • btn-Study:学习模式开关(按键类型)
    • btn-Coolbtn-Hotbtn-Wind:模式选择按钮(按键类型)
    • num-6fmnum-7tk:数据显示组件,用于显示温湿度。

使用步骤

重复以上步骤,学习所有需要的功能键。

硬件连接:按照电路图完成接线。

烧录程序:使用Arduino IDE将完整代码上传到ESP8266。

配置WiFi:在代码中填写您的WiFi名称和密码。

学习遥控码

打开Blinker App,点击“学习模式”按钮。

在App上点击您要设置的功能键(如“开关-On”)。

用空调遥控器对准红外接收头,按下对应的按钮(如“开关”键)。

App会提示“红外码已保存!”。

源码附件

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇