【好奇心驱动力】ESP8266驱动SG90舵机开关灯

本文讲述了作者使用ESP8266连接SG90舵机,通过BlinkerAPP远程控制舵机开关灯,介绍了实验方法、线路连接、程序烧录以及APP设置。过程中提到了ESP8266环境配置问题和舵机耐用性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.前言

ESP8266弄丢了好几个都忘记放在哪,重新买了个typeC接口的方便多了,看到驱动SG90舵机作为智能开关,简单复现了一下,代码比较简单,没有连接小爱同学或者其他语音助手。

1.实验方法

ESP8266连接SG90舵机,连接点灯科技APP(Blinker),远程控制舵机旋转角度,达到开关灯目的。

器材主要包括
ESP8266
SG90舵机(180度)–【推荐买SG90舵机360度】
手机APP

环境搭建
由于新换了台式机,导致arduino的环境需要重新配置,主要涉及8266库需要重新安装,找了一圈才找到一个可用的国内源,备份一下。

https://arduino.me/packages/esp8266.json

线路连接
SG90舵机
黄线–D4(GPIO2–可选其他接口)
红线–3V3
褐线–GND

在这里插入图片描述

程序烧录
内容比较简单,主要是连接WIFI,使用KEY连接BlinkerAPP,新建Blinker组件,定义组件功能
滑块功能比较鸡肋,可以删除,Blinker里好像没有可以调整固定值的按钮,所以前期可以使用滑块调整旋转角度用;初始设置为90°,90°时置于水平,这样0-180°方便调节角度。
开关灯都是固定角度,调整好就可以不用滑块的功能;这里设置的分别是40°和160°。

#include <Servo.h>
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Blinker.h>

char auth[] = "XXXXXXXXXXXX";   //key
char ssid[] = "XXXX";             //wifi名称
char pswd[] = "XXXXXXXX";      //wifi密码

Servo myservo;
// 新建组件对象
BlinkerButton Button1("btn-max");   //最大值按钮
BlinkerButton Button2("btn-min");   //最小值按钮
BlinkerButton Button3("btn-set");   //复位-90°
BlinkerSlider Slider3("ser-num");   //滑块

int servo_max,servo_min,servo_set,ser_num,time_num;

void button1_callback(const String & state) {    //最大值按钮功能
    BLINKER_LOG("get button state: ", servo_max);
    myservo.write(servo_max);
    Blinker.vibrate();
}

void button2_callback(const String & state) {   //最小值按钮功能
    BLINKER_LOG("get button state: ", servo_min);
    myservo.write(servo_min);
    Blinker.vibrate();
}

void button3_callback(const String & state) {   //重置按钮功能
    BLINKER_LOG("get button state: ", servo_set);
    myservo.write(servo_set);
    Blinker.vibrate();
}

void slider3_callback(int32_t value) //滑块功能
{
    ser_num = value;
    myservo.write(ser_num);
    Blinker.delay(500);
    BLINKER_LOG("get slider value: ", value);
}

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);
    Slider3.attach(slider3_callback);
    myservo.attach(2); //servo.attach():设置舵机数据引脚
    myservo.write(90);
    servo_max=160;
    servo_min=40;
    servo_set=90;
    time_num=2000;

}

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

APP设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.实验结果

在这里插入图片描述

3.实验总结

8266连接电脑后莫名反复重启,换了USB口解决问题
舵机塑料齿、塑料舵角不耐用,尤其是塑料舵角容易偏置
Blinker比巴法云方便,整体流程简化了不少,库也比较完善

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值