宿舍远程关灯神器 低成本 ESP8266 WIFI+舵机+blinker(无需改装电路)

1 篇文章 0 订阅
1 篇文章 0 订阅

小白20元搞定宿舍关灯,ESP8266做宿舍关灯神器,物理关灯(不改装电路)关灯不求人。

一、材料清单

esp8266MCU开发板一块(10元左右)。

sg50舵机一个(6元左右)。

数据线一根

公转母杜邦线3根(2元)

充电宝或者220v转5V充电器一根。

二、Arduino IDE配置ESP8266环境 

下载Arduino,官网:Arduino - Home

首先从 Arduino 官网 下载最新版本的 Arduino IDE 软件并安装。

点击software

下滑找到红框

安装完成以后,进入首选项(Preferences),找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:  

http://arduino.esp8266.com/stable/package_esp8266com_index.json

再点击确定(OK);


之后点击工具 - 开发板 - 开发板管理器,进入开发板管理器界面:


然后进行如下操作,因不能截图,所以只能手机拍下来。端口选择COM3或者COM5一般只会跳出一个,试一下,如果端口没选对的话上传会显示"COMX不成功"

选择NodeMcu1.0(esp-12E Module)
软件就配置完成了。接下来进行接线。接好之后插入电脑,拷贝代码,准备下载代码,将需要更改的地方更改。代码仅有三个地方需要修改,分别填入对应的。wifi名称不要有中文和空格,如果使用热点需要设为2.4G频。

三、WIFI配置

(char auth[] = "";   //!key!  代码需更改的地方

char ssid[] = "";             //!wifi名称!

char pswd[] = "";      //!wifi密码!)


所以我们设置的GPIO5就是我们的D1端口

接下来进行烧录,硬件连接

这里再说一下我们的舵机接线问题:
在我手上的小舵机有三根线:棕色、红色以及黄色
黄色线为数据线,接我们数据引脚D1
红色为正极:接正极供电
棕色为负极:接负极接地

四、点灯科技设置

之后手机打开点灯科技,

点灯科技APP设备的按钮设置
进入我们的设备

以下是我设置好的按钮和滑块:

黑色框起来的地方与代码一一对应
可以看到有三个按钮,四个滑块,具体怎么设置呢?
三个按钮我们都以下为模板设置:
数据键名和文本名称都在我们代码头部注释了,大家注意一下。
可以看到我设置的键名为btn-max,文本名称为位置1。

最后一个,循环时间的滑块设置,其实和前面三个滑块的设置一样,设置文本名称以及对应的数据键名。但是,这里的最大值最小值可以根据自己的需求来的,它代表的是循环的间隔时间,单位为毫秒。我设置了0-2000,最大的时候间隔时间为2000毫秒。

五、接线

接线图:

设备在线以后我们进入我们设置好的控制界面
将位置2的滑块设置到一下位置,再点击位置2的按钮,可以看舵机转动了。 

六、附录(代码)

#include <Servo.h>
#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "";   //!key!  代码需更改的地方
char ssid[] = "";             //!wifi名称!
char pswd[] = "";      //!wifi密码!

// 新建组件对象
BlinkerButton Button1("btn-max");   //位置1 按钮 数据键名
BlinkerButton Button2("btn-min");   //位置2 按钮 数据键名
BlinkerButton Button3("btn-pw");    //循环模式 按钮 数据键名  开关模式
Servo myservo;
BlinkerSlider Slider1("max-num");   //位置1 滑块 数据键名  范围1-180
BlinkerSlider Slider2("min-num");   //位置2 滑块 数据键名  范围1-180
BlinkerSlider Slider3("ser-num");   //实时位置 滑块 数据键名  范围1-180
BlinkerSlider Slider4("time-num");  //循环模式间隔时间 滑块 数据键名 范围单位毫秒

bool xunhuan_mode = false;

int servo_max,servo_min,ser_num,time_num;

void button1_callback(const String & state) {    //位置1按钮
    BLINKER_LOG("get button state: ", servo_max);
    myservo.write(servo_max);
    Blinker.vibrate();
}

void button2_callback(const String & state) {   //位置2按钮
    BLINKER_LOG("get button state: ", servo_min);
    myservo.write(servo_min);
    Blinker.vibrate();
}

void button3_callback(const String & state) {    //位置3按钮  开关模式
   // Blinker.vibrate();
    if(state == "on"){
      xunhuan_mode = true;
      Button3.print("on");
      Blinker.delay(100);
    }else if (state == "off"){
      xunhuan_mode = false;
      Button3.print("off");
      Blinker.delay(100);
    }
}


void slider1_callback(int32_t value)
{
    servo_max = value;
    Slider1.color("#1E90FF");
    Slider1.print();

    BLINKER_LOG("get slider value: ", value);
}

void slider2_callback(int32_t value)
{
    servo_min = value;
    Slider2.color("#FFF8DC");
    Slider2.print();
    BLINKER_LOG("get slider value: ", value);
}

void slider3_callback(int32_t value)
{
    ser_num = value;
    myservo.write(ser_num);
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}


void slider4_callback(int32_t value)
{
    time_num = value;
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}

void xunhuan(){
     myservo.write(servo_max);
     Blinker.delay(time_num/2);
     myservo.write(servo_min);
     Blinker.delay(time_num/2);
}

void setup() {

    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Slider1.attach(slider1_callback);
    Slider2.attach(slider2_callback);
    Slider3.attach(slider3_callback);
    Slider4.attach(slider4_callback);
    myservo.attach(5);    //servo.attach():设置舵机数据引脚
    myservo.write(10);    //servo.write():设置转动角度
    servo_max=70;
    servo_min=120;
    time_num=500;

}

void loop() {

  Blinker.run();
  if(xunhuan_mode==true){
    xunhuan();
  }

} 
  • 17
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值