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


    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 
    #define BLINKER_WIFI
    #define BLINKER_MIOT_OUTLET
    #include 
    
    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();
      
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

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

    2.实验结果

    在这里插入图片描述

    3.实验总结

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

  • 相关阅读:
    Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新
    最全分布式面试题整理
    IDEA 设置提示信息
    STM32前言知识总结
    百度/迅雷/夸克,网盘免费加速,已破!
    关于我的项目-微信小程序2(uniapp->wx小程序)
    使用SSH ,让windows和linux互通
    MYSQL的存储过程
    树的基本术语
    预计2023年交付35万台,增速超400%!HUD硬核玩家强势崛起
  • 原文地址:https://blog.csdn.net/m0_46622606/article/details/134484345