ESP32控制舵机转动,使用blinker实现远程开关宿舍灯/宿舍门

ESP32控制舵机转动,使用blinker实现远程开关宿舍灯/宿舍门

准备

杜邦线若干条(至少3条)

舵机一个,我使用的是SG90,大概扭力为1.4kg/cm

ESP32/ESP8266一块,我的是乐鑫的,带WIFI模块,大概30RMB

USB数据线一条

ESP32使用servo库会出现编译问题,架构不匹配,所以我这里直接使用pwm进行舵机的控制,你也可以使用ESP8266直接使用servo库控制舵机,方便很多,或者使用ESP32的舵机库(arduino的库管理器中可以找到)

连线

很多人可能接触开发板时间不长(比如说我),我就是最开始连线都不知道怎么接,网上给出完整接法的挺少的:

舵机直接连接ESP32:需要准备3条公母杜邦线,

先上一张ESP32引脚图

image

image

我们将黄色接GPIO16,黑色(咖啡色)接地(GND),红色接5v电源(Vin)

插上数据线连接电脑

手机和开发板通信

通过blinker向开发板发送Json格式的指令,由开发板通过blinker解析后执行相应的callback(回调)函数

下载blinker 的APP,添加设备即可

image

添加设备并选择服务器供应商后,会给出设备专属的密钥,保存之后有用

完整代码

#define BLINKER_WIFI 
#include <Blinker.h> 


char auth[] = "";//点灯秘钥
char ssid[] = "";//无线网名称
char pswd[] = "";//无线网密码

int freq = 50;     
int channel = 8;   
int resolution = 8; 
const int led = 16;


BlinkerButton Button1("btn-max"); 
BlinkerButton Button2("btn-min"); 
int servo_max=180,servo_min=90;

int calculatePWM(int degree)
{ 
  const float deadZone = 6.4;
  const float max = 32;
  if (degree < 0)
    degree = 0;
  if (degree > 180)
    degree = 180;
  return (int)(((max - deadZone) / 180) * degree + deadZone);
}

void button1_callback(const String & state)    
{    
  BLINKER_LOG("get button state: ", servo_max); 
  ledcWrite(channel, calculatePWM(180));  
  Blinker.vibrate();  
} 
void button2_callback(const String & state)   
{         
  BLINKER_LOG("get button state: ", servo_min);  
  ledcWrite(channel, calculatePWM(90));
  Blinker.vibrate();    
}

void setup()    
{   
  Serial.begin(9600);   
  ledcSetup(channel, freq, resolution); // 设置通道
  ledcAttachPin(led, channel);          // 将通道与对应的引脚连接
  BLINKER_DEBUG.stream(Serial);    
  Blinker.begin(auth, ssid, pswd); 
  Button1.attach(button1_callback);   
  Button2.attach(button2_callback);     
}

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

上面的三个字符串分别写入自己的密钥和WiFi,在宿舍没WiFi的直接开手机热点

烧录程序,别忘了在烧录之前或之后打开WiFi,烧录结束我们的开发板就会连接上我们的WiFi

我们在程序中设置了两个Button,分别为btn-max,btn-min

在blinker的设备中也做相应的配置:

进入自己的设备

image

点击右上角可以对布局和按键功能等做出配置

image

配置结束后

我们就可以测试我们的程序:
在确保设备连接上WiFi后(可以在arduino的串口监控中查看具体发来的信息和WiFi连接情况)

现在点击开灯/关灯,舵机就会随之转动

使用它开关等的最简单方式就是

(🤦‍♂️)把他绑在宿舍灯开关的旁边,通过转动,让舵机对灯的开关施加压力实现开关灯

虽然有点捞,但是起码不用下床开门关灯了,可喜可贺

  • 21
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
好的,我可以帮你解答这个问题。首先,你需要准备一个ESP32开发板和一盏普通的。然后,你需要使用ESP32的GPIO接口来控制开关。下面是一些基本的步骤: 1. 将ESP32连接。将一个导线连接到ESP32的GPIO输出引脚,另一个导线连接到的正极。将的负极连接到ESP32的地线。 2. 编写代码。你可以使用Arduino IDE或其他编程工具编写代码。以下是一个简单的示例代码,它使用ESP32的GPIO 2控制开关: ``` // 导入ESP32的库 #include <WiFi.h> // 设置GPIO引脚号 const int ledPin = 2; void setup() { // 初始化GPIO pinMode(ledPin, OUTPUT); // 连接WiFi网络 WiFi.begin("your_SSID", "your_PASSWORD"); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void loop() { // 读取从串口发送的命令 if (Serial.available()) { char cmd = Serial.read(); // 如果命令是 '1',则打开 if (cmd == '1') { digitalWrite(ledPin, HIGH); Serial.println("LED on"); } // 如果命令是 '0',则关闭 else if (cmd == '0') { digitalWrite(ledPin, LOW); Serial.println("LED off"); } } delay(100); } ``` 3. 上传代码。将代码上传到ESP32开发板中,并确保连接到WiFi网络。 4. 控制开关。打开串口监视器,并输入 '1' 打开,输入 '0' 关闭。 这是一个简单的ESP32智能控制开关的方法。当然,你可以根据实际需求进行更复杂的控制。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值