- 构建Arduino自动百叶窗所需的组件
- 使用Arduino控制卷帘
- 设计和制造窗帘装置
- 3D打印电机支架和盲齿轮
- Arduino百叶窗控制电路图
- Arduino盲控制的Blynk应用程序
- 编程NodeMCU以使用Blynk控制百叶窗
- 使用Google Assistant控制百叶窗
- 基于Arduino的自动百叶窗控制–演示
“早上好。现在是早上7点。马里布(Malibu)的天气是72度…”,这是JARVIS在Marvel Cinematics Universe中引入的第一句话。大多数钢铁侠粉丝应该能够回忆起这一场景,并记住,JARVIS能够在早上打开一个窗口,并及时更新天气。在电影中,“眼镜”窗口实际上是由透明触摸显示器制成的,因此JARVIS能够使它从黑色变为透明,并在其上显示天气统计信息。但是,实际上,我们离透明触摸屏很远,而我们所能获得的距离更近,是自动控制百叶窗或约束。
因此,在这个项目中,我们将精确地构建它,我们将构建一个自动的电动百叶窗,该百叶窗将在预定的时间自动打开和关闭。以前,我们已经建立了许多家庭自动化项目,在这些项目中我们对照明,电机等进行了自动化。如果您有兴趣,可以查看一下。因此,回来后,这些 Arduino控制的百叶窗还可以接受Google助手的命令,以便您可以通过语音命令远程打开或关闭百叶窗。有趣吗?然后,让我们构建它。
构建Arduino自动百叶窗所需的组件
该项目相对简单,不需要很多组件。只需收集下面列出的项目。
- NodeMCU
- 步进电机– 28BYJ-48
- 步进电机驱动器模块
- LM117-3.3V
- 电容器(10uf,1uf)
- 12V DC适配器
- 穿孔板
- 焊接套件
- 3D打印机
使用Arduino控制卷帘
现在市场上有多种类型的百叶窗,但是最常用的百叶窗有一条带有饰珠的绳索(如下图所示),可以拉动绳索以打开或关闭百叶窗。
当我们沿顺时针方向拉动此圆形绳索时,百叶窗将打开,而当我们沿逆时针方向拉动此绳索时,百叶窗将关闭。因此,如果要使此过程自动化,我们所要做的就是使用电动机按顺时针或逆时针方向拉动这条绳索,我们将完成此工作。实际上,这就是我们在该项目中要做的;我们将使用28BYJ-48步进电机以及NodeMCU来拉动串珠绳。
设计和制造窗帘装置
该项目的电子部分相当简单直接,最具挑战性的部分是建造可以拉动串珠绳的盲齿轮。因此,让我们从盲齿轮设计开始本文,我不会详细介绍如何设计齿轮,但是这个基本思想应该可以为您提供帮助。绳索上带有珠子的图像如下所示。
同样,绳索的类型很多,但最常用的绳索是每个钉珠的中心距为6mm,每个钉珠的直径为4mm。利用这些信息,我们可以开始设计齿轮。如果百叶窗上的绳索的尺寸与讨论的尺寸相同,则可以跳过此步骤并下载本文提供的STL文件并打印齿轮。如果您的绳索有不同的串珠布置,那么这就是您应该重新设计百叶窗装置的方式。
我决定在齿轮上安装24个珠子,以获得最佳的齿轮尺寸,您可以选择接近此数字的任意数字以使齿轮变大或变小。因此,现在我们知道每个珠子之间的距离为6mm,并且我们的齿轮上需要24个珠子。两者相乘将得到齿轮的圆周。使用此数据,您可以计算齿轮的半径。如上图所示,我的齿轮直径经计算约为46毫米。但是请记住,这不是齿轮的实际直径,因为我们没有考虑珠子的直径(4mm)。因此,齿轮的实际直径将为42毫米,在找到最合适的齿轮之前,我打印并测试了许多齿轮。如果您不喜欢设计,只需从下一段下载并打印STL文件,然后继续您的项目即可。
3D打印电机支架和盲齿轮
除齿轮外,我们还将需要一个小的外壳,该外壳可钻到墙壁上并将步进电机保持在适当的位置,该项目中使用的外壳和齿轮均如下图所示。
您可以在下面给出的Arduino Blind Control Thingiverse页面上找到完整的设计文件和STL文件。您可以只下载并打印您的百叶窗齿轮箱和电机外壳。
下载用于齿轮箱和电机箱的STL文件
Arduino百叶窗控制电路图
准备好齿轮和组件后,就可以轻松进行电子和软件部分的安装。IoT盲控制项目的完整电路图如下所示。
我们使用12V适配器为整个设置供电。LM1117-3.3V稳压器将12V转换为3.3V,可用于为NodeMCU板供电。步进电机驱动器模块直接由12V适配器供电。我确实尝试过在5V电压下运行步进电机,但是它没有提供足够的扭矩拉动百叶窗,因此请确保您也使用12V电压。
除此之外,电路非常简单,如果您是步进电机的新手,请务必阅读步进电机的基础知识,以了解其工作原理以及如何与微控制器一起使用。
Arduino盲控制的Blynk应用程序
在进入用于控制百叶窗的Arduino程序之前,让我们打开blynk应用程序并创建一些按钮,使用这些按钮可以打开或关闭百叶窗。稍后,我们还将需要此功能来从Google主页进行控制。
我刚刚添加了两个按钮来打开和关闭百叶窗,还添加了一个定时器,每天上午10:00打开百叶窗。您可以添加多个计时器,以在一天中的不同间隔打开或关闭百叶窗。基本上,当我们必须关闭百叶窗时,我们必须触发虚拟引脚V1,而当我们必须打开百叶窗时,我们必须触发虚拟引脚V2。基于此处按下的按钮控制步进电机的程序将写在Arduino IDE上,下面将对此进行讨论。
编程NodeMCU以使用Blynk控制百叶窗
此盲控制项目的完整ESP8266代码可在此页面底部找到。我们的程序必须等待blynk应用程序发出的命令,并基于该命令,我们必须沿顺时针方向或逆时针方向旋转步进电机。该代码的重要部分将在下面讨论。
根据我们的电路图,我们已使用nodemcu上的数字引脚1、2、3和4来控制步进电机。因此,我们必须使用这些引脚创建一个名为stepper的实例,如下所示。请注意,我们已经按顺序1、3、2和4定义了引脚。这是有意做的,不是错误;我们必须交换针脚2和3才能使电动机正常工作。
//使用步骤和引脚Stepper步进器(STEPS,D1,D3,D2,D4)创建步进器类的实例;
下一步,我们必须共享blynk应用程序身份验证令牌和IoT Blind控制器必须连接到的Wi-Fi凭据。如果不确定如何获取此Blynk身份验证令牌,请参考Blynk LED控制项目以了解blynk应用程序的基础知识以及如何使用它。
//您应该在Blynk应用中获取身份验证令牌。//转到项目设置(螺母图标)。char auth =“ l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx”; //您的WiFi凭据。//将开放网络的密码设置为“”。char ssid =“ CircuitDigest”; char pass =“ dummy123”;
继续我们的代码,在设置功能之后,我们为blynk定义了两种方法。如前所述,我们必须定义虚拟引脚V1和V2应该做什么。相同的代码如下。
BLYNK_WRITE(V1)//关闭百叶窗{Serial.println(“ Closing Blinds”); if(opened == true){for(int c_val = 0; c_val <= 130; c_val ++)//以逆时针方向旋转以关闭{stepper.step(c_val);让(); } close = true;打开=假; disable_motor(); //在使用后始终禁用步进电机以减少功耗和发热}} BLYNK_WRITE(V2)//打开百叶窗{Serial.println(“ Opening Blinds”); if(closed == true){for(int cc_val = 0; cc_val> = -130; cc_val--)//顺时针旋转以打开{stepper.step(cc_val);让(); } open = true;关闭=假; } disable_motor(); //总是在使用后禁用步进电机,以减少功耗和发热}
如您所见,V1用于关闭百叶窗,而V2用于打开百叶窗。甲 for循环 用来为130层的步骤转动在顺时针或反时针方向的电机。我对百叶窗进行了实验,发现通过130个台阶,我可以完全打开和关闭百叶窗。您的电话号码可能会有所不同。下面显示了 用于 使步进电机沿顺时针和逆时针方向旋转的 for循环 。
for(int c_val = 0; c_val <= 130; c_val ++)//以逆时针方向旋转以关闭{stepper.step(c_val); 让(); } for(int cc_val = 0; cc_val> = -130; cc_val--)//顺时针旋转以打开{stepper.step(cc_val); 让(); }
您还可以在程序中注意到两个布尔变量“打开”和“关闭”。这两个变量用于防止电动机两次打开或关闭百叶窗。这意味着,百叶窗仅在先前关闭时打开,并且仅在先前打开时关闭。
如何提高28BJY-48步进电机的速度?
使用28BJY-48步进电机的一个缺点是它非常慢。这些电动机最初是为在高精度低速应用中使用而制造的,因此不要指望这些电动机能够高速旋转。如果要使用Arduino提高步进电机的速度,可以更改两个参数。一种是#define STEPS 64,我发现将步数定义为64时,电动机相对较快。另一个参数是 stepper.setSpeed(500); 再次,我发现500是一个最佳值,这实际上会使步进电机变慢。
您知道其他提高这些电动机速度的方法吗?如果是,请在下面的评论部分中保留它们。
如何防止步进电机过热?
步进电机在不使用时应始终禁用,以防止过热。禁用步进电机非常简单;只需将控制步进电机的所有四个GPIO引脚的引脚状态更改为低电平即可。这非常重要,否则您的电动机在+ 12V时可能会变得很热并永久损坏自身。下面给出了禁用步进电机的程序。
void disable_motor()//完成操作后关闭电动机,以免加热{digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,LOW); digitalWrite(D4,LOW); }
使用Google Assistant控制百叶窗
我们将使用blynk API通过Google助手来控制百叶窗,它类似于我们的语音控制家庭自动化项目,因此请检查是否感兴趣。基本上,当我们向Google Assistant说一个预定义的短语时,我们必须触发以下链接。
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
确保将身份验证令牌更改为blynk应用程序提供的身份验证令牌。您甚至可以在Chrome浏览器中测试此链接,以查看其是否按预期工作。现在链接已经准备好了,我们只需要转到IFTTT并创建两个小程序,当我们要求关闭和打开百叶窗时,它们可以触发虚拟引脚V1和V2。再说一次,由于我们已经做了很多次,所以我不再赘述。如果您需要更多帮助,请参考此语音控制FM广播项目,只需将adafruit服务替换为webhooks。我还分享了我的摘录的屏幕快照,以供参考。
基于Arduino的自动百叶窗控制–演示
在准备好电路和3D打印的外壳后,只需在墙上钻两个孔,即可将设备组装在墙上。我的安装设置如下图所示。
之后,请确保您的百叶窗处于打开状态,然后打开电路电源。现在,您可以尝试通过blynk应用程序或通过Google助手关闭盲孔,它应该可以工作。您还可以在blynk应用程序上设置计时器,以在一天中的特定时间自动打开和关闭百叶窗。
该项目的完整工作可以在下面的视频中找到;如果您有任何疑问,请随时在下面的评论部分中写下。另外,您可以使用我们的论坛进行其他技术讨论。