查看: 954|回复: 10

[分享] 基于blinker和ESP8266的智能排插

[复制链接]
  • TA的每日心情
    无聊
    2019-7-26 21:20
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2019-7-22 11:51 | 显示全部楼层 |阅读模式
    本帖最后由 guosaijun 于 2019-7-22 11:54 编辑

    做一个智能排插。
    第一步先下载blinker 注册账号 添加设备 选择arduino  wifi接入 获得key

    2.jpg 1.png
    第二部 硬件连接
    would选用的 是mini d1 ESP8266 体积小点 加一个 四位低电平触发继电器
    电路图
    未标题-1.jpg


    第三步 主要实现功能是远程开关,状态储存,如果意外断电,还是会恢复到原来的开关状态。定时等功能blinker是自带的!

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

    #define BLINKER_WIFI
    #define BLINKER_ESP_SMARTCONFIG //自动配网
    
    
    #include <Blinker.h>
    
    //char auth[] = "填入获得的key"; //填入获得的key
    
    #define BUTTON_1 "B1" //1数据键名
    #define BUTTON_2 "B2" //2数据键名
    #define BUTTON_3 "B3" //3数据键名
    #define BUTTON_4 "B4" //4数据键名
    
    BlinkerButton Button1(BUTTON_1);
    BlinkerButton Button2(BUTTON_2);
    BlinkerButton Button3(BUTTON_3);
    BlinkerButton Button4(BUTTON_4);
    
    
    int pinID[4]= {4 ,14,12, 13 }; //插座端口
    boolean pinzt[4]= {0 ,0, 0, 0 };//插座状态
    
    const char pincolor[][8]={ //对应颜色
      "#00FF00",
      "#FF0000",
    };
    
    const char pinint[][8]={ //对应状态
      "on",
      "off",
    };
    
    void setup()
    {
      Serial.begin(115200);
        
      Blinker.begin(auth);
      Blinker.attachData(dataRead);  
      Blinker.attachHeartbeat(heartbeat); //心跳包
        
      Button1.attach(button1_callback);
      Button2.attach(button2_callback);
      Button3.attach(button3_callback);
      Button4.attach(button4_callback);
    
      for(int a = 0;a<4;a++){
        pinMode(pinID[a], OUTPUT); 
        digitalWrite(pinID[a], HIGH);//设置插座端口脚为输出状态
      }
    
      //EEPwrite();
      EEPread();
    
    }
    
    void loop()
    {
      
      Blinker.run();
      for(int a = 0;a<4;a++){
        digitalWrite(pinID[a], pinzt[a]);
      }
    }
    
    void heartbeat() //心跳包
    {
    
            Button1.color( pincolor[ pinzt[ 0 ] ] );
            Button1.print( pinint[ pinzt[0] ] );
            Button2.color( pincolor[ pinzt[ 1 ] ] );
            Button2.print( pinint[ pinzt[1] ] );
            Button3.color( pincolor[ pinzt[ 2 ] ] );
            Button3.print( pinint[ pinzt[2] ] );
            Button4.color( pincolor[ pinzt[ 3 ] ] );
            Button4.print( pinint[ pinzt[3] ] );
    }
    
    void dataRead(const String & data)
    {
        BLINKER_LOG("Blinker readString: ", data);
    
        Blinker.vibrate();
        
    }
    
    void button1_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
    
        if (state == BLINKER_CMD_ON) {
            BLINKER_LOG("Toggle on!");
    
            pinzt[0] =0;
            Button1.color( pincolor[ pinzt[ 0 ] ] ); //按键颜色
            Button1.print( pinint[ pinzt[ 0 ] ] );//按键状态
            EEPwrite();
        }
        else if (state == BLINKER_CMD_OFF) {
            //BLINKER_LOG("Toggle off!");
    
            pinzt[0] =1;
            Button1.color( pincolor[ pinzt[ 0 ] ] );
            Button1.print( pinint[ pinzt[ 0 ] ] );
            EEPwrite();
        }
    }
    
    void button2_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
    
        if (state == BLINKER_CMD_ON) {
            BLINKER_LOG("Toggle on!");
    
            pinzt[1] =0;
            Button2.color( pincolor[ pinzt[ 1 ] ] ); //按键颜色
            Button2.print( pinint[ pinzt[1] ] );//按键状态
            EEPwrite();
        }
        else if (state == BLINKER_CMD_OFF) {
            //BLINKER_LOG("Toggle off!");
    
            pinzt[1] =1;
            Button2.color( pincolor[ pinzt[ 1 ] ] );
            Button2.print( pinint[ pinzt[ 1 ] ] );
            EEPwrite();
        }
    }
    
    void button3_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
    
        if (state == BLINKER_CMD_ON) {
            BLINKER_LOG("Toggle on!");
    
            pinzt[2] =0;
            Button3.color( pincolor[ pinzt[ 2 ] ] ); //按键颜色
            Button3.print( pinint[ pinzt[ 2 ] ] );//按键状态
            EEPwrite();
        }
        else if (state == BLINKER_CMD_OFF) {
            //BLINKER_LOG("Toggle off!");
    
            pinzt[2] =1;
            Button3.color( pincolor[ pinzt[ 2 ] ] );
            Button3.print( pinint[ pinzt[ 2 ] ] );
            EEPwrite();
        }
    }
    
    void button4_callback(const String & state)
    {
        BLINKER_LOG("get button state: ", state);
    
        if (state == BLINKER_CMD_ON) {
            BLINKER_LOG("Toggle on!");
    
            pinzt[3] =0;
            Button4.color( pincolor[ pinzt[ 3 ] ] ); //按键颜色
            Button4.print( pinint[ pinzt[ 3 ] ] );//按键状态
            EEPwrite();
        }
        else if (state == BLINKER_CMD_OFF) {
            //BLINKER_LOG("Toggle off!");
    
            pinzt[3] =1;
            Button4.color( pincolor[ pinzt[ 3 ] ] );
            Button4.print( pinint[ pinzt[ 3 ] ] );
            EEPwrite();
        }
    }
    
    void EEPread(){
      EEPROM.begin(4096);
    for(int a = 0;a<4;a++){
    pinzt[a] = EEPROM.read(a+3000);
    }
    }
    
    void EEPwrite(){
    EEPROM.begin(4096);
    for(int a = 0;a<4;a++){
      EEPROM.write( a+3000,pinzt[a]); 
    }
      EEPROM.commit();
    }


    第四部 配网。使用 blinker配网 选开发者 开发工具  ESPTouch 填入wifi密码  点击开始配置 配置成功会反馈ip

    微信图片_20190722114114.png 微信图片_20190722113808.jpg

    设置界面 设置4个按键 数据键名是 B1-B4 类型 开关  也可以直接导入代码
    第一次 打开时 分别按下4个按键 储存下按键状态


    微信图片_20190722114353.jpg

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

    {¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨light¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fal fa-power-off¨¨mode¨Ê¨t0¨´1´¨t1¨¨文本2¨¨bg¨Ì¨cols¨Í¨rows¨Í¨key¨¨B1¨´x´É´y´Ì¨speech¨|÷¨lstyle¨Ë}{ßAßBßCßDßEÊßF´1´ßGßHßIÌßJÍßKÍßL¨B2¨´x´Í´y´ÌßN|÷ßOË}{ßAßBßCßDßEÊßF´3´ßGßHßIÌßJÍßKÍßL¨B3¨´x´É´y´ÑßN|÷ßOË}{ßAßBßCßDßEÊßF´4´ßGßHßIÌßJÍßKÍßL¨B4¨´x´Í´y´ÑßN|÷ßOË}÷}


    到此 4位单控 智能排插 完成 定时  倒计时 可以自己去设置!
    微信图片_20190722115402.jpg

  • TA的每日心情

    2019-11-16 00:47
  • 签到天数: 116 天

    [LV.6]常住居民II

    发表于 2019-7-22 16:57 | 显示全部楼层
    你难道不打算用实体按钮???
    在实际应用中不可能总是拿手机控制吧!
  • TA的每日心情
    无聊
    2019-7-26 21:20
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2019-7-22 21:53 | 显示全部楼层
    Creeper666 发表于 2019-7-22 16:57
    你难道不打算用实体按钮???
    在实际应用中不可能总是拿手机控制吧!

    实际的智能排插 有多少单路再做个实体按钮的? 要不做个总开关吧 实现这个不是很容易吗?
  • TA的每日心情
    郁闷
    2019-11-15 17:05
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-11-4 21:57 | 显示全部楼层
    楼主怎么回事帮忙看看

    Arduino:1.8.10 (Windows 7), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

    sketch_nov04a:5:21: error: Blinker.h: No such file or directory

    #include <Blinker.h>

                         ^

    compilation terminated.

    exit status 1
    Blinker.h: No such file or directory

    在文件 -> 首选项开启
    “编译过程中显示详细输出”选项
    这份报告会包含更多信息。
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-11-4 22:10 | 显示全部楼层
    ap123 发表于 2019-11-4 21:57
    楼主怎么回事帮忙看看

    Arduino:1.8.10 (Windows 7), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Fla ...

    你需要按照文档下载blinker库
  • TA的每日心情
    郁闷
    2019-11-15 17:05
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-11-4 22:19 | 显示全部楼层
    Arduino:1.8.5 (Windows XP), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

    构建选项已变更,全部重新构建
    E:\ESP8266\D1-MINI璧勬枡\D1-MINI璧勬枡\D1_mini_Examples锛堥厤濂楀涔犵▼搴忥級\03.Sensors\DS18x20_Temperature\DS18x20_Temperature.ino: In function 'void setup()':

    DS18x20_Temperature:37: error: 'auth' was not declared in this scope

    exit status 1
    'auth' was not declared in this scope

    在文件 -> 首选项开启
    “编译过程中显示详细输出”选项
    这份报告会包含更多信息。
  • TA的每日心情
    郁闷
    2019-11-15 17:05
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-11-5 11:24 | 显示全部楼层
    楼主程序有问题报错

    Arduino:1.8.10 (Windows 7), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

    C:\Users\TEST\Documents\Arduino\sketch_nov04a\sketch_nov04a.ino: In function 'void setup()':

    sketch_nov04a:37:17: error: 'auth' was not declared in this scope

       Blinker.begin(auth);

                     ^

    "ESP8266WiFi.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WiFi
    "ESP8266HTTPClient.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266HTTPClient
    "EEPROM.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\EEPROM
    "ESP8266mDNS.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266mDNS
    "Ticker.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\Ticker
    "ESP8266httpUpdate.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266httpUpdate
    "ESP8266WebServer.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer
    "Hash.h" 对应多个库
    已使用: C:\Users\TEST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\Hash
    "Blinker.h" 对应多个库
    已使用: C:\Users\TEST\Documents\Arduino\libraries\blinker-library-master
    exit status 1
    'auth' was not declared in this scope

    在文件 -> 首选项开启
    “编译过程中显示详细输出”选项
    这份报告会包含更多信息。
  • TA的每日心情
    无聊
    2019-11-19 11:51
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2019-11-6 15:23 | 显示全部楼层
    有没有自动配网的功能?
  • TA的每日心情
    无聊
    2019-11-19 11:51
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2019-11-8 11:15 | 显示全部楼层
    ap123 发表于 2019-11-4 22:19
    Arduino:1.8.5 (Windows XP), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL  ...

    没有定义auth

    该用户从未签到

    发表于 2019-11-8 11:31 来自手机 | 显示全部楼层
    安卓版的blinker现在官网和应用商店下载不了呀楼主
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(55)---DHT11温湿度传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】168种传感器系列实验(149)--AS608光学指纹识别模块
    【Arduino】168种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    黑乌鸦的Arduino兵器库-----DFPlayer MiNi mp3音乐模块
    黑乌鸦的Arduino兵器库---
    嗯 这是一个系列后期会罗列几乎所有的常见基础模块的demo所以 大家的回复将是我最大
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表