基于blinker和ESP8266的智能排插
本帖最后由 guosaijun 于 2019-7-22 11:54 编辑做一个智能排插。
第一步先下载blinker 注册账号 添加设备 选择arduinowifi接入 获得key
第二部 硬件连接
would选用的 是mini d1 ESP8266 体积小点 加一个 四位低电平触发继电器
电路图
第三步 主要实现功能是远程开关,状态储存,如果意外断电,还是会恢复到原来的开关状态。定时等功能blinker是自带的!
#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 ,14,12, 13 }; //插座端口
boolean pinzt= {0 ,0, 0, 0 };//插座状态
const char pincolor[]={ //对应颜色
"#00FF00",
"#FF0000",
};
const char pinint[]={ //对应状态
"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, OUTPUT);
digitalWrite(pinID, HIGH);//设置插座端口脚为输出状态
}
//EEPwrite();
EEPread();
}
void loop()
{
Blinker.run();
for(int a = 0;a<4;a++){
digitalWrite(pinID, pinzt);
}
}
void heartbeat() //心跳包
{
Button1.color( pincolor[ pinzt[ 0 ] ] );
Button1.print( pinint[ pinzt ] );
Button2.color( pincolor[ pinzt[ 1 ] ] );
Button2.print( pinint[ pinzt ] );
Button3.color( pincolor[ pinzt[ 2 ] ] );
Button3.print( pinint[ pinzt ] );
Button4.color( pincolor[ pinzt[ 3 ] ] );
Button4.print( pinint[ pinzt ] );
}
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;
Button1.color( pincolor[ pinzt[ 0 ] ] ); //按键颜色
Button1.print( pinint[ pinzt[ 0 ] ] );//按键状态
EEPwrite();
}
else if (state == BLINKER_CMD_OFF) {
//BLINKER_LOG("Toggle off!");
pinzt =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 =0;
Button2.color( pincolor[ pinzt[ 1 ] ] ); //按键颜色
Button2.print( pinint[ pinzt ] );//按键状态
EEPwrite();
}
else if (state == BLINKER_CMD_OFF) {
//BLINKER_LOG("Toggle off!");
pinzt =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 =0;
Button3.color( pincolor[ pinzt[ 2 ] ] ); //按键颜色
Button3.print( pinint[ pinzt[ 2 ] ] );//按键状态
EEPwrite();
}
else if (state == BLINKER_CMD_OFF) {
//BLINKER_LOG("Toggle off!");
pinzt =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 =0;
Button4.color( pincolor[ pinzt[ 3 ] ] ); //按键颜色
Button4.print( pinint[ pinzt[ 3 ] ] );//按键状态
EEPwrite();
}
else if (state == BLINKER_CMD_OFF) {
//BLINKER_LOG("Toggle off!");
pinzt =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 = EEPROM.read(a+3000);
}
}
void EEPwrite(){
EEPROM.begin(4096);
for(int a = 0;a<4;a++){
EEPROM.write( a+3000,pinzt);
}
EEPROM.commit();
}
第四部 配网。使用 blinker配网 选开发者 开发工具ESPTouch 填入wifi密码点击开始配置 配置成功会反馈ip
设置界面 设置4个按键 数据键名是 B1-B4 类型 开关也可以直接导入代码
第一次 打开时 分别按下4个按键 储存下按键状态
{¨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位单控 智能排插 完成 定时倒计时 可以自己去设置!
你难道不打算用实体按钮???
在实际应用中不可能总是拿手机控制吧! Creeper666 发表于 2019-7-22 16: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
在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
ap123 发表于 2019-11-4 21:57
楼主怎么回事帮忙看看
Arduino:1.8.10 (Windows 7), 开发板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Fla ...
你需要按照文档下载blinker库 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
在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
楼主程序有问题报错
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
在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。 有没有自动配网的功能? 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 安卓版的blinker现在官网和应用商店下载不了呀楼主
页:
[1]
2