点灯·blinker-3 天猫精灵接入8266+继电器控制灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 37595|回复: 81

[分享] 点灯·blinker-3 天猫精灵接入8266+继电器控制灯

[复制链接]
发表于 2020-2-22 22:12 | 显示全部楼层 |阅读模式
本帖最后由 caiyq52 于 2021-1-4 20:02 编辑

    继续倒腾,今天试试把“点灯”接入家里的天猫精灵。
   参考“点灯”官网教程:https://diandeng.tech/doc/tmallgenie
一、准备工作
1.1软件
  ·Arduino IDE (必须是1.8.10及以上版本!我这里使用的版本刚下载的1.8.11)
         Arduino IDE 1.8.11 链接:https://pan.baidu.com/s/1QQ8bjWcLga6hA2vsXdXVow  提取码:b70v
         或者在Arduino官网下载新版本:https://www.arduino.cc/

  ·安装blinker Arduino库(blinker-library-master.zip)
        blinker-library-master.zip    https://github.com/blinker-iot/blinker-library
         将下载好的库文件夹(blinker-library-master)解压到 我的电脑>文档>Arduino>libraries 文件夹中。
  ·安装esp8266/esp32扩展包(8266_package_2.6.3.exe)
         8266_package_2.6.3.exe 链接:https://pan.baidu.com/s/1yM1sDZ4494n8BM4dgPuS0A 提取码:9gl9
         直接运行自动安装。



1.2硬件
         ·ESP8266模块


         ·WIFI继电器模块
微信截图_20200222215901.png

         · 8266烧录器
         · 天猫精灵
03b05a27a620edf5ed2192a9a672ffc.jpg

二、开始
2.1点灯·blinkerAPP
  ·下载安装APP

https://diandeng.tech/doc/app-download

2.2 点灯APP使用,及获取Key码和设置按钮名称

·步骤见之前分享(这里就不赘述啦)“点灯·blinker-1物联网初次尝试-Arduino物联网控制LED灯-零基础篇

2.3 Arduino程序
  ·参考点灯示例程序

    Arduino IDE——文件——示例——Blinker——Blinker_AliGenie——AliGenie_OUTLET

·最终程序
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET   //caiyq52-天猫精灵

#include <Blinker.h>


char auth[] = "Your Device Secret Key"; //caiyq52-改成自己在点灯app中生成的key码
char ssid[] = "Your WiFi network SSID or name"; //caiyq52-改成自己的WIFI名称
char pswd[] = "Your WiFi network WPA password or WEP key";  //caiyq52-改成自己的WIFI密码



BlinkerButton Button1("btn-abc");     //        1caiyq52-此组件未点灯app中自己设置的按键,改名"btn-abc"必须与自己APP中设定的名称一致
bool oState = false;
int Pin = 0;    //caiyq52-定义控制引脚
void AliGeniePowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {     //caiyq52-天猫精灵控制开命令
        digitalWrite(Pin, LOW);
        BlinkerAliGenie.powerState("on");

        BlinkerAliGenie.print();

        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   //caiyq52-天猫精灵控制关命令
        digitalWrite(Pin, HIGH);
        BlinkerAliGenie.powerState("off");

        BlinkerAliGenie.print();

        oState = false;
    }
}

void AliGenieQuery(int32_t queryCode)      //caiyq52-天猫精灵控制
{
    BLINKER_LOG("AliGenie Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        default :
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
    }
}

void dataRead(const String & data)      // 如果未绑定的组件被触发,则会执行其中内容
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);
}

void button1_callback(const String & state)     //点灯app内控制按键触发
{
     BLINKER_LOG("get button state: ", state);
    digitalWrite(Pin, !digitalRead(Pin));
}

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

    pinMode(Pin, OUTPUT);              //定义io口为输出
    digitalWrite(Pin, HIGH);           //定义io默认电平

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    BlinkerAliGenie.attachPowerState(AliGeniePowerState);
    BlinkerAliGenie.attachQuery(AliGenieQuery);
    Button1.attach(button1_callback);      
}

void loop()
{
    Blinker.run();
}[/mw_shl_code]


·选择工具-开发板-Generic ESP8266 Module

·连接硬件(烧录器+8266)


·选择对应的端口,上传程序!
2.5 控制电路搭建
·连接硬件(WIFI继电器模块+8266)
微信截图_20200222213049.png
·接线下如图
    21.png


2.5 点灯APP控制测试
·开APP,查看设是否线,上线后点击开关图标进行测试。
注意!要绑定天猫精灵必须先保证设备成功上线,所以这一步最好不要跳过!


2.6 天猫精灵绑定“点灯”
·打开天猫精灵 APP“+添加设备”
·在搜索栏,搜索blinker,并点击要添加的设备类型(选择插座图标那个)
·点击绑定账号,使用blinker账户登录,完成绑定
·绑定成功后,在您的智能家居设备列表中,现在可以使用天猫精灵进行语音控制了!




2020.02.22
武汉加油!中国加油!

发表于 2020-2-22 22:20 | 显示全部楼层
我的什么操作都一样,唯独就是继电器没反应,不工作,点下开关开发板蓝色的灯也会闪一下
 楼主| 发表于 2020-2-22 23:50 | 显示全部楼层
623277327 发表于 2020-2-22 22:20
我的什么操作都一样,唯独就是继电器没反应,不工作,点下开关开发板蓝色的灯也会闪一下 ...

蓝色的灯闪烁说明已经收到数据了!
你的波特率设置的是多少?如果是9600,你改成115200试试

像这样
void setup()
{
    Serial.begin(115200);
发表于 2020-2-22 23:55 | 显示全部楼层
caiyq52 发表于 2020-2-22 23:50
蓝色的灯闪烁说明已经收到数据了!
你的波特率设置的是多少?如果是9600,你改成115200试试

波特率是115200,开关的时候,我量了IO0口有电平变化,3.3v,但是继电器不工作,我单独接5V在继电器上可以吸合,这应该说明继电器没问题,我发了个求助帖子,代码贴在上面了,有空劳烦您看看,是不是这个IO口和继电器的板子有冲突?
发表于 2020-2-23 02:15 来自手机 | 显示全部楼层
我认为,你还是找一下继电器模块,io0有输出证明8266没问题,不知道你说的5v接在哪里继电器可以吸合,正常io脚后面应该还有三极管(继电器模块不一样,有的是光耦),是它控制三极管,三极管在控制的5v
发表于 2020-2-23 16:50 | 显示全部楼层
不用烧录器可以吗 我直接8266nodemcu行吗
 楼主| 发表于 2020-2-23 17:37 | 显示全部楼层
exerme 发表于 2020-2-23 16:50
不用烧录器可以吗 我直接8266nodemcu行吗

可以的,程序上传时选择开发板NodeMcu1.0(ESP-12E-Module)
然后在程序中改一个你要使用的引脚       
int Pin = 0;    //caiyq52-定义控制引脚
发表于 2020-2-24 08:47 | 显示全部楼层
大大,5V接哪里 充电宝 或者电池组也行吗
 楼主| 发表于 2020-2-24 08:57 | 显示全部楼层
exerme 发表于 2020-2-24 08:47
大大,5V接哪里 充电宝 或者电池组也行吗

可以的呀!我是用的一个手机充电器,拆了一个USB线接的5V。
发表于 2020-2-24 11:29 | 显示全部楼层
caiyq52 发表于 2020-2-24 08:57
可以的呀!我是用的一个手机充电器,拆了一个USB线接的5V。

大大!再次打扰你了,是不是 你拆USB线接220V, 然后接一个转5V的模块给8266供电,有个问题,8266不是3.3V吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 01:30 , Processed in 0.142907 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表