【教程】小爱同学-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¨|÷}
绝了,FBI open the door 本帖最后由 Xiazi 于 2021-7-18 10:30 编辑
请问一下可以接5V2A吗,3A电源有点难搞 有些迷惑,为什么要并联。。。。。。另外8266工作电压不是3v吗,你并联不会高负载吗 wintsa 发表于 2021-8-9 13:14
有些迷惑,为什么要并联。。。。。。另外8266工作电压不是3v吗,你并联不会高负载吗 ...
不并联不知道为什么用不了,还要这种8266自带降压 1812z 发表于 2021-8-9 15:32
不并联不知道为什么用不了,还要这种8266自带降压
我用的esp32,也是不并联不行。。。。。。。一开始我以为是我电压电流给的不行 另外我的556r舵机,现在接的usb供电,只能90度。。。我有5v3a的dc,但esp32单片机不用usb编程供电就无法真唱正常使用。 wintsa 发表于 2021-8-9 16:26
另外我的556r舵机,现在接的usb供电,只能90度。。。我有5v3a的dc,但esp32单片机不用usb编程供电就无法真 ...
没这个道理的,,线拆开强行接上就行 就是奇怪,我接esp32的vin和gcc,esp32亮灯不工作。用编程器的usb供电正常 舵机用啥沾到门上的靠谱吗
页:
[1]
2