基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三)

3. 遥控控制

我们根据已经获取到的按键与其红外信号,开始进行控制设计
首先,我们需要手机下载软件 点灯 blinker ,注册登陆
点击右上方“+”号 -> Arduino -> wifi接入 -> 复制key 后,返回主界面,就会出现一个新的设备 。
点击 Arduino -> 开始使用 -> 点击右上角编辑 -> 点击一下删除标志 -> 下方组件中,点击按键 ,上方就会出现

基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三)_第1张图片

进行配置 :点击按键 -> 数据键名填上tv,选择开关按键,样式设置选择中间的开关,显示文本填上开关,选择喜欢的图标颜色 -> 点击保存。

基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三)_第2张图片

同理,我们再设置一个普通按键
添加一个组件按键,->配置为数据键名 volume ,显示文本为 音量加大;选择喜欢的图标颜色(也可选择修改图标),样式设置不变 -> 保存;
点击右上角锁定界面;
基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三)_第3张图片

3.1 硬件与连接

下面进行硬件连接:与第二章相同,不过我们需要将红外模块换为发射模块;
(但可能因为是我的硬件有问题,红外发射模块连接到ESP模块时,无法烧写程序,需要烧录完再连接上;且每次上电时,如果已经连接了红外模块会导致无法运行;需要先上电再接上红外发射模块,具体大家可以试一试)
具体连接线连接方式相同;
3.3V(VCC) -> VCC
GND -> GND
IO2 -> DAT(data)

基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三)_第4张图片

3.2 代码

Arduino IDE示例中同样有红外发射的例程;
文件 -> 示例 -> IRremoteESP8266->IRsendDemo
但我们还需要blinker库的内容,所示具体代码如下所示;

#define BLINKER_WIFI //定义wifi模块
#include //包含Blinker头文件
#include 
#include 
#include 

#define kIrled 2         //定义IO2
IRsend irsend(kIrled);   //定义IO2为红外发射数据端

bool oState = false;     //开关状态保存
char auth[] = "******";  //设备key(点灯科技软件,进入设备后,右上角可查看)
char ssid[] = "******";  //wifi 名称
char pswd[] = "******";  //wifi 密码
BlinkerButton  TV("tv");    //定义"开关"数据键名

BlinkerButton  VOLUME("volume");    //定义"音量增大"数据键名

void tv_callback(const String & state) {  //按下开关按键
    if (state == BLINKER_CMD_ON){    //如果按键按下后是打开
      BLINKER_LOG("打开电视");
      TV.print("on");                //记录是打开状态
      irsend.sendNEC(0x20DF10EF);    //发射电视开关键的红外数据(第二章获取的信号值)
      delay(20);
      oState = true;                 //开关状态保存,主要用于接入小爱
    }
    else if (state == BLINKER_CMD_OFF){    //如果按键按下后是关闭
      BLINKER_LOG("关闭电视");
      TV.print("off");               //记录是关闭状态
      irsend.sendNEC(0x20DF10EF);    //发射电视开关键的红外数据(第二章获取的信号值)
      delay(20);
      oState = false;                //开关状态保存,主要用于接入小爱
    }
}

void volume_callback(const String & state1) {   //不判断不开关、按下即增大音量
    BLINKER_LOG("增大音量");
    irsend.sendNEC(0x80BFA15E);
    delay(20);
}

void setup() {   //开始运行一次的函数
  irsend.begin();    //初始化红外发射模块
  Blinker.begin(auth, ssid, pswd);  //连接wifi,连接blniker
  TV.attach(tv_callback);           //把按键与函数对应起来
  VOLUME.attach(volume_callback);           //把按键与函数对应起来
}

void loop() {  //不断循环运行的函数
      Blinker.run();    //blinker一直运行
}


3.2 结果

观察点灯 blinker软件上的设备是否显示在线,然后点进去,点按开关键,将红外发射模块朝向电视机,点按软件上开关按键;
这样电视就能实现手机控制开关和音量增大的控制

这里只展示了简单的开关、增大音量的设置;具体可以自己增加按键;
在软件中需要添加按键,键名需要记录,要写入代码中;
而在代码中,需要增加

1、
BlinkerButton  NAME("data");  //定义"按键"数据键名
//NAME    代表按键名词(主要用于后面对应函数)
//name    代表键名编号(主要用于对于手机软件上的按键数据键名)
//state需要变化,避免冲突

2、定义按键后执行任务
void name_callback(const String & state) {
    //主要为打印,串口监视器显示 
    BLINKER_LOG("增大音量");     
     //括号内为红外数据,根据实际情况来写,0x必须写,代表十六进制
    irsend.sendNEC(0x80BFA15E); 
    delay(20);   //个人觉得需要稍稍延时
}

3、对应键码和按键任务,在函数setup中添加
NAME.attach(name_callback)   //把按键与函数对应起来

链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(一).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(二).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(四).

你可能感兴趣的:(智能家居)