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

准备

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

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

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

USB数据线一条

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

连线

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

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

先上一张ESP32引脚图

esp32 小车控制 esp32控制灯_嵌入式

esp32 小车控制 esp32控制灯_wifi_02

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

插上数据线连接电脑

手机和开发板通信

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

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

esp32 小车控制 esp32控制灯_wifi_03

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

完整代码

#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的设备中也做相应的配置:

进入自己的设备

esp32 小车控制 esp32控制灯_嵌入式_04

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

esp32 小车控制 esp32控制灯_wifi_05

配置结束后

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

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

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

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