使用ESP8266与小爱同学通过Arduino控制舵机

一、硬件

名称 数量 ESP8266开发板 1 Arduino UNO 1 MG995舵机 1 杜邦线 若干

二、开发环境配置

本实验通过Arduino IDE调用Blinker提供的SDK实现 IDE下载地址https://www.arduino.cc/en/Main/Software SDK下载地址https://diandeng.tech/doc/sdk-download IDE安装教程与SDK安装其官网都提供详细的说明,故在此不作赘述 另外我们需要在IDE添加ESP8266信息 过程如下: 1、在IDE界面同时按Ctrl+, 会弹出“首选项”弹窗 2、在附加开发板管理网址处输入http://arduino.esp8266.com/stable/package_esp8266com_index.json 3、工具->开发板->开发板管理器,搜索ESP8266安装如下图的开发板 4、安装完成后选择ESP8266开发板就好了

三、接线

电源就不赘述了

四、代码

UNO代码

#include <Servo.h>

Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量
int key = 2;//D2口接收ESP8266的信号
int keypin;
void setup() {
          
   
  myservo.attach(9);  // 控制线连接数字9
  pinMode(key, INPUT);
  digitalWrite(key, LOW);
  Serial.begin(115200);
}

void loop() {
          
   
  keypin = digitalRead(key);
  if (keypin == HIGH)
  {
          
   
    for (; pos <= 180; pos++)
    {
          
   
      myservo.write(pos);              // 舵机角度写入
      delay(5);                       // 等待转动到指定角度
    }

  }
  else {
          
   
    for (; pos >= 0; pos--)
    {
          
   
      myservo.write(pos);              // 舵机角度写入
      delay(5);                       // 等待转动到指定角度
    }

  }
}

ESP8266代码

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#define BLINKER_PRINT Serial
#include <Blinker.h>

char auth[] = "abcdefghijkl"; //上一步中在app中获取到的Secret Key
char ssid[] = "abcdefg"; //你的WiFi热点名称
char pswd[] = "123456789"; //你的WiFi密码

#define GPIO 16//ESP8266 D1口即为GPIO16,我们将通过D1电平输出控制UNO

#define BUTTON_1 "ButtonKey"


BlinkerButton Button1("key1");
void button1_callback(const String & state)
{
          
   
    BLINKER_LOG("get button state: ", state);
    digitalWrite(GPIO,!digitalRead(GPIO));
    Blinker.vibrate(); 
}



void miotPowerState(const String & state)
{
          
   
    BLINKER_LOG("need set power state: ",state);

    if (state == BLINKER_CMD_OFF)
    {
          
   
        digitalWrite(GPIO, LOW);//当对小爱说“关灯”时D1输出低电平,舵机置为0度

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_ON) {
          
   
        digitalWrite(GPIO, HIGH);//当对小爱说“开灯”时D1输出高电平,舵机置为180度

        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
}


void setup() {
          
   
    Serial.begin(115200);
    pinMode(GPIO,OUTPUT);
    digitalWrite(GPIO,LOW);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);


}

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

1.打开米家App。通过 我的>其他平台设备>点击添加>点灯科技>绑定账号 ,绑定blinker账号 2.绑定成功后,支持小爱控制的blinker设备会出现在 我的>其他平台设备>点灯科技 设备列表中 3.现在可以使用小爱控制该设备了 更加详细的教程请阅读官方文档配置好ESP8266 https://diandeng.tech/doc/getting-start-8266 配置好后就可以试着对小爱说“开灯”“关灯”来控制舵机了在寝室这种不能够改造开关的环境下或许使用舵机来代替手工按开关是最可行的点灯物联网方案

经验分享 程序员 微信小程序 职场和发展