|
在淘宝淘了几个ozwi智能插座,能找到官方app但配网不成功,不知道是不是我的开始方式不对。拆开看看发现应该很好改造,拆得过程很简单,就不上图了,直接上改造图吧。
实现按插座上按键、点灯科技APP、小爱同学控制插座开关。
代码我不会,都是东拼西凑乱写的,有点基础的同学应该都能看懂,就不要喷我了。
外观
IO口对应图
飞线用于烧录
连接烧录器
上代码
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>
#include <Arduino.h>
#include "OneButton.h"
char ssid[] = "你的wifi";
char pswd[] = "wifi密码";
char auth[] = "点灯科技设备ID";
#define RELAY_PIN 12//继电器
#define RED_PIN 4//红色LED
#define BLUE_PIN 14//蓝色LED
#define PIN_INPUT 13//按键
OneButton button(PIN_INPUT, true);
void click()
{
digitalWrite(RELAY_PIN,!digitalRead(RELAY_PIN));
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
}
BlinkerButton Button1("btn-switch");
void button1_callback(const String & state)
{
digitalWrite(RELAY_PIN,!digitalRead(RELAY_PIN));
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
Blinker.vibrate();
}
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ",state);
if (state == BLINKER_CMD_OFF) {
digitalWrite(RELAY_PIN, LOW);
digitalWrite(RED_PIN, LOW);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_ON) {
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(RED_PIN, HIGH);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
}
void setup() {
Serial.begin(115200);
Serial.println("start...");
button.reset();//清除一下按钮状态机的状态
button.attachClick(click);
pinMode(RED_PIN, OUTPUT);
digitalWrite(RED_PIN, LOW);
pinMode(BLUE_PIN, OUTPUT);
digitalWrite(BLUE_PIN, LOW);
pinMode(RELAY_PIN,OUTPUT);
digitalWrite(RELAY_PIN,LOW);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(500);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
delay(500);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(500);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
delay(500);
Blinker.begin(auth, ssid, pswd);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(100);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
delay(100);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(100);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
delay(100);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(100);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
delay(100);
digitalWrite(RED_PIN, !digitalRead(RED_PIN));
delay(100);
digitalWrite(BLUE_PIN, !digitalRead(BLUE_PIN));
Button1.attach(button1_callback);
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop()
{
Blinker.run();
button.tick();
delay(10);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|