ESP8266+天猫精灵 实现手机or语音遥控方案

声明

本系列内容为单片机业余爱好者所写,仅作个人技术交流分享不做任何商业用途。

如内容有错误,可评论区留言,本人及时修正。

摘要

        本系列内容讲述:如何将ESP8266开发板连接天猫精灵,以获得设定的需求指令。并进一步扩展通过万能遥控器执行该指令的内容。

目录

声明

摘要

前言

材料准备

一、开发板介绍

1.点亮led

(1)定义引脚

(2)定义引脚输出模式

2.串口通信测试

(1)打开串口通信

(2)串口输出数据

3.完整代码(密钥在后面章节)

二、遥控模块介绍

1.接线

2.简码通讯

三、点灯科技

四、天猫精灵APP增加外设

最后,到这里真的就结束啦❀


前言

        夏天又到了,天气越来越热。前些天想开个空调在书房摸鱼,结果平日里天天都能看见的遥控器,那一天怎么找都找不到。正好不才,在大学里曾经接触过一些单片机,就想给空调增加一个万能遥控器外设,如此就能实现语音遥控啦。

材料准备

\bullet ESP8266开发板(有能力可以直接用最小系统电路)

\bullet 48键遥控学习模块

\bullet USB数据线(适配的)

\bullet CH340

\bullet 杜邦线母对母

\bullet 天猫精灵(白嫖来的)

\bullet 基础设备

一、开发板介绍

        ESP8266支持多种网络通信协议,如TCP/IP协议、UDP协议、HTTP协议、MQTT协议等。

        TCP/IP协议日常随处可见,主要用于大量的数据传输,其稳定性强;UDP协议适用于传输低延迟数据场合,但传输数据量较少;HTTP协议常用于网页;MQTT协议一般用于物联网设备之间的数据通信。

        本次使用的是NodeMCU Lua V3物联网开发板,其不仅价格低廉,而且引脚功能丰富。

1.点亮led

(1)定义引脚

const int LED_BUILTIN = 16;
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);}

(2)定义引脚输出模式

digitalWrite(LED_BUILTIN, LOW);

2.串口通信测试

(1)打开串口通信

//Serial port Settings
void setup()//enable serial port
{
     Serial.begin(9600);}//write baud rate

(2)串口输出数据

char ddata[8] = {0x55,0xAA,0x01,0x01,0x02};//write char
Serial.println(ddata);//send char ddata

3.完整代码(密钥在后面章节)

#define BLINKER_WIFI
#define BLINKER_ALIGENIE_MULTI_OUTLET
#define air_conditioner
#include <Arduino_JSON.h>
#include <Blinker.h>

char auth[] = "xxxxxxxx";//blinker 密钥
char ssid[] = "xxxxxxxx";//WIFI name
char pswd[] = "xxxxxxxx";//passward
bool oState[5] = { false };
int i = 0;
char ddata[8] = {0x55,0xAA,0x01,0x01,0x02};

void aligeniePowerState(const String & state, uint8_t num)
{
    if (state == BLINKER_CMD_ON) {
      if(num == 0){
        char ddata[8] = {0x55,0xAA,0x03,0x01,0x03};
        Serial.println(ddata);
       }
        digitalWrite(LED_BUILTIN, HIGH);
        BlinkerAliGenie.powerState("on", num);
        oState[num] = true;
     }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, LOW);
        BlinkerAliGenie.powerState("off", num);
        char ddata[8] = {0x55,0xAA,0x03,0x03,0x05};
        Serial.println(ddata);
        oState[num] = true;
        if (num == 0)
        {
            for (uint8_t o_num = 0; o_num < 5; o_num++)
            {
                oState[o_num] = false;
            }
        }
    }
}

void aligenieQuery(int32_t queryCode, uint8_t num)
{
    BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);
    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.powerState(oState[num] ? "on" : "off", num);
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(oState[num] ? "on" : "off", num);
            break;
        default :
            BlinkerAliGenie.powerState(oState[num] ? "on" : "off", num);
            break;
    }
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    Blinker.vibrate();
    uint32_t BlinkerTime = millis();
}

void setup()
{
    Serial.begin(9600);
    BLINKER_DEBUG.stream(Serial);

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    
    BlinkerAliGenie.attachPowerState(aligeniePowerState);
    BlinkerAliGenie.attachQuery(aligenieQuery);
}

void loop()
{
    Blinker.run();
}

二、遥控模块介绍

        本次使用的是一块支持普通 NEC 编码与长编码的红外遥控器,能够将学习的键码保存并发送出去,以实现遥控。该模块具有多种控制方式如串口简码、MODBUS、矩阵键盘控制等。搭配上位机软件,能够快速上手使用。

1.接线

2.简码通讯

TX:0X55 0XAA 0X03 0x00 0x02 
0x55,0xAA 固定的数据头
0x03 操作码 03,发送红外键值
0x00 键值 0
0x02 累加和校验,0X55+0XAA+0X03+0x00=0x102,只保留一字节就是 0x02
RX:0x55 0XAA 0X03 0x01 0x03
0x55,0xAA 固定的数据头
0x03 操作码 03,发送红外键值
0x01 结果值:1 发送成功,0 发送失败
0x02 累加和校验,0X55+0XAA+0X03+0x01=0x103,只保留一字节就是 0x03

三、点灯科技

         下载并安装点灯Blinker,并按下图操作获得密钥。

四、天猫精灵APP增加外设

1.打开天猫精灵,单击右上角加号

2.选择添加设备,跳转页面后搜索blinker

3.选择第一个设备

4.确保天猫精灵已经联网,选择“设备已联网,下一步”

5.选择“绑定账号平台”,对blinker账号进行绑定

6.到这里设备绑定就完成了,对设备设置语音口令即可实现语音遥控

7.BLINKER_ALIGENIE_MULTI_OUTLET内部其实支持控制5种不同的设备,在arduino里可以设置单独控制任一设备,由于是新手教程这里就不多去介绍了。

最后,到这里真的就结束啦❀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值