利用小爱同学与点灯科技+esp8266+舵机,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。(亲测有用)

利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。

文章目录

    • 利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。
      • 1.材料清单
        • 1.1Esp8266串口WiFi模块
        • 1.2 sg90舵机 我买的一个 180度的(控制开关)
        • 1.3电源(充电宝或其它电源,我建议电宝)。
      • 2.官网下载Arduino IDE
        • 2.1 网址
        • 2.2 点击这里可以下载软件
        • 2.3 注册后 点击浏览器端下载
        • 2.4 找到下载好的安装包 双击运行
        • 2.5 切换为中文模式
        • 2.6 回到之前的网站 点击离线安装包
        • 2.7 复制这个网址
        • 2.8 粘贴到这里
        • 2.9 点击历史版本下载
        • 2.10 下载这个
        • 2.11 将下载好的安装包解压
        • 2.12 重要步骤一定要看
            • 用户名这这里如果有中文 安装3.0.2 英文 安装 3.0.1 版本 双击安装![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e1590d1ac4694bd5ac8f02e28049b5a2.png)
      • 3.将 Esp8266串口WiFi模块 和 sg90舵机 安装好
        • 3.1 按照第一个图片安装就好
        • 3.1 (可以忽略) 按照第一个图片安装就好 红线条 接5v VU 棕 GND 黄色 D4
        • 3.2 线接好后, 把usb插到电脑上 ,usb线条 要有数据传输功能 ,电脑端的插头也要支持 传输数据多换几个地方插入
      • 4.把代码上传到 esp8266 开发板 这里我提供两套代码,
        • 4.1 这个代码 适合家里的灯, 开 关 开 关 开 ,是最亮的开关的
        • 4.2 代码2 适合 开关是 开一次就是亮的灯
        • 4.3 上面代码的无线网 账号密码 需要选这种 名字结尾不带5G 的网
        • 4.4 代码里面的点灯app key 获取方式 步骤见下面图片
        • 4.5配置 点灯app 使的点灯app 可以开关灯和定时关灯
            • 动作 配置代码 复制粘贴进去
            • 界面 配置代码 复制粘贴进去
      • 5.代码上传到 esp8266 开发板 代码在目录4
        • 5.1 复制代码新建文件 auto_off_light.ino 把文件 拖动到 Arduino IDE 这个图标上 或者 用软件打开
        • 5.2 上传到 esp8266 开发板 点击这个按钮
        • 要先选择 板子的端口
        • 5.3 上传完成右下角会提示
      • 6. 小爱同学 控制 开灯 ,关灯 需要 下载 小爱同学 和 米家
      • 7. 确保 录入语音控制 ,然后就可以用小爱同学控制
      • 8. 多个手机控制 也就是用多个 小爱同学绑定 同一个 点灯app 账号
      • 9. 我在墙上 这样粘住的 舵机下面垫了 纸板,胶带 粘在墙上。大家可以用 纳米胶好用

1.材料清单

材料费大概15大洋左右,多说无益,开始制作!!!

1.1Esp8266串口WiFi模块

Esp8266串口WiFi模块(12.4块大洋左右,配套线可以用于烧录,所以能买就买)。

【淘宝】https://m.tb.cn/h.gjgmND9Pv9ilE6m?tk=PYdI324I9na CZ3456 「ESP8266串口WIFI模块 CP2102/CH340 NodeMCU Lua V3物联网开发板」
1.2 sg90舵机 我买的一个 180度的(控制开关)
【淘宝】限时满145减6 https://m.tb.cn/h.gQaqqV35piYBw1D?tk=4zz3324ra1u HU0025 「SG90 9g舵机MG996R mg90s MG995模块马达遥控飞机航模9克360度180」
1.3电源(充电宝或其它电源,我建议电宝)。

2.官网下载Arduino IDE

2.1 网址
https://arduino.me/home

在这里插入图片描述

在这里插入图片描述

2.2 点击这里可以下载软件

在这里插入图片描述

2.3 注册后 点击浏览器端下载

在这里插入图片描述

2.4 找到下载好的安装包 双击运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 切换为中文模式

在这里插入图片描述
在这里插入图片描述

2.6 回到之前的网站 点击离线安装包
https://arduino.me/download

在这里插入图片描述

2.7 复制这个网址

在这里插入图片描述

https://arduino.me/packages/esp8266.json
2.8 粘贴到这里

在这里插入图片描述
在这里插入图片描述

2.9 点击历史版本下载

在这里插入图片描述

2.10 下载这个

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.11 将下载好的安装包解压

在这里插入图片描述

2.12 重要步骤一定要看
用户名这这里如果有中文 安装3.0.2 英文 安装 3.0.1 版本 双击安装在这里插入图片描述

在这里插入图片描述

3.将 Esp8266串口WiFi模块 和 sg90舵机 安装好

3.1 按照第一个图片安装就好

在这里插入图片描述

3.1 (可以忽略) 按照第一个图片安装就好 红线条 接5v VU 棕 GND 黄色 D4

在这里插入图片描述

3.2 线接好后, 把usb插到电脑上 ,usb线条 要有数据传输功能 ,电脑端的插头也要支持 传输数据多换几个地方插入

4.把代码上传到 esp8266 开发板 这里我提供两套代码,

4.1 这个代码 适合家里的灯, 开 关 开 关 开 ,是最亮的开关的
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT#include <Blinker.h>
#include <Servo.h>Servo myservo;//定义舵机char auth[] = "";  //点灯Key 下面我讲如何获取  目录 4.4 
char ssid[] = "";      //wifi名称  需要选这种 名字结尾不带5G 的网  见目录 4.3
char pswd[] = "";     //wifi密码// 新建组件对象
BlinkerButton Button1("btn-on");//开灯或关灯
BlinkerButton Button2("btn-off");//关灯
BlinkerButton Button3("btn-bright");//降低灯亮度BlinkerButton Button4("btn-banZi");//开发板灯亮度
BlinkerButton Button5("btn-go");//只开灯
BlinkerNumber Number1("num-abc");
bool isLightOn = false; // 初始状态设为关
BlinkerButton Button6("btn-onOne");//开灯
// 舵机动作角度定义
const int SERVO_ANGLE_OFF = 10;
const int SERVO_ANGLE_ON = 170;
const int SERVO_ANGLE_RESET = 90;int counter = 0;// 舵机动作函数 修改舵机度数
void servoTurn(int angle) {myservo.write(angle);delay(1000);
}// 更新灯的状态
void updateLightStatus(bool newStatus) {isLightOn = newStatus;if (newStatus) {BlinkerMIOT.powerState("on");BlinkerMIOT.print();isLightOn = true;//开灯servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);} else {BlinkerMIOT.powerState("off");BlinkerMIOT.print();isLightOn = false;//关灯servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_RESET);}updateEspLightStatus();//关闭esp8266灯
}// 更新esp8266 灯的状态
void updateEspLightStatus() {
digitalWrite(LED_BUILTIN, HIGH); // 如果状态是 "on",设置 LED 为高电平(亮) 搜索后发现有的是相反的
}//小爱同学判断开灯关灯
void miotPowerState(const String &state) {BLINKER_LOG("电源状态: ", state);if (state == BLINKER_CMD_ON) {updateLightStatus(true);} else if (state == BLINKER_CMD_OFF) {updateLightStatus(false);}
}//点灯app判断开灯关灯   Button1的回调函数
void button1_callback(const String &state) {if (state == "on") {updateLightStatus(true);//开关Button1.print("on");//将开关变成开状态Button1.text("开");//在开关上显示文字 开}else if (state == "off") {updateLightStatus(false);//关灯Button1.print("off");//将开关变成关状态Button1.text("关");//在开关上显示文字 关} else if (state == "press" || state == "tap") {//长按,短按 关灯updateLightStatus(false);//关灯Button1.print("off");//将开关变成关状态Button1.text("关");//在开关上显示文字 关} else {BLINKER_LOG("未知的按钮状态: ", state);}
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}//点灯app关灯
//回调函数意思 手机每点击一次组件 就出发回调函数
void button2_callback(const String & state){//回调函数updateLightStatus(false);//关灯Button2.print("off");//将开关变成关状态Button2.text("关");//在开关上显示文字 关}//点灯app 降低灯亮度
//回调函数意思 手机每点击一次组件 就出发回调函数
void button3_callback(const String & state){//回调函数servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);//修改状态BlinkerMIOT.powerState("on");BlinkerMIOT.print();Button3.print("on");//将开关变成开状态Button3.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯}// 按下按键即会执行该函数 esp8266灯
void button4_callback(const String& state) {BLINKER_LOG("get button state: ", state);if (state == "on") {digitalWrite(LED_BUILTIN, LOW); // 如果状态是 "off",设置 LED 为低电平(灭)Button4.print("on");//将开关变成开状态Button4.text("开");//在开关上显示文字 开} else if (state == "off") {digitalWrite(LED_BUILTIN, HIGH); // 如果状态是 "on",设置 LED 为高电平(亮)Button4.print("off");//将开关变成关状态Button4.text("关");//在开关上显示文字 关} else {BLINKER_LOG("Invalid state received.");}
}// 只开灯
void button5_callback(const String& state) {BLINKER_LOG("get button state: ", state);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);Button5.print("on");//将开关变成开状态Button5.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯
}// 只开灯一次
void button6_callback(const String& state) {BLINKER_LOG("get button state: ", state);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);Button6.print("on");//将开关变成开状态Button6.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯
}
void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);// 初始化舵机myservo.attach(2);//舵机的IO口,nodemcu的D4口myservo.write(SERVO_ANGLE_RESET);//上电时舵机归零垂直BlinkerMIOT.attachPowerState(miotPowerState);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);//将组件与回调函数绑定Button2.attach(button2_callback);//将组件与回调函数绑定Button3.attach(button3_callback);//将组件与回调函数绑定Button4.attach(button4_callback);//将组件与回调函数绑定Button5.attach(button5_callback);//将组件与回调函数绑定Button6.attach(button6_callback);//将组件与回调函数绑定// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);
}void loop() {Blinker.run();
}
4.2 代码2 适合 开关是 开一次就是亮的灯
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT#include <Blinker.h>
#include <Servo.h>Servo myservo;//定义舵机char auth[] = "";  //点灯Key 下面我讲如何获取   目录 4.4 
char ssid[] = "";      //wifi名称  需要选这种 名字结尾不带5G 的网  见目录 4.3
char pswd[] = "";     //wifi密码// 新建组件对象
BlinkerButton Button1("btn-on");//开灯或关灯
BlinkerButton Button2("btn-off");//关灯
BlinkerButton Button3("btn-bright");//降低灯亮度BlinkerButton Button4("btn-banZi");//开发板灯亮度
BlinkerButton Button5("btn-go");//只开灯
BlinkerNumber Number1("num-abc");
bool isLightOn = false; // 初始状态设为关
BlinkerButton Button6("btn-onOne");//开灯
// 舵机动作角度定义
const int SERVO_ANGLE_OFF = 10;
const int SERVO_ANGLE_ON = 170;
const int SERVO_ANGLE_RESET = 90;int counter = 0;// 舵机动作函数 修改舵机度数
void servoTurn(int angle) {myservo.write(angle);delay(1000);
}// 更新灯的状态
void updateLightStatus(bool newStatus) {isLightOn = newStatus;if (newStatus) {BlinkerMIOT.powerState("on");BlinkerMIOT.print();isLightOn = true;//开灯servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);} else {BlinkerMIOT.powerState("off");BlinkerMIOT.print();isLightOn = false;//关灯servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_RESET);}updateEspLightStatus();//关闭esp8266灯
}// 更新esp8266 灯的状态
void updateEspLightStatus() {
digitalWrite(LED_BUILTIN, HIGH); // 如果状态是 "on",设置 LED 为高电平(亮) 搜索后发现有的是相反的
}//小爱同学判断开灯关灯
void miotPowerState(const String &state) {BLINKER_LOG("电源状态: ", state);if (state == BLINKER_CMD_ON) {updateLightStatus(true);} else if (state == BLINKER_CMD_OFF) {updateLightStatus(false);}
}//点灯app判断开灯关灯   Button1的回调函数
void button1_callback(const String &state) {if (state == "on") {updateLightStatus(true);//开关Button1.print("on");//将开关变成开状态Button1.text("开");//在开关上显示文字 开}else if (state == "off") {updateLightStatus(false);//关灯Button1.print("off");//将开关变成关状态Button1.text("关");//在开关上显示文字 关} else if (state == "press" || state == "tap") {//长按,短按 关灯updateLightStatus(false);//关灯Button1.print("off");//将开关变成关状态Button1.text("关");//在开关上显示文字 关} else {BLINKER_LOG("未知的按钮状态: ", state);}
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}//点灯app关灯
//回调函数意思 手机每点击一次组件 就出发回调函数
void button2_callback(const String & state){//回调函数updateLightStatus(false);//关灯Button2.print("off");//将开关变成关状态Button2.text("关");//在开关上显示文字 关}//点灯app 降低灯亮度
//回调函数意思 手机每点击一次组件 就出发回调函数
void button3_callback(const String & state){//回调函数servoTurn(SERVO_ANGLE_OFF);servoTurn(SERVO_ANGLE_RESET);//修改状态BlinkerMIOT.powerState("on");BlinkerMIOT.print();Button3.print("on");//将开关变成开状态Button3.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯}// 按下按键即会执行该函数 esp8266灯
void button4_callback(const String& state) {BLINKER_LOG("get button state: ", state);if (state == "on") {digitalWrite(LED_BUILTIN, LOW); // 如果状态是 "off",设置 LED 为低电平(灭)Button4.print("on");//将开关变成开状态Button4.text("开");//在开关上显示文字 开} else if (state == "off") {digitalWrite(LED_BUILTIN, HIGH); // 如果状态是 "on",设置 LED 为高电平(亮)Button4.print("off");//将开关变成关状态Button4.text("关");//在开关上显示文字 关} else {BLINKER_LOG("Invalid state received.");}
}// 只开灯
void button5_callback(const String& state) {BLINKER_LOG("get button state: ", state);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);Button5.print("on");//将开关变成开状态Button5.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯
}// 只开灯一次
void button6_callback(const String& state) {BLINKER_LOG("get button state: ", state);servoTurn(SERVO_ANGLE_ON);servoTurn(SERVO_ANGLE_RESET);Button6.print("on");//将开关变成开状态Button6.text("开");//在开关上显示文字 开isLightOn = true;updateEspLightStatus();//关闭esp8266灯
}
void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);// 初始化舵机myservo.attach(2);//舵机的IO口,nodemcu的D4口myservo.write(SERVO_ANGLE_RESET);//上电时舵机归零垂直BlinkerMIOT.attachPowerState(miotPowerState);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);//将组件与回调函数绑定Button2.attach(button2_callback);//将组件与回调函数绑定Button3.attach(button3_callback);//将组件与回调函数绑定Button4.attach(button4_callback);//将组件与回调函数绑定Button5.attach(button5_callback);//将组件与回调函数绑定Button6.attach(button6_callback);//将组件与回调函数绑定// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);
}void loop() {Blinker.run();
}
4.3 上面代码的无线网 账号密码 需要选这种 名字结尾不带5G 的网

在这里插入图片描述

4.4 代码里面的点灯app key 获取方式 步骤见下面图片

手机百度搜点灯科技 下载点灯app 注册 登录
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.5配置 点灯app 使的点灯app 可以开关灯和定时关灯

在这里插入图片描述
在这里插入图片描述

动作 配置代码 复制粘贴进去
[{"cmd":{"btn-on":"on"},"text":"打开?name"},{"cmd":{"btn-on":"off"},"text":"关闭?name"}]1
界面 配置代码 复制粘贴进去
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/bg/f2.jpg¨¨isFull¨»}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fal fa-power-off¨¨mode¨Ê¨t0¨¨开发板灯¨¨t1¨¨文本2¨¨bg¨É¨cols¨Ë¨rows¨Ë¨key¨¨btn-banZi¨´x´É´y´É¨clr¨¨#076EEF¨}{ßCßDßEßFßGÊßH¨开灯或关灯¨ßJßKßLÉßMËßNËßO¨btn-on¨´x´Ë´y´É¨lstyle¨ÉßQ¨#6010E4¨}{ßCßDßEßFßGÊßH¨降低灯亮度¨ßJßKßLÉßMËßNËßO¨btn-bright¨´x´Í´y´ÉßQ¨#FBA613¨}{ßCßDßE¨fad fa-lightbulb-on¨ßGÊßH¨开灯¨ßJßKßLÉßMÍßNÍßO¨btn-go¨´x´Ë´y´ÌßQ¨#00A90C¨ßUË}{ßCßDßE¨fad fa-lightbulb¨ßGÊßH¨关灯¨ßJßKßLÉßMÍßNÍßO¨btn-off¨´x´Ë´y´ÒßQ¨#EA0909¨ßUË}{ßC¨tim¨ßLÉßMËßNËßO¨timing¨´x´Ï´y´É}{ßCßDßEßFßGÊßH¨只开灯一次¨ßJßKßLÉßMËßNËßO¨btn-onOne¨´x´É´y´ËßQßc}÷¨actions¨|¦¨cmd¨¦ßT‡¨text¨‡¨on¨¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨¨switch¨¨source_zh¨¨开关状态¨¨state¨|ßoßq÷¨state_zh¨|¨打开¨´关闭´÷}÷´rt´|÷}

5.代码上传到 esp8266 开发板 代码在目录4

5.1 复制代码新建文件 auto_off_light.ino 把文件 拖动到 Arduino IDE 这个图标上 或者 用软件打开

在这里插入图片描述

5.2 上传到 esp8266 开发板 点击这个按钮
要先选择 板子的端口

在这里插入图片描述

在这里插入图片描述

5.3 上传完成右下角会提示

6. 小爱同学 控制 开灯 ,关灯 需要 下载 小爱同学 和 米家

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 确保 录入语音控制 ,然后就可以用小爱同学控制

8. 多个手机控制 也就是用多个 小爱同学绑定 同一个 点灯app 账号

9. 我在墙上 这样粘住的 舵机下面垫了 纸板,胶带 粘在墙上。大家可以用 纳米胶好用

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

19. Revit API: Parameter(参数)

一、前言 我们在前面或多或少提到也用到参数了&#xff0c;这篇便细讲一下。 首先&#xff0c;我们知道好多信息都藏在参数里&#xff0c;或者说可以从参数中获取。我们还能够通过调整参数的值&#xff0c;改变模型的形态&#xff0c;即族的参变。 其次&#xff0c;有时族上…

一文讲透如何使用CSS美化HTML界面

上一篇文章(初识HTML文件&#xff0c;创建自己的第一个网页&#xff01;)介绍了HTML文件&#xff0c;并实战练习了如何编写一个结构简单的HTML网页&#xff0c;但最后也提到了单纯使用HTML语言创建的网页并不美观&#xff0c;有没有一个东西像PS能够美化图片一样让我们能够对我…

【前端 16】使用Ajax发送异步请求

Ajax 基础入门&#xff1a;实现异步请求 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过使用 Ajax&#xff0c;可以在后台与服务器交换数据&#xff0c;这意味着可以在不影响用户…

【代码】Python3|Scrapy框架初探(汽车之家大连市二手车车辆数据爬取、清洗与可视化)

本篇主要是整个项目的介绍&#xff0c;没提到太多琐碎的技术细节&#xff0c;以后有空的话会整理一下 Scrapy 和原生爬虫的差异&#xff0c;还有它坑人的一些地方&#xff0c;单发出来。 开源地址&#xff1a;https://github.com/shandianchengzi/car_home_spider 使用说明&a…

Github 2024-07-28 php开源项目日报Top10

根据Github Trendings的统计,今日(2024-07-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目2TypeScript项目2Java项目1ASP项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar…

openssl 加密

使用tar命令在Linux中加密文件可以通过两种方式实现&#xff1a;使用gzip压缩的同时加密&#xff0c;或者使用加密选项。 1. 使用gzip压缩的同时加密&#xff1a; “ tar cz file1 file2 | openssl enc -e -aes256 -out archive.tar.gz.enc “ – cz&#xff1a;创建tar压缩文…

基于粒子群优化算法(PSO)永磁同步电机电流环多参数辨识MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 仿真模型简介 在同步旋转dq 轴坐标系下建立PMSM 数学模型&#xff0c;将定子dq 轴电压设为辨识模型和实际测量值的输入&#xff0c;设计了PSO 辨识PMSM 参数的适应度函数。该辨识方法不需推导复杂的电机数学…

R语言统计分析——整合和重构

参考资料&#xff1a;R语言实战【第2版】 R中提供了许多用来整合&#xff08;aggregate&#xff09;和重塑&#xff08;reshape&#xff09;数据的强大方法。在整合数据时&#xff0c;往往将多组观测替换为根据这些观测计算的描述性统计量。在重塑数据时&#xff0c;则会通过修…

STM32——GPIO(点亮LEDLED闪烁)

一、什么是GPIO&#xff1f; GPIO&#xff08;通用输入输出接口&#xff09;&#xff1a; 1.GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#xff09;的简称&#xff0c;既能当输入口使用&#xff0c;又能当输出口使用。端口&#xff0c;就是元器件…

数据结构(5.3_5)——二叉树的线索化

第一种寻找中序前驱方法 中序线索化 本质上就是一次中序遍历&#xff0c;只不过需要在一边遍历一边处理结点线索化 代码&#xff1a; //全局变量pre 指向当前访问结点的前驱 ThreadNode* pre NULL;struct ElemType {int value; };//线索二叉树结点 typedef struct ThreadNode…

linux练习2

一、搭建nfs服务器&#xff0c;客户端可从服务端/share目录上传与下载文件 **服务端** 1、下载相关安装包 [rootserver ~]# yum install rpcbind -y [rootserver ~]# yum install nfs-utils -y 2、 创建共享文件夹/share并授予权限 [rootserver ~]# mkdir /share [rootserv…

vector以及迭代器失效

前言 学习完string&#xff0c;之后学习的就是vector。vector就是之前C语言中讲到过的顺序表&#xff0c;用三个变量分别记录资源的位置&#xff0c;容器的容量和容器中元素个数。原来的写法是直接使用指针加两个int变量&#xff0c;而标准库中&#xff0c;三个都是由指针确定的…

sql server 连接报错error 40

做个简单的记录,造成40 的原因有很多,你的错误并不一定就是我遇到的这种情况. 错误描述: 首先我在使用ssms 工具连接的时候是可以正常连接的,也能对数据库进行操作. 在使用 ef core 连接 Sql Server 时报错: Microsoft.Data.SqlClient.SqlException (0x80131904): A network-r…

hadoop学习(二)

一.MapReduce 1.1定义&#xff1a;是一个分布式运算程序的编程框架 1.2核心功能&#xff1a;将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 1.3优点 1&#xff09;易于编程 它简单的实现一些接口&#…

【Linux】Ubuntu解决Release 文件已经过期问题

​今天在执行update更新软件包时遇到了此问题&#xff1a;E: http://cn.archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease 的 Release 文件已经过期(已经过期了 247天 21小时 33分 15秒)。该仓库的更新将不会应用&#xff0c;如图 ​ 这个报错之前其实经常遇到&#x…

电脑虚拟摄像头软件分享|用手机打破电脑摄像头的极限

随着手机摄像头的不断更新迭代&#xff0c;手机已经接近专业电脑摄像头的画质。这让我们可以花费更低的成本获取优质的电脑录像画面。今天小编给大家详细讲解电脑虚拟摄像头的在我们日常生活中的妙用&#xff0c;以及分享几款口碑不错的电脑虚拟摄像头软件。有需要的小伙伴可以…

Unity3D 转换微信小游戏指引 05 广告内购

Unity3D 转换微信小游戏指引系列&#xff08;第五期 完结&#xff09; 广告 在小程序后台页面找到推广->流量主 开通条件如下&#xff1a; 开通之后&#xff0c;需要接入广告组件。 调用创建广告组件的接口时&#xff0c;需要传入参数 adUnitId&#xff0c;这个是开通流量…

「C++系列」数组

文章目录 一、数组1. 声明数组2. 初始化数组3. 访问数组元素4. 遍历数组注意事项示例代码 二、多维数组1. 声明二维数组2. 初始化二维数组3. 访问二维数组元素4. 遍历二维数组注意事项示例代码 三、指向数组的指针1. 声明指向数组的指针2. 通过指针访问数组元素3. 指针和数组的…

Android 10.0 framework默认沉浸式状态栏功能实现

1. 前言 在10.0的系统rom定制化开发中,在实现状态栏的某些定制化开发中,在某些产品需要实现沉浸式状态栏,就是需要app 能全屏显示同样也能显示状态栏,接下来就来分析下相关的功能实现 如图: 2.framework默认沉浸式状态栏功能实现的核心类 frameworks\base\core\java\andro…

【神经网络】梯度下降的优化方法【数学公式+代码示例】

文章目录 1、简介2、指数加权平均2.1、公式2.2、代码 3、Momentum⭐3.1、公式演变3.2、代码 4、AdaGrad4.1、计算步骤4.2、代码示例 5、RMSProp5.1、公式5.2、代码5.3、小结 6、Adam6.1、公式和步骤解释⭐6.2、代码⭐6.3、优点 7、何为鞍点8、小结 &#x1f343;作者介绍&#…