灯光开关控制

木易
转载
发布时间: 2025-06-09 22:04:26 | 阅读数 0收藏数 0评论数 0
封面
本指南介绍制作WiFi电灯开关(遥控器),以控制多个继电器的开关,使用Blynk互联,含ESP8266的Huzzah Feather作微控制器。遥控器有最多3个按钮和反馈LED,另有一个大按钮可关闭所有继电器,适用于离家或睡前全关,电源来自USB壁式插头。

准备工作:

材料:

材料名称
数量
备注
塑料外壳
1
购买链接:https://e.tb.cn/h.6b5Dfd0h9N3dobR?tk=HmTSery9IQK HU287
ESP8266
1
可焊接面包板
1
LED
3
微动开关
3
自锁按键
1
3.3K电阻
7
use Type-A 公插头
1
聚氨酯胶
1

工具:

工具名称
数量
备注
烙铁
1
美工刀
1
手钻
1
1

设计

微控制器:

作为微控制器,我使用了 Adafruit 制造的 Feather Huzzah with ESP8266,原因如下:

  1. 它具有 wifi 功能
  2. 它很便宜(组装版为 18.95 美元)
  3. 它相对较小(23 毫米 x 51 毫米 x 8 毫米 / 0.9 英寸 x 2 英寸 x 0.28 英寸)
  4. 它有 9 个 GPIO 引脚(我需要 7 个)

微控制器将由 USB 插座的 5V 供电。

4 个 GPIO 将用作按钮的输入,3 个将用作点亮 LED 的输出。其中一个按钮(关闭每盏灯的那个)包含一个 LED,因此为这个按钮设置反馈 LED 对我来说没有意义。

按钮:

按钮的设计非常简单:对于 3 个小按钮,我选择了轻触开关,也称为 SPST 开关。我挑选了高大的,这样它们就会从围栏里出来。对于较大的按钮,我还选择了一个 SPST 开关,但一个较短的开关,这样它就会凹入外壳中,目的是它不会被意外按下。它内部还有一个 LED,并有一个 I/O 符号。

如上图所示,开关通过 3.3k 下拉电阻为 GPIO 接地,按下时为 GPIO 提供 3.3V。

指示灯:

我使用了 5 毫米的黄色 LED。它们只是简单地在一端连接到 GPIO,在另一端通过 3.3k 电阻器接地。

外壳:

对于外壳,我需要一个内部尺寸至少为 51 毫米 x 97 毫米 x 11 毫米 / 2.0 英寸 x 3.8 英寸 x 0.4 英寸的塑料盒。我选择的盒子内部尺寸为 52 毫米 x 100 毫米 x 19 毫米 / 2.0 英寸 x 3.9 英寸 x 0.7 英寸。这意味着我必须在面包板后面堆放一些纸板或纸张,以确保系统与机箱盖齐平,并且按钮会从盖子中伸出。

所有组件都焊接在可焊接的试验板上。这使得它比传统的试验板更持久、更安全,并且不需要设计定制的 PCB。我发现 Adafruit 的半尺寸永久板效果很好。

2

制作板

焊接电路板是有趣的部分!只需按照接线图作,一切都会按计划进行。请特别注意以下几点:

  1. 注意 LED 极性(短引线-阴极-接地/长引线-阳极-正电压)。
  2. LED 指示灯应尽可能低于试验板。否则,LED 的顶部会太高,从外壳中伸出太多。
  3. 在焊接 Feather Huzzah 之前,我从中取出了电池连接器。我们不需要它,而且它非常高,因此不允许我们正确放置外壳盖。
  4. 我在 Feather Huzzah 的“batt”引脚和接地轨上放置了一个 90 度的公 - 母针连接器。然后,这些将连接到 USB 的 5V 和接地。
提示:
使用第三只手,或用一块木头、4 根 Loc 线软管和 4 个鳄鱼夹自己制作一个
3

制作外壳

USB 插头:

使用 dremel 或美工刀在外壳背面的上角之一为 USB 插头切一个开口。将 USB 插头穿过它。

确保 USB 插头从外壳背面伸出 11.5 毫米/0.45 英寸,并使用聚氨酯胶将 USB 插头粘在外壳中。

从 USB 插头的 +5V 焊接一根电线,从 USB 插头的接地焊接一根电线。当您将电路板放入外壳中时,这些电线将分别连接到 90 度公 - 母针连接器的“电池”和接地。

按钮和 LED 开口:

在机箱盖上钻孔,使按钮和 LED 指示灯突出。直径为 4 毫米/5/32 英寸的钻头非常适合小纽扣,而直径为 8 毫米/5/16 英寸的钻头非常适合较大的纽扣。使用埋头钻钻头做一个锥形孔,这样看起来就好看了。对于 LED,我钻了一个比 LED 本身小得多的直径 (1mm / 1/32”)。否则,我发现我选择的 LED 会产生太多的光。如果电灯开关位于卧室中,则从开关射出的光线过多可能会令人不安。

提示:
将空的可焊接试验板放在外壳盖上,并使用细尖笔在应钻孔的外壳上绘图。
4

编程

我使用 Arduino IDE 对我的 Feather Huzzah 进行编程。如果您还没有这样做, 请下载并安装 Arduio IDE

为了能够使用 Blynk,我必须使用适用于 Arduino IDE 的 Blynk 库。Blynk 库可以在这里下载。请按照以下步骤安装库(引自 Blynk 网站):

  1. 下载最新版本的 .zip 文件。
  2. 将所有这些库复制到 Arduino IDE your_sketchbook_folder。要查找 your_sketchbook_folder 的位置,请转到 Arduino IDE 的顶部菜单: 文件 -> 首选项 (如果您使用的是 Mac OS - 请转到 Arduino →首选项
  3. 解压缩它。您将注意到 archive 包含多个文件夹和多个库。

your_sketchbook_folder 的结构现在应该如下所示,其他 sketch (如果有) 也是如此:

your_sketchbook_folder/库/Blynk your_sketchbook_folder/libraries/BlynkESP8266_Lib ...

your_sketchbook_folder/tools/BlynkUpdater your_sketchbook_folder/tools/BlynkUsbScript ...

请注意,应该转到 libraries tools tools。如果您没有 tools 文件夹,您可以自己创建它。

代码可以在以下 Github 存储库中找到:https://github.com/vjuvet/Feather-Huzzah-wifi-remote

它应该有相当详细的文档记录,但如果您有任何问题,请随时发表评论。

总之,代码的工作原理如下:

定时器每 200 毫秒运行一次函数 checkInputs。此函数检查按钮是否已按下或释放。

checkInputs 中:

如果释放该按钮,则不会执行任何作。

如果按下该按钮,它将切换开关的状态 (switchState),并调用函数 sendState。

sendState 的

如果按下其中一个小按钮,函数 sendState 将通过内置函数 bridge.virtualWrite 将开关的新状态发送到相应的中继。

如果按下较大的按钮,函数 sendState 将通过内置函数 bridge.virtualWrite 向所有中继发送 “off” 状态。

代码的其余部分是设置、创建变量、连接到已知的 wifi 等......

5

设置Blynk应用程序

Blynk 是一个很棒的应用程序,它可以在您的手机、设备和 Blynk 服务器之间建立链接。他们有一个很棒的社区,很多例子,应用程序界面是用户友好的,同时仍然可以定制。该应用程序是免费的,但它附带了数量有限的小部件,您可以添加。如果您添加我拥有的所有小部件,您可能需要购买 5 美元的信用。但是提议的许多小部件都是可选的,你可以免费做这个项目,特别是如果你想控制少于 15 个继电器。

如果您以前从未使用过 Blynk,请按照以下步骤进行设置:

  1. 从 Google Play 商店或 App Store 在您的智能手机上安装 Blynk 应用程序。
  2. 在 Blynk 应用程序中: 登录或创建帐户 创建新项目 为每个遥控器和中继添加一个设备(选择 ESP8266,具有 wifi 连接) 按照此步骤中的如下所述构建控制面板
  3. 使用 USB 数据线将 feather Huzzah 连接到您的计算机。
  4. 确保您在上一步中下载并安装了 Blynk 库。
  5. 在程序中,输入您通过电子邮件从 Blynk 收到的身份验证令牌。
  6. 在 Tools -> Port 中,选择 Arduino 连接的 COM 端口。

我在仪表板上创建了 5 个选项卡:

Lights 选项卡用于打开/关闭单个灯(或连接继电器的任何灯)。在切换模式下,我使用了按钮小部件,以开关为目标,V0 是 0 到 1 之间的输出。我对每次切换都这样做。

组选项卡用于打开/关闭灯组(或连接到继电器的任何设备)。我只是为每个房间创建标签,然后重复与 Lights 选项卡相同的步骤,每个组都有一个按钮小部件。

定时器

我添加了几个计时器,可用于在晚上打开前廊灯,或模拟您度假时的存在,或打开床头柜灯以唤醒您,等等......我选择了以下小部件:


  1. 时间输入小部件,我在其中选择了我要控制的继电器,输出 V3,允许开始/停止输入,并允许时区选择。
  2. 一个按钮小部件,我在其中选择了同一个继电器,输出 V4 在 0 和 1 之间,处于“开关”模式。这是为了告诉 Relay 是否应该遵循时间表。
  3. 另一个按钮小部件,我在其中选择了同一个继电器,输出 V0 在 0 和 1 之间,处于“开关”模式。这是手动打开或关闭继电器。

监控

Monitor 选项卡包含一个终端小组件。这仅用于调试目的。在 “source” 中,我选择要调试的设备。输入为 V16。我还有一个通知小部件,用于在硬件脱机时通知我(可选),还有一个实时时钟小部件,以便设备能够立即显示当前时间(仅在使用计时器时才需要)。

指示灯

LED 选项卡包含一组用作反馈的 LED。这也是可选的。我选择了 LED 小部件,选择了一个继电器,输入为 V1。我对每个接力都这样做了。


6

使用和可能的改进

我现在已经在家里安装了 6 个遥控器,并用了几个月。我相信它们运行良好,我不会有太多需要改进的地方。“关闭所有灯”功能是一个很大的改进。外观非常简单朴素,我喜欢这一点。用于 LED 反馈的小孔不会产生太多的光,因此它们在夜间不会打扰我,但即使在白天,它们仍然可见。响应时间非常快。

以下是一些可以改进的地方:

  1. 如果继电器使用其链接遥控器以外的其他设备打开/关闭(例如 ample 使用应用程序),遥控器不知道继电器状态已更改,因此它不会更新其反馈灯。此外,当我想用遥控器关灯时,在我用我的应用程序打开灯后,我将不得不按两次按钮:第一次,遥控器打开灯,即使它已经打开,第二次它关闭它。 这没什么大不了的,但我尝试实施此修复程序,但找不到定期检查其他设备状态的 Blynk 函数。如果您有想法如何做到这一点,请在评论中告诉我。
  2. 我选择了我找到的尽可能小的外壳,但它仍然很厚。它们可以更薄,但我没有找到这样的塑料外壳。
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载