基于ESP8266+点灯科技+小爱同学控制开门解决方案!

前言

每次下班回到家就已经很累了,到门口还要到处翻找钥匙,然后开门,是不是觉得很烦,那我们有没有不用通过钥匙开门且成本低的方案了?下面我会教大家基于ESP8266+点灯科技+小爱同学来控制开门的方法

一、准备工作

1、硬件材料

①、ESP8266开发板(均价13R)
②、SG90 MG90S 9g舵机(均价12R)
③、电源模块 5V (均价2R)
④、杜邦线(母头和公对母)、DC 5.5x2.1 DC005转接头(公头)、电池盒-5号4节 (均价8R)
⑤、紫米电池一盒*10 (均价13R)
⑥、小爱音响 (均价不等,只要支持小爱同学即可,如果手机是小米的,也可以不用购买小爱音响)

  • 以上东西都可以通过淘宝购买
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

2、APP软件安装

①.注册小米账号,并登录米家

  • 米家APP下载,下载完成后,注册小米账号,并登录

②注册点灯科技APP,并获取key

  • 点灯科技APP下载,下载地址:link,选择适合自己的平台版本
    在这里插入图片描述
  • 安装完成后,注册APP,注册完成后,输入账号密码登录,进入首页
  • 点击右上角“+”,选择点灯-独立设备
  • 选择网络接入,记住key,后面会用到

3、开发arduino环境搭建

①、arduino安装
下载链接: link
win10电脑版本直接下载:链接: link
在这里插入图片描述

  • 解压,并运行

在这里插入图片描述
②、环境部署

1)添加esp8266开发板到arduino IDE里

  • 点击 文件 - 首选项
    在这里插入图片描述
  • 添加开发板,复制地址到红框中,然后点击 好:http://arduino.esp8266.com/stable/package_esp8266com_index.json
    在这里插入图片描述
  • 点击工具 - 开发板 - 开发板管理器,然后点击安装(因为服务器在国外下载可能会出现异常,尽量多试几次,或者fq下载)
    在这里插入图片描述
  • 安装完成后,选择工具 - 开发板… - ESP8266… - Generic ESP8266 Module
    在这里插入图片描述

2)添加点灯科技的库

  • 点灯科技库下载地址:link

在这里插入图片描述

  • 导入库
    在这里插入图片描述

二、上传代码

1、连接开发板

  • 开发板通过USB连接电脑,点击工具 - 端口,选择开发板端口

    注:有时候开发板连接电脑后,端口可能会没有或者时有时无,这个时候我们就需要先按住flash别松手,然后接入USB,再按下rst就可以了(重新操作后,需要重新打开工具选择端口才可以,页面不会自动刷新)
    在这里插入图片描述

2、上传代码

  • 复制代码到编辑器中,以下代码从网上找的,并进行了一些修改,各位可自行优化。
#include <Servo.h> 

#define BLINKER_WIFI //WIFI
#define BLINKER_MIOT_OUTLET //米家插座类型

#include <Blinker.h>

char auth[] = ""; //点灯科技设备KEY
char ssid[] = "";  //WIFI名称-只支持2.4G
char pswd[] = ""; //WIFI密码

// 新建组件对象
BlinkerButton Button1("btn-max");   //位置1 按钮 数据键名
Servo myServo;  // 定义Servo对象来控制

int pos = 0;    // 角度存储变量

//小爱控制
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);
	//对小爱同学说“开门”
    if (state == BLINKER_CMD_ON) {
        digitalWrite(LED_BUILTIN, HIGH);

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

        for (pos = 0; pos <= 150; pos ++) { // 0°到150°
            myServo.write(pos);              // 舵机角度写入
            delay(15);                       // 等待转动到指定角度
        } 
        delay(500);//延时0.5s

        for (pos = 150; pos >= 0; pos --) { // 从150°到0°
            myServo.write(pos);              // 舵机角度写入
            delay(15);                       // 等待转动到指定角度
        }
        delay(500);//延时0.5s 
        
     }
	//对小爱同学说“关门”
     else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, LOW);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();

        for (pos = 0; pos <= 180; pos ++) { // 0°到180°
            myServo.write(pos);              // 舵机角度写入
            delay(15);                       // 等待转动到指定角度
        } 
        delay(1000);//延时1s

        for (pos = 180; pos >= 0; pos --) { // 从180°到0°
            myServo.write(pos);              // 舵机角度写入
            delay(15);                       // 等待转动到指定角度
        }
        delay(1000);//延时1s 
         
    }
}

//位置1 按钮
void button1_callback(const String & state) {
  for (pos = 0; pos <= 150; pos ++) {   // 0°到150°
    myServo.write(pos);                 // 舵机角度写入
    delay(15);                          // 等待转动到指定角度
  } 
  delay(500);//延时0.5s

  for (pos = 150; pos >= 0; pos --) {   // 从150°到0°
    myServo.write(pos);                 // 舵机角度写入
    delay(15);                          // 等待转动到指定角度
  }
  delay(500);//延时0.5s 
}

void setup() {
   // 初始化串口
  Serial.begin(115200);    
  BLINKER_DEBUG.stream(Serial);
  Blinker.begin(auth, ssid, pswd);
  Button1.attach(button1_callback);

  //绑定小爱电源控制
  BlinkerMIOT.attachPowerState(miotPowerState);

  //初始化舵机
  myServo.write(0);  //首次上电,舵机角度恢复到0°
  myServo.attach(14); //控制线-D5
}

void loop() { 
  Blinker.run();
}
  • 点击上传,上传成功后,会有提示

在这里插入图片描述

三、线路部署

  • 按如下部署线路

在这里插入图片描述

四、绑定

1、点灯app页面设置

①、打开点灯科技APP,点击首页新的设备,跳过配置向导 - 点击右上角编辑 - 添加按钮
在这里插入图片描述
②、点击按钮,编辑按钮信息,红框中是上面代码的函数名,信息编写好以后,点击右上角“确定”
在这里插入图片描述
③、按钮添加成功后,点击锁定
在这里插入图片描述

④、修改设备名称,点击“…”编辑,名称更改为“门”
在这里插入图片描述

在这里插入图片描述
⑤、设备在线后,我们点击“开门”按钮,查看舵机是否正常运行。
在这里插入图片描述

2、绑定小爱同学

①、打开米家APP - 我的 - 其他平台设备 - 点击添加,找到点灯科技,绑定账号,这样我们就绑定成功了,下面可以喊小爱同学“开门”,就可以看见舵机执行了。

<think>好的,我现在需要帮助用户解决如何使用ESP8266结合点灯科技平台和阿里云来控制舵机完成开门操作的问题。首先,我要理清用户的需求,他们希望将ESP8266绑定到阿里云,并通过云端控制舵机,比如用于智能门锁的开关。接下来,我需要结合用户提供的三个引用内容,分析现有的信息,并补充可能缺失的步骤。 首先,用户提供的引用中,引用[1]提到在Arduino IDE中添加点灯科技的库文件,并通过点灯科技APP控制舵机。引用[3]提到ESP8266 12F使用点灯科技APP控制两个舵机,并指出舵机连接的GPIO引脚。引用[2]则涉及使用小爱同学点灯科技控制舵机,但没有直接提到阿里云。因此,用户的问题需要将点灯科技与阿里云集成,这可能涉及到阿里云的物联网平台设置,以及如何将点灯科技的数据转发到阿里云。 接下来,我需要考虑如何将点灯科技与阿里云绑定。点灯科技(Blinker)本身可能支持与第三方云平台的对接,或者需要通过API或MQTT协议将数据发送到阿里云。用户需要先在阿里云物联网平台创建设备,获取三元组(ProductKey、DeviceName、DeviceSecret),然后在ESP8266的代码中配置这些信息,同时确保点灯科技APP能够将控制指令通过阿里云传递到设备。 可能的步骤包括: 1. 在阿里云物联网平台注册并创建产品、设备,获取连接信息。 2. 在Arduino IDE中配置ESP8266,安装必要的库(如Blinker库、阿里云IoT SDK)。 3. 编写代码,使得ESP8266同时连接到点灯科技和阿里云,并处理来自云端的指令。 4. 测试舵机控制,确保通过阿里云发送指令时,ESP8266能正确驱动舵机。 需要检查点灯科技是否原生支持阿里云,或者是否需要通过自定义的MQTT客户端来实现。如果Blinker库本身不支持直接连接阿里云,可能需要同时使用两个库,或者修改Blinker的代码以支持阿里云的协议。另外,舵机的控制部分已经由引用[3]给出示例,需要整合到阿里云的通信逻辑中。 可能遇到的问题包括网络连接的稳定性、库之间的兼容性、阿里云鉴权配置的正确性。需要确保ESP8266能够同时处理来自两个云服务的连接,或者在必要时选择其中一种作为中介,比如通过点灯科技转发指令到阿里云,或者反之。 总结步骤应该是:配置阿里云设备→在Arduino中设置ESP8266连接阿里云和点灯科技→整合舵机控制代码→测试云端指令。此外,用户可能需要编写一个服务,将点灯科技接收到的指令转发到阿里云,或者直接在ESP8266上实现双云连接,但后者可能复杂一些。需要查阅相关文档,确认点灯科技是否支持阿里云集成,或者是否有现有的案例可供参考。</think>以下是通过ESP8266结合点灯科技与阿里云控制舵机的分步指南: --- ### **步骤1:硬件与软件准备** - **硬件清单** - ESP8266开发板(如NodeMCU)[^2] - SG90舵机(180度,用于模拟开门动作) - 5V电源(充电宝或适配器) - 杜邦线(连接舵机与ESP8266) - **软件安装** 1. 安装Arduino IDE并添加ESP8266支持[^2] 2. 安装点灯科技库:通过`Sketch > Include Library > Manage Libraries`搜索`Blinker`安装[^1] 3. 安装阿里云IoT SDK:下载阿里云物联网平台的Arduino SDK(需从阿里云官网获取)[需补充] --- ### **步骤2:阿里云物联网平台配置** 1. **注册与创建产品** - 登录[阿里云物联网平台](https://iot.console.aliyun.com/) - 创建产品(如“智能门锁”),选择“Wi-Fi直连”协议[需补充] 2. **添加设备** - 在产品下创建设备,记录**三元组**(ProductKey、DeviceName、DeviceSecret)[需补充] --- ### **步骤3:ESP8266代码配置** ```cpp #include <Blinker.h> #include <AliyunIoTSDK.h> // 需安装阿里云SDK // 阿里云配置 #define PRODUCT_KEY "your-product-key" #define DEVICE_NAME "your-device-name" #define DEVICE_SECRET "your-device-secret" // 点灯科技配置 char auth[] = "点灯APP分配的密钥"; // 从Blinker APP获取 // 舵机引脚定义 Servo myservo; int servoPin = D0; // 根据引用[3],舵机接GPIO16(NodeMCU的D0) void setup() { Serial.begin(115200); // 初始化点灯科技 Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str()); Blinker.attachData(dataRead); // 数据接收回调 // 初始化阿里云 AliyunIoTSDK::begin(nullptr, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET); AliyunIoTSDK::bindData("DoorSwitch", onDoorCommand); // 绑定云平台属性 // 初始化舵机 myservo.attach(servoPin); myservo.write(0); // 初始位置为关门 } void loop() { Blinker.run(); AliyunIoTSDK::loop(); // 维持阿里云连接 } // 阿里云指令处理 void onDoorCommand(JsonVariant data) { int angle = data["value"].as<int>(); myservo.write(angle); // 控制舵机转动(如0°关门,90°开门) } // 点灯科技数据接收(可选双向同步) void dataRead(const String &data) { // 若需同步点灯APP与阿里云状态,可在此添加逻辑 } ``` --- ### **步骤4:点灯科技APP与阿里云联动** 1. **点灯APP配置** - 在APP中添加设备,选择“Wi-Fi接入”,输入ESP8266的授权码(`auth[]`)[^1] - 添加按钮控件,绑定数据点(如“DoorSwitch”) 2. **阿里云规则引擎设置** - 在物联网平台创建规则,将点灯APP的数据转发到阿里云设备[需补充] - 或直接通过阿里云APP/API发送指令控制设备 --- ### **步骤5:舵机接线与测试** - **接线说明** - 舵机信号线 → ESP8266的D0(GPIO16,见引用[3]) - 舵机VCC → 5V电源正极 - 舵机GND → 与ESP8266共地 - **测试流程** 1. 上传代码至ESP8266 2. 通过阿里云物联网平台发送指令`{"DoorSwitch":90}`,观察舵机是否转动到开门角度 --- ### **常见问题** 1. **阿里云SDK编译报错** - 确保已正确安装依赖库(如ArduinoJson、Crypto) 2. **舵机无反应** - 检查电源是否独立供电(避免ESP8266电流不足) - 验证GPIO引脚定义是否与代码一致[^3] ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值