首页 > 其他分享 >sg90舵机+esp8266+点灯科技 小爱语音控制开关灯

sg90舵机+esp8266+点灯科技 小爱语音控制开关灯

时间:2023-08-06 15:44:18浏览次数:33  
标签:BLINKER esp8266 servo delay state 14 sg90 小爱 BlinkerMIOT

这是网上做烂了好几年的项目
好久前就看到了 今天实现下
关于智能开关 什么通断器+凌动开关 什么绿米开关不买单火控制
这些都不实际 原有家庭电路 如果真加上这些是一笔不小的开销
真要实现 建议从装修房子 布线家庭电路前就考虑好 避免二次加工
这里适合自己房间或学校寝室使用哈

演示

一、材料

  • esp8266 nodemcu ch340开发板 x1 13元
  • 塑料sg90舵机 x1 6元

二、工具

  • 焊笔 热熔胶

三、步骤

四、代码

#include <ArduinoOTA.h>

#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#define BLINKER_MIOT_LIGHT

#include <Blinker.h>
#include <Servo.h>

char auth[] = "你的点灯科技key";
char ssid[] = "你的wifi";
char pswd[] = "你的密码";
BlinkerButton Button1("ddl1"); //blinker按键键名
BlinkerButton Button2("ddl2"); //blinker按键键名
Servo servo_14;   //舵机输出口 GIPO14
bool oState = false;

//按键1按下后执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
   // digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    servo_14.write(45);  //舵机旋转角度 具体参数需要结合自身情况修改
    delay(1);           //给一个小延时
    delay(1000);   //舵机动作后延时一会回到初始位置
    servo_14.write(90); //设置该角度方便手动开关灯 就是开完灯舵机归位
}

//按键2按下执行该函数
void button2_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    servo_14.write(135);  //同上一样的思路
    delay(1);
    delay(1000);
    servo_14.write(90);  
}

//小爱电源回调函数
//里面同样设置舵机的动作
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);
    if (state == BLINKER_CMD_ON) {
       // digitalWrite(LED_BUILTIN, HIGH);
         servo_14.write(45);
         delay(1);
         delay(1000);
         servo_14.write(90);
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
      //  digitalWrite(LED_BUILTIN, LOW);
        servo_14.write(135);
         delay(1);
         delay(1000);
         servo_14.write(90);
        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
}



void miotQuery(int32_t queryCode)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("MIOT Query All");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("MIOT Query Power State");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        default :
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
    }
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();
    Blinker.print(BlinkerTime);
    Blinker.print("millis", BlinkerTime);
}


void setup()
{
    Serial.begin(115200);

    BLINKER_DEBUG.stream(Serial);

    // 初始化有LED的IO
    //这里初始话后没有调用板子自带的led
    pinMode(LED_BUILTIN, OUTPUT);
    servo_14.attach(14);
   
    
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    BlinkerMIOT.attachQuery(miotQuery);
    Blinker.attachData(dataRead);
    BlinkerMIOT.attachPowerState(miotPowerState);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);  
}

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

标签:BLINKER,esp8266,servo,delay,state,14,sg90,小爱,BlinkerMIOT
From: https://www.cnblogs.com/nanke-dream/p/17609481.html

相关文章

  • 【华秋推荐】物联网入门学习模块 ESP8266
    随着全球信息技术的不断进步和普及,物联网成为当今备受关注的技术热点之一。通过物理和数字设备之间的连接来实现自动化和互联互通的网络。无线传感器、云计算和大数据分析等技术,物联网使设备能够相互交流和共享信息,实现智能化的自动化操作。它连接着各种物体,实现物与物的互联互通......
  • 【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 8266sg90舵机+WPF上位机
    上位机可以通过串口控制舵机、蜂鸣器。示例:Esp8266部分基于Arduino,依赖库:U8g2、Servo。接线引脚看代码哈。#include<Arduino.h>#include<Servo.h>#include<U8g2lib.h>/***OLED引脚*/#defineSCL5/*时钟引脚*/#defineSDA4/*数据引脚*/#defineRES14......
  • ESP8266 获取新大陆温湿度光照模块值
    光照是ADC输出的,温湿度走的是I2C。光照直接采样用公式转换即可。光照接线图如下:参考代码(基于Arduino):voidsetup(){Serial.begin(9600);}floatVref=3.3;//参考电压floatR=100.0;//分压电阻阻值floatvalue=0;voidloop(){intsensorValue......
  • ESP8266、D1Mini用串口助手连接断开后就重启
    问题描述:用串口助手,连接断开后就板子重启,但是用Arduino调试工具、安可信串口助手都不会。串口芯片:CH340C解决:在上位机串口中不要勾选RTS。参考链接&原因:https://www.wch.cn/bbs/thread-69057-1.htmlC#串口通讯(RTS):https://www.cnblogs.com/luguangguang/p/8257165.html......
  • esp8266制作太空人天气时钟
    背景简单来说,就是最近太闲了,然后下班也无所事事,在B站上刷着一众up们的diy视频,一次又一次地激起了我应该做点啥的想法,于是在这一阵又一阵的激励下,我再次燃起了对diy硬件的兴趣,于是我便又一次把自己年前买到的一些硬件翻出来,开始自己的新一轮arduino之旅。材料准备本次项目的总......
  • esp8266无线小车
    项目简介本项目是基于esp8266实现的无线小车控制,核心的原理是通过js与esp8266进行websocket通信,前端页面模拟操作摇杆,生成操作数据,然后通过websocket通信将控制数据发送至esp8266,实现小车的无线控制准备工作硬件材料用到的材料如下:esp8266开发板L9110电机驱动板双马达小车......
  • 树莓派和esp8266之间使用tcp协议通信
     树莓派代码:fromflaskimportFlask,render_templateimportsocketimportthreadingapp=Flask(__name__)adc_value=0#接收tcp数据defreceive_tcp_data():globaladc_value#从ESP8266接收ADC数据sock=socket.socket(socket.AF_INET,socket......
  • 树莓派和esp8266在局域网下使用UDP通信,esp8266采集adc数据传递给树莓派,树莓派在web上
    树莓派和esp8266需要在同一局域网下esp8266使用arduino开发:接入一个电容土壤湿度传感器,采集湿度需要使用adc#include<ESP8266WiFi.h>#include<WiFiUdp.h>constchar*ssid="litianmenzhenbu";constchar*password="LT12345678";constchar*serverIp="192.......
  • 用esp8266开发板制作WiFi Killer
    一、esp8266开发板获取【ESP8266串口wifi模块NodeMCULuaV3物联网开发板CH340】我是用的这个,某宝可购买,14元左右,这个是使用的CH340串口芯片的。还有一种在某宝上可以看到是使用的CP21x型号的芯片的,这里两种都可以的。二、安装驱动以自己的开发板上的串口芯片的型号为准,按需选......