0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

伺服电机控制的无线电灯开关-第三部分

张览秀 ? 来源:DevicePlus ? 作者:DevicePlus ? 2023-03-01 17:26 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这篇文章来源于DevicePlus.com英语网站的翻译稿。

目录

? 第一部分
什么是伺服电机
伺服电机的类型
所需电压和电源

? 第二部分
基于Arduino程序的伺服控制
伺服电机可以做什么?

? 第三部分
伺服控制电灯开关
电灯开关的远程控制

6. 伺服控制电灯开关

举一个实际生活中的例子,我想制造一种可以通过按下电灯开关来实现房间电灯自动打开的设备。下面,我将会结合Arduino + 伺服电机+ 3D 打印机 + Wi-Fi 模块来实现它!

注意:我们将要制造的自动电灯开关仅适用于按钮式电灯开关系统。

我们从通过3D打印制造用于按下电灯开关按钮的部件开始。

本次使用的伺服电机是MG996R,其扭矩比之前的产品中使用的电机扭矩更大。该伺服电机的扭矩为9.4kg,工作电压为4.8 – 6.6 V。我们还将使用ESP-WROOM-02 Wifi,并尝试通过PC或智能手机来移动伺服电机,从而对开关进行控制操作。

pYYBAGPzE5GAFmPWAAE9PYyIHbU325.jpg

图9:按压开关的部件

poYBAGPzE5OAAnh2AAD29bKXvaQ607.jpg

图10:用3D打印机制造

poYBAGPzE5WAR-XnAAFdj-u_QmE204.jpg

图11:房间开关

poYBAGPzE5iAc-mYAADfltZSjLQ070.jpg

图12:在伺服电机上安装3D打印部件

pYYBAGPzE5qAG0npAAFgX4Ivop4679.jpg

图13:安装在房间电灯开关上

我用胶带将设备固定在电灯开关上。

poYBAGPzE5yAVxypAAGazy3ZKoY416.jpg

图14:胶带

完成后,测试一下伺服电机是否正常工作,是否可以打开电灯。

它做到了是吗?太好了!我想您已经意识到了,我们刚刚所制备的开关只能用来打开电灯。不幸的是,这种开关不能用来关掉电灯或者再次打开电灯。我希望我们的开关在两端都能够被按下,从而实现自动打开和关闭电灯。

pYYBAGPzE56AE-M8AAFGHbDJOgI662.jpg

图15:测量开关尺寸

我们来测量一下房间电灯开关的宽度。我的开关大约是4cm。我认为最好在支撑部件上设计一些突出的结构,以便从两端按下电灯的开关按钮。因此,我用3D打印的方法制造了以下部件:

poYBAGPzE6CAEMhsAAF_q8IW__U986.jpg

图16:可以按压开关按钮两端的部件

pYYBAGPzE6KAUMRtAAEWrBklTzk383.jpg

图17:安装在伺服电机上

安装到伺服电机上后,我们将对ESP-WROOM-02模块编写程序,以进行开关的远程控制。

poYBAGPzE6WAKqh6AAGKu1ykUbc076.jpg

图18:遥控电灯开关的最终设置

7. 电灯开关的远程控制

将该机械系统连接到安装在房间中的无线路由器上,并且根据获取的IP地址,我们可以提供一个操作伺服电机的功能。

当ESP-WROOM-02开机时,我们可以设置一个报告服务器,并连接外部API,以在从无线路由器获取IP地址后,通过电子邮件转发IP地址。

#include 
#include  
 
const char *ssid = "[wifi_ssid]";
const char *password = "[wifi_password]";
 
//IP report server configuration
const char* host = "xxxx.xx.xxx";
String url = "/xxxx/";
  
Servo myservo;
Servo myservo2;
 
WiFiServer server(80);
 
String IpAddress2String(const IPAddress& ipAddress)
{
 return String(ipAddress[0]) + String(".") +
 String(ipAddress[1]) + String(".") +
 String(ipAddress[2]) + String(".") +
 String(ipAddress[3]) ; 
}
  
void setup() {
 Serial.begin(115200);
 delay(10);
  
 Serial.println("Start!");
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
  
 WiFi.begin(ssid, password);
  
 while (WiFi.status() != WL_CONNECTED) {
 delay(1500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
  
 server.begin();
 Serial.println("Server started");
 Serial.println(WiFi.localIP());
 
//*********************************************************
// IP address notification
//*********************************************************
 WiFiClient client;
 const int httpPort = 80;
 if (!client.connect(host, httpPort)) {
 Serial.println("connection failed");
 return;
 }
  
 url += IpAddress2String(WiFi.localIP());
 client.print(String("GET ") + url + " HTTP/1.1rn" +
 "Host: " + host + "rn" + "Connection: closernrn");
 delay(1000);
 Serial.print("Connecting url to ");
 Serial.println(url);
 
//*********************************************************************
 
}
  
void loop() {
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
  
 Serial.println("new client");
 while(!client.available()){
 delay(1);
 }
  
 String req = client.readStringUntil('r');
 Serial.println(req);
 client.flush();
 
 // Match the request
 int selectServo = 0;
 
int posSlash0 = req.indexOf("/");
String tmp = req.substring(0,posSlash0);
int posSlash1st = req.indexOf("/",1+posSlash0);
String action = req.substring(1+posSlash0,posSlash1st);
int posSlash2nd = req.indexOf("/",1+posSlash1st);
String sel = req.substring(1+posSlash1st,posSlash2nd);
int posSlash3rd = req.indexOf("/",1+posSlash2nd);
String valueTmp = req.substring(1+posSlash2nd,posSlash3rd);
int posSpace = valueTmp.indexOf(" ");
String value = valueTmp.substring(0,posSpace);
 
if(action == "favicon.ico HTTP"){
 return;
}
//GET /servo/1/60 HTTP/1.1
 
Serial.print("POS:");
Serial.print(posSlash1st);
Serial.print(":");
Serial.print(posSlash2nd);
Serial.print(":");
Serial.println(posSlash3rd);
 
Serial.print("ACTION:");
Serial.println(action);
Serial.print("SELECT SERVO:");
Serial.println(sel);
Serial.print("VALUE:");
Serial.println(value);
 
if(sel == "0"){
myservo.write(value.toInt());
}
 
  
 client.flush();
  
 String s = "HTTP/1.1 200 OKrnContent-Type: text/htmlrnrnrn";
 s += "";
 s += ""; 
 s += "
"; s += "n"; client.print(s); delay(1); Serial.println("Client disonnected"); }

如上述视频所示,我能够从我的PC端打开/关闭电灯。

今天,我们创建了一个伺服控制电灯开关,实现了无线和远程控制。这些类型的设备有很多用途。下次,我们将结合多个伺服电机来制造一个相机稳定器或云台,这是更有创意的一个项目。敬请期待!

poYBAGPzE6aAJ6EJAAFgvcBkgow166.jpg

相关文章:

使用Arduino控制电机第一部分—电机基础

使用Arduino控制电机第三部分—制造一辆通过伺服电机控制转向的RC车

Arduino与部件和传感器的配合使用—步进电机第一部分

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开关
    +关注

    关注

    19

    文章

    3284

    浏览量

    95607
  • 伺服电机
    +关注

    关注

    88

    文章

    2130

    浏览量

    59791
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    提高篇——C语言核心技术(中文版)

    严谨的术语表介绍C语言;第二部分描述标准链接库;第三部分介绍GNU软件包中常用的编译和测试工具。 获取完整文档资料可下载附件哦!!!!如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 06-13 16:39

    TI大学计划-电源篇

    本手册将分为以下几部分介绍信号链和电源相关的知识及 TI 产品在大学生创新活动中的应用: 第一部分:运算放大器的原理和设计; 第二部分:数据转换器的原理和设计; 第三部分:线性电源和
    发表于 05-19 15:33

    如何用 Raspberry Pi 500 搭建家庭录音室?

    是时候安装并配置家庭录音室中高质量音频制作所需的软件了。这是来自《树莓派官方杂志》系列教程的第三部分,也是最后一部分。若想阅读整个系列教程,请先回顾第一部分(关于录音空间设置),再阅读第二部分
    的头像 发表于 05-18 08:33 ?940次阅读
    如何用 Raspberry Pi 500 搭建家庭录音室?

    松下MPS媒体制作平台第八篇:视频混合器插件(第三部分)

    ? 欢迎?????大家观看松下操作教程 MPS媒体制作平台????? 第八篇:视频混合器插件(第三部分) 视频混合器(Video Mixer)插件可以轻松进行主体键控,不受拍摄地点的局限,同时便于将
    的头像 发表于 01-08 10:10 ?529次阅读
    松下MPS媒体制作平台第八篇:视频混合器插件(<b class='flag-5'>第三部分</b>)

    菱PLC伺服控制系统介绍

    逻辑控制器(PLC)和伺服电机驱动技术的自动化解决方案。它通过精确控制电机的速度、位置和加速度,实现机器设备的精确运动。这种系统广泛应用于包
    的头像 发表于 12-26 17:32 ?1725次阅读

    基站开关电源的管理及维护

    开关电源 第二部分? 配置原则及算法 1.新建时配置原则 2.共享改造时配置原则 3.容量算法 第三部分? 日常管理及维护 1.基本组成 2.各部分主要功能说明 3.日常维护 附件1:
    的头像 发表于 12-16 16:28 ?2117次阅读
    基站<b class='flag-5'>开关</b>电源的管理及维护

    伺服电机的工作原理和控制方式

    伺服电机的工作原理 伺服电机是一种能够将电信号转换为精确的机械运动的设备。它的工作原理基于电磁感应原理,通过精确控制
    的头像 发表于 12-05 15:18 ?3197次阅读

    Air780EP硬件设计原理解析(第三部分

    ? 接下来,我们继续学习第三部分。 四、射频接口 天线接口管脚定义如下: 表格 14:RF_ANT 管脚定义 ? 4.1 射频参考电路 ? 注意: 连接到模块RF天线焊盘的RF走线必须使用微带线或者
    的头像 发表于 11-06 15:07 ?780次阅读
    Air780EP硬件设计原理解析(<b class='flag-5'>第三部分</b>)

    GB/T 7251.8-2020低压成套开关设备和控制设备第8部分:智能型成套设备通用技术要求

    (高清版)GBT 7251.8-2020 低压成套开关设备和控制设备 第8部分:智能型成套设备通 用技术要求
    发表于 10-29 17:01 ?3次下载

    伺服电机原理及控制应用

    伺服电机(Servo Motor)是一种高精度、高性能的电动机系统,广泛应用于需要精确控制位置、速度和加速度的场合。 一、伺服电机的工作原理
    的头像 发表于 10-22 16:58 ?2798次阅读

    什么是伺服电机伺服电机的工作原理是什么?

    控制方式和反馈机制。 伺服电机的构造 伺服电机主要由转子、定子、编码器、驱动器和控制器组成。转
    的头像 发表于 10-22 10:58 ?2308次阅读

    实际的正弦波震荡电路主要由哪三部分组成

    实际的正弦波振荡电路主要由以下三部分组成,尽管有时在更详细的描述中可能会提及四部分(包括稳幅环节),但以下三部分是构成正弦波振荡电路的核心: 放大电路 : 放大电路是振荡电路的核心部分
    的头像 发表于 10-09 16:59 ?1315次阅读

    数字芯片设计验证经验分享(第三部分):将ASIC IP核移植到FPGA上——如何确保性能与时序以完成充满挑战的

    本篇文章是SmartDV数字芯片设计经验分享系列文章的第三篇,将继续分享第五、第六主题,包括确保在FPGA上实现所需的性能和时钟两个方面的考量因素。
    的头像 发表于 08-26 14:31 ?2541次阅读
    数字芯片设计验证经验分享(<b class='flag-5'>第三部分</b>):将ASIC IP核移植到FPGA上——如何确保性能与时序以完成充满挑战的

    控制电灯开关电灯是什么联的

    电灯开关的连接方式有两种:串联和并联。下面我们将介绍这两种连接方式。 串联连接 在串联连接中,电灯开关是按照顺序连接的。这意味着电流必须通过开关
    的头像 发表于 08-25 09:57 ?2120次阅读

    学习hypervisor嵌入式产品安全设计

    、PRTOS的配套工具等内容。第三部分(第13~15章)介绍嵌入式Hypervisor的高级应用和未来规划,涵盖μC/OS-II与Linux内核的虚拟化过程,以及PRTOS社区的愿景等内容。
    发表于 08-25 09:11