查看: 2541|回复: 66

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

[复制链接]
  • TA的每日心情
    开心
    2020-3-28 21:39
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2020-2-22 22:12 | 显示全部楼层 |阅读模式
    本帖最后由 caiyq52 于 2020-3-2 21:27 编辑

        继续倒腾,今天试试把“点灯”接入家里的天猫精灵。
       参考“点灯”官网教程: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://pan.baidu.com/s/1NXzV_oPfvdzytI5FR0lDuw 提取码:9na8
             将下载好的库文件夹(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

    ·最终程序

    kittenblock中小学创客名师推荐的图形化编程软件

    #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");     //caiyq52-此组件未点灯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();
    }


    ·选择工具-开发板-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 | 显示全部楼层
    我的什么操作都一样,唯独就是继电器没反应,不工作,点下开关开发板蓝色的灯也会闪一下
  • TA的每日心情
    开心
    2020-3-28 21:39
  • 签到天数: 20 天

    [LV.4]偶尔看看III

     楼主| 发表于 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
  • TA的每日心情
    奋斗
    2020-3-11 16:22
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2020-2-23 16:50 | 显示全部楼层
    不用烧录器可以吗 我直接8266nodemcu行吗
  • TA的每日心情
    开心
    2020-3-28 21:39
  • 签到天数: 20 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-2-23 17:37 | 显示全部楼层
    exerme 发表于 2020-2-23 16:50
    不用烧录器可以吗 我直接8266nodemcu行吗

    可以的,程序上传时选择开发板NodeMcu1.0(ESP-12E-Module)
    然后在程序中改一个你要使用的引脚       
    int Pin = 0;    //caiyq52-定义控制引脚
  • TA的每日心情
    奋斗
    2020-3-11 16:22
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2020-2-24 08:47 | 显示全部楼层
    大大,5V接哪里 充电宝 或者电池组也行吗
  • TA的每日心情
    开心
    2020-3-28 21:39
  • 签到天数: 20 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-2-24 08:57 | 显示全部楼层
    exerme 发表于 2020-2-24 08:47
    大大,5V接哪里 充电宝 或者电池组也行吗

    可以的呀!我是用的一个手机充电器,拆了一个USB线接的5V。
  • TA的每日心情
    奋斗
    2020-3-11 16:22
  • 签到天数: 9 天

    [LV.3]偶尔看看II

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

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

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    【Arduino】108种传感器模块系列实验(55)---DHT11温湿度传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    一个初级的hello world的问题
    一个初级的hello world的
    串口监视器不显示,第一个程序就这样,求大佬指点
    【Arduino】u8g2中文字库制作教程 小白请进
    【Arduino】u8g2中文字库
    我知道对于这个话题许多大佬们都会,发这个贴子也算是炒冷饭了,所以一开始我也十分纠
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表