【教程】小爱同学-ESP8266舵机开门-Arduino中文社区 - Powered by Discuz! Archiver

1812z 发表于 2021-7-14 19:52

【教程】小爱同学-ESP8266舵机开门

虽然这样的教程挺多的,但是很多讲解不全,或者不带小爱同学,因此这里再发一篇总览&效果

材料:
开发板
舵机MG996R【996R为高扭矩版本,速度慢但是力量大】

注意事项!!!!!!!!
电源需要5v3A
5V1A肯定不行
测试时候无反应检查是否接到5V3A电源
并且开发板和舵机需要在同一个电源上【并联接入】
舵机有方向!!!请按照图里方向安装【自己探索也可以】
源码中每次开门锁后保持5秒,给人推开门的时间

接线:
除了电源线,就是舵机调节的线,接D4【GPIO2】
源码【设置了完成开门后自动松开舵机】:
#include <Servo.h>
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
Servo myServo;
#include <Blinker.h>

char auth[] = "KEY";
char ssid[] = "SSID";
char pswd[] = "password";

bool oState = false;
//APP
#define BUTTON_1 "ButtonKey"
BlinkerButton Button1(BUTTON_1);
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_BUTTON_TAP) {
      BLINKER_LOG("Button tap!");
      Button1.color("#FFFFFF");
      Button1.text("开门");
      Button1.print();
      myServo.attach(2); //D4
      myServo.write(0);
      Blinker.delay(5000);
      myServo.write(180);
      Blinker.delay(400);
      myServo.detach();
    }
    else {
      BLINKER_LOG("Get user setting: ", state);

      Button1.icon("icon_1");
      Button1.color("#FFFFFF");
      Button1.text("Your button name or describe");
      // Button1.text("Your button name", "describe");
      Button1.print();
    }
}



void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
         myServo.attach(2); //D4
         myServo.write(180);

      BlinkerMIOT.powerState("on");
      BlinkerMIOT.print();

      oState = true;
      myServo.write(0);
      Blinker.delay(5000);
      myServo.write(180);
      Blinker.delay(400);
      myServo.detach();
      oState = false;
    }
    else if (state == BLINKER_CMD_OFF) {
      BlinkerMIOT.powerState("off");
      BlinkerMIOT.print();

      oState = false;
    }
}

void miotQuery(int32_t queryCode)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

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

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

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

void setup()
{
    myServo.attach(2); //D4
    myServo.write(0);
   myServo.detach();

    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);//APP
    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);
}

void loop()
{
    Blinker.run();
}



界面配置:
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨FBI ¨¨t1¨¨Open the door¨¨size¨¤E¨bg¨É¨ico¨¨fad fa-toggle-off¨¨cols¨Í¨rows¨Ë¨key¨´门´´x´É´y´É¨speech¨|÷¨lstyle¨Ì}{ßC¨btn¨ßK¨fad fa-play-circle¨¨mode¨ÉßE¨文本1¨ßG¨文本2¨ßJÉßMËßNËßO¨ButtonKey¨´x´Í´y´ÉßP|÷ßQÉ}{ßC¨deb¨ßTÉßJÉßMÑßNÌßO¨debug¨´x´É´y´Ë}÷¨actions¨|÷¨triggers¨|÷}


vincesketch 发表于 2021-7-15 14:34

绝了,FBI open the door

Xiazi 发表于 2021-7-17 21:06

本帖最后由 Xiazi 于 2021-7-18 10:30 编辑

请问一下可以接5V2A吗,3A电源有点难搞

wintsa 发表于 2021-8-9 13:14

有些迷惑,为什么要并联。。。。。。另外8266工作电压不是3v吗,你并联不会高负载吗

1812z 发表于 2021-8-9 15:32

wintsa 发表于 2021-8-9 13:14
有些迷惑,为什么要并联。。。。。。另外8266工作电压不是3v吗,你并联不会高负载吗 ...

不并联不知道为什么用不了,还要这种8266自带降压

wintsa 发表于 2021-8-9 16:25

1812z 发表于 2021-8-9 15:32
不并联不知道为什么用不了,还要这种8266自带降压

我用的esp32,也是不并联不行。。。。。。。一开始我以为是我电压电流给的不行

wintsa 发表于 2021-8-9 16:26

另外我的556r舵机,现在接的usb供电,只能90度。。。我有5v3a的dc,但esp32单片机不用usb编程供电就无法真唱正常使用。

1812z 发表于 2021-8-9 20:56

wintsa 发表于 2021-8-9 16:26
另外我的556r舵机,现在接的usb供电,只能90度。。。我有5v3a的dc,但esp32单片机不用usb编程供电就无法真 ...

没这个道理的,,线拆开强行接上就行

wintsa 发表于 2021-8-10 14:10

就是奇怪,我接esp32的vin和gcc,esp32亮灯不工作。用编程器的usb供电正常

chenhao189 发表于 2021-10-5 21:15

舵机用啥沾到门上的靠谱吗
页: [1] 2
查看完整版本: 【教程】小爱同学-ESP8266舵机开门