esp32 nodemcu-32 结合blinker 宿舍关灯

发布于:2022-11-28 ⋅ 阅读:(424) ⋅ 点赞:(0)

人在宿舍,不想关灯,于是开始试着搞一个远程关灯。

原本打算用esp8266,问了一些学长,后来买了esp32 nodemcu-32 v1.3

用Arduino IDE写的,打算连接blinker之后用手机app控制。

软件部分

1.配置Arduino IDE

Arduino IDE里有现成的blinker库,只需要搜索 安装 就可以了(出现蓝色的installed就可以了)

 还需要安装esp32控制舵机的库,同样在库管理器中搜索 ESP32Servo 这个库,安装它。

esp32这个板子还要装一个什么(我不知道是什么总之运行一下就好了)

链接:https://pan.baidu.com/s/1P05yN0o5paZOr_vAhguYDA?pwd=ssss 
提取码:ssss

之后在开发板里能看见esp32就好啦

2.手机端app

去点灯科技官网点灯科技 (diandeng.tech)下载Blinker app。添加设备,选 独立设备,网络接入

这时候复制一下密钥,一会儿需要粘到代码里。之后点进新的设备,选择右上角编辑模式,新建一个按钮。也可以顺便加一个 调试 ,方便看连接状态。(图是新建的按钮,名称可以自己订)

关于blinker的用法点灯的官网也有样例。

 

 3.连接wifi

我们学校的校园网需要登陆学生账号,不过没关系,可以在宿舍插一个路由器,输入自己寝室路由器的名称和密码,这样就应该可以正常连接wifi了。(密钥如果忘复制了就点右上角三个点)

char auth[] = " ";//密钥
char ssid[] = " ";//WiFi的名称
char pswd[] = " ";//wifi密码

全部代码:

#define BLINKER_WIFI
#include<Blinker.h>
#include <ESP32Servo.h>//头文件要是报错应该是库没加上

const int servoPin = 13;//是舵机的引脚

char auth[] = "4c*******5";//密钥
char ssid[] = "C******";//wifi名称
char pswd[] = "3*****";//WiFi密码

Servo myservo;
BlinkerButton Button1("btn");//绑定上自己在手机端新建的那个按钮

void button1_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  myservo.write(30);//舵机转到30度(角度按自己实际情况改
  delay(500);
  myservo.write(0);//让舵机复位
  }

void setup()
{
  Serial.begin(115200);
  myservo.attach(servoPin);

  BLINKER_DEBUG.stream(Serial);
  Blinker.begin(auth, ssid, pswd);
  //Blinker.attachData(dataRead);//不知道干嘛用的,貌似没什么用
  Button1.attach(button1_callback);//将函数绑在按钮上
}

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

硬件部分

上图

 用充电宝供电的,没有问题。

舵机力量不是很大,有可能拍不动开关,所以只做了关灯的。

避雷

如果一直打不开COM口,可能是因为数据线不是数据线而是充电线,比如我换了三根,很不巧的全是充电线……

A fatal error occurred: Packet content transfer stopped (received 8 bytes)这个迷惑报错是因为我把舵机应该插到GND的线插到了CWD(5v旁边的引脚)

舵机不要接到34-39口,他们是仅输入不能输出,换成13什么的就行了

不要靠近360°舵机,会变得不幸。它的控制方法和180°不一样。360的不能控制角度,只能以一定速度正转或反转。所以许多函数库也不能用,不过如果实在不想重买也不会写pwm的话,可以用角度算占空比之后放delay实现开关灯。180°的舵机角度和占空比的关系是这样的:

0.5ms----------------0度;

1ms -----------------45度;

1.5ms----------------90度;

2ms -----------------135度;

2.5ms ---------------180度;

而360的是

0.5ms----------------正向最大转速;

1.5ms----------------速度为0;

2.5ms----------------反向最大转速;

所以即使用了180的函数库,只要输入90就对应了1.5ms,也就对应了360°的速度为0。以此类推,只要输入角度大于90度就是反向转,小于90°就是正向,离90越远速度越快,但是角度很不准,几次下来就偏了。(所以最后的最后我又重新买了180的舵机orz

然鹅现在宿舍到点儿断电熄灯,已经不再需要上床关灯……

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到