资料介绍
描述
Arduino 怀旧之情
我十一岁的时候开始玩 Arduino,我的第一个项目在这里发布(它现在突然消失了吗?)是在我十三岁的时候——但现在我十八岁了。时间过去了,但几天前我决定重新打开“Arduino 盒子”,在烧焦的组件和死昆虫之间,我拿起了我的 Arduino UNO 和一个在 Aliexpress 上购买的 Ethernet Shield 仿制品。我不得不说,这是一个“怀旧项目”,我决定不为这个项目买任何东西,只使用那个盒子里的东西——而且,以太网电缆是免费的,因为我在学校偷了它。
我决定做一个 HomeKit 相关的项目,主要有两个原因:
开始之前:安装 HomeBridge
由于 Ethernet Shield 不是连接家庭自动化配件的最可能方式(在大多数情况下首选 Wi-Fi),因此没有一种“官方且经过测试”的方式可以直接连接到 HomeKit 而无需中间设置。相反,对于 ESP 系列,有一个库可以让 HomeKit 直接访问开发板,当然配置和设置起来相当复杂。
在这个项目中,Arduino 开发板和 HomeKit 之间的通信由 HomeBridge 管理。HomeBridge 是一个服务器,可以托管在 LAN 上的计算机上,并充当本地网络设备和互联网之间的“桥梁”(顾名思义)。这可能是一个缺点,因为需要一台托管服务器的计算机,但它对于像我们将要制作的简单编码设备来说更实用。
就我而言,这不是我实际会使用的设备,它更像是一个演示。所以我在我的 iMac 上托管了 HomeBridge。在本教程中,我不会向您展示如何安装它,而是为您提供一个有用的链接,向您展示正确的安装方法,请查看此链接以在 macOS 上安装 HomeBridge 。
在那之后,你可能会看到类似这样的东西
将 HomeBridge 添加到您的家庭应用
安装 HomeBridge 后,您必须将所谓的“HomeBridge Hub”添加到 iPhone 上的家庭应用程序。为此,请按照下列步骤操作:
- 打开家庭应用
- 单击屏幕右上角的“+”图标,然后单击“添加附件”
- 扫描 HomeBridge 仪表板上显示的二维码
- 点击“添加到主页”
- 该应用程序会说该桥未经过认证,无论如何都要添加它
- 选择桥梁在您家中的位置
- 为桥选择一个名字
完成后,桥将添加到您的 Home 应用程序中
安装 HomeBridge 插件
整个项目依赖于两个插件,homebridge-http-rgb-push和homebridge-http-notification-server 。对我们来说幸运的是,按照以下步骤安装这些插件非常容易:
- 转到 HomeBridge 的“插件”部分
- 在搜索栏中输入两个库的名称
- 通过单击“安装”按钮安装库
通常这个过程很快,应该不会出错,如果你运气好,我们就可以进行下一步了。
HomeBridge 配置文件
HomeBridge 配置和定制的核心是一个 JSON 文件。HomeBridge 通过将其加载到浏览器内的编辑器中,可以轻松访问和修改它,该编辑器可以在“配置”面板中轻松访问。
在这里,您必须做出第一个重要决定,即要为 Arduino 设置的 IP 地址。如果需要,您以后可以随时更改它。您最有可能希望用于该附件的配置如下。
将其粘贴到“附件”括号内
{
"accessory": "HttpPushRgb",
"name": "Arduino RGB",
"service": "Light",
"timeout": 3000,
"switch": {
"notificationID": "47110815",
"status": "http://192.168.1.177/statuspower",
"powerOn": "http://192.168.1.177/on",
"powerOff": "http://192.168.1.177/off"
},
"brightness": {
"status": "http://192.168.1.177/statusbrightness",
"url": "http://192.168.1.177/brightness/%s"
},
"color": {
"status": "http://192.168.1.177/statuscolor",
"url": "http://192.168.1.177/set/%s"
}
}
要设置附件名称,请编辑“名称”字段。如果你想保留我使用的 IP 地址,那没问题。最后,您应该会看到这样的屏幕。
要应用这些更改,您必须通过单击橙色保存按钮来保存文件,然后通过单击右上角的关闭图标重新启动 HomeBridge(保存文件后它将开始闪烁)
通过打开 Home 应用程序,您现在应该会看到自动添加的配件。
阿杜诺,终于
是的,我们终于回来了。同样对于 LED 设置,我使用了我已经拥有的,这就是我使用的:
- 便宜且通用的 12V LED 灯条
- 一些MOSFET
- 一些1k欧姆的电阻
如果你愿意,你可以附加一个简单的按钮并将其用作“手动开关”,这也会通过向服务器发送通知来更改 HomeKit 上的状态。附加一个按钮不应该那么难,但是有一个关于如何做的很好的教程:)
说到代码,它并没有那么复杂。如果您迫不及待地想对此进行测试,则可以直接将其上传到您的板上,而无需花时间观看它。但是停下!首先,您应该检查为 RGB 通道和按钮定义的引脚分配,然后设置正确的 HomeBridge 服务器 IP 地址和为您的电路板选择的地址。
// connections of the three LED outputs and the button input
#define outRed 3
#define outGreen 5
#define outBlue 6
#define switchButton 7
// network properties
char homebridgeServer[] = "xxx.xxx.xxx.xxx"; // your HomeBridge server IP address
int homebridgePort = 8581;
IPAddress ip(192, 168, 1, 177); // IP address of Arduino (must be equal to the one set on homebridge!)
您要重点更改的主要地址是 HomeBridge 服务器地址,如果您托管 HomeBridge 的机器具有静态 IP 地址(例如 Pi),则可以立即设置。就我而言,我的电脑在局域网内没有静态 IP 地址,我不想只为这个项目设置静态地址。如果你的情况和我一样,你可以使用大多数路由器提供给每个主机的.local mDNS地址(在我的例子中,我设置的地址是“myMacExample.local”,你的路由器的mDNS服务器将自动解析此地址并提示请求到正确的 IP 地址)。
您始终可以在 HomeBridge 仪表板中查看您的 HomeBridge 服务器地址,就在二维码图像下方。如果你打算每天使用 HomeBridge,我真的建议你为托管它的机器分配一个静态 IP 地址。
最后但同样重要的是,检查草图中设置的 Arduino 的 IP 地址是否等于 HomeBridge 配置文件中设置的 IP 地址。
完成所有这些后,您现在可以将以太网扩展板粘贴到 Arduino 上,插入以太网电缆并加载草图。
解释代码
为了确保正确处理以太网设置,我从官方 WebServer 和 WebClient 示例开始构建我的草图。使用 Arduino 以太网库发出请求很粗糙,但很容易。
这是在 Home 应用程序中进行更改时系统执行的流程:
- HomeKit 向 HomeBridge 服务器发送一个事件
- HomeBridge 服务器然后将其发送到 Arduino
- Arduino 让这一切成为现实
- 为了确认请求已得到满足,需要一个确认响应,因此 Arduino 在执行操作后向 HomeBridge 发送确认
- 然后 HomeBridge 确认该操作发生在 HomeKit 上
- 最后 HomeKit 在 Home 应用程序上显示更改
处理动作的 GET/SET 的代码如下。本例为“on”动作的接收-执行-确认流程。
if (firstLine.indexOf("on") != -1) { // action is received
Serial.println("Turning ON");
// action is executed
powerStatus = 1;
analogWrite(outRed, colorR);
analogWrite(outGreen, colorG);
analogWrite(outBlue, colorB);
// action in confirmed back to the server
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println(powerStatus);
}
为了通知服务器状态的变化,例如通过改变开关状态的按钮,实现了以下流程
- Arduino 向 HomeBridge 发送 POST 请求
- HomeBridge 验证设备的状态,验证是否与 Arduino 发送的相匹配
- HomeBridge 通知 HomeKit 状态改变
- HomeKit 在 Home 应用程序上显示更改
这是 Arduino 构建和发送的通知请求,其余由 HomeBridge 完成
Serial.println("==========");
Serial.println("Button changed the state, sending a notification to HomeBridge");
if (notificationClient.connect(homebridgeServer, homebridgePort)) {
if (powerStatus == 0) {
powerStatus = 1;
} else {
powerStatus = 0;
}
Serial.print("Successfully connected to: ");
Serial.println(notificationClient.remoteIP());
notificationClient.println("POST /47110815 HTTP/1.1");
notificationClient.print("Host: ");
notificationClient.print(homebridgeServer);
notificationClient.print(":");
notificationClient.println(homebridgePort);
notificationClient.println("User-Agent: Arduino/1.0");
if (powerStatus == 0) {
notificationClient.println("Content-Length: 41");
} else {
notificationClient.println("Content-Length: 40");
}
notificationClient.println("Content-Type: application/json");
notificationClient.println();
if (powerStatus == 0) {
notificationClient.println("{"characteristic": "On","value": "false"}");
} else {
notificationClient.println("{"characteristic": "On","value": "true"}");
}
delay(1);
notificationClient.stop();
Serial.println("Notification sent");
Serial.println("==========");
} else {
Serial.println("Connection failed");
Serial.println("==========");
}
理解了这些流程概念后,代码就很容易理解了。它由基本的 HTTP 请求组成,如果你问我,它不是那么安全,但 HomeBridge 将确保互联网连接的安全性。
……有效果吗?
我真的希望如此!为了确保这一点,请始终注意串行监视器,因为那里会记录非常有用的调试信息
在串行监视器上,您将看到收到的每个请求、完成的请求操作和处理的信息。您还将看到,当按钮被触发时,通知请求被发送到服务器
此外,始终检查 HomeBridge 上的日志,显示服务器发送或接收的每个请求
嘿 Siri,就这样(几乎)
是的,仅此而已。我希望这对你来说很容易设置,因为我很难让它工作。我遇到了一些问题,例如家庭应用程序上的附件“丢失”,可能是由于 HomeBridge 对 Arduino 的非连续轮询造成的。要重新获得对配件的控制,只需在 Home 应用程序上点击它,这将唤醒 HomeBridge 并将配件重新连接到网络。
我已经很长时间没有测试过这个项目了,因此我不建议依赖这种设置作为 DIY 家庭自动化的永久解决方案,肯定有更好的。但是,嘿,这是一个学习的机会,无论是对我还是(我希望!)对你来说,了解这个复杂的东西 - 如 HomeKit - 是如何工作的。
对于任何问题,请不要犹豫写评论。在这里,我将在 Apple 生态系统内的 Home 应用程序中留下一些最终外观的屏幕截图。
- APA102 RGB LED - FPGA视频控制器
- RGB LED控制器开源分享
- 用于家居装饰的简单RGB控制器
- 如何制作RC控制器
- RGB LED灯控制器开源分享
- ESP8266单股RGB LED控制器板
- 远程Wifi RGB LED控制器开源项目
- 液位控制器设计与制作解析 19次下载
- 电梯控制器设计与制作 18次下载
- 基于PAC的电机控制器快速控制原型研究 50次下载
- 灯光控制集成电路与灯光控制器制作 0次下载
- 家电自动控制器的制作及电路图
- 电风扇加装阵风控制器电路及制作
- 电磁水阀自动控制器电路及制作
- 水箱自动上水控制器电路及制作
- 微控制器与运动控制器的区别 377次阅读
- PID控制器与PWM控制器的区别 1661次阅读
- PID控制器与开关控制器的区别 398次阅读
- 矩阵LED调光器可在RGBW LED中实现精确的色彩控制和图案制作 2141次阅读
- PID控制器概述与制作实例 5313次阅读
- 如何使用Arduino Leonardo和MPU6050制作一个有线的手势控制器 2625次阅读
- 用单运放制作的控制器电路 3070次阅读
- 如何制作简易降压控制器 2379次阅读
- dfrobotuHex微型低功耗控制器简介 1407次阅读
- 电话远程控制器的设计与制作 2187次阅读
- 什么是运动控制器_运动控制器的工作原理及应用 3.6w次阅读
- HomeKit是如何实现真正的智能家居的? 6490次阅读
- homekit怎么设置,homekit用户界面指南 1.5w次阅读
- 自制红外线自动门控制器电路制作方案 4414次阅读
- 用MAX6641制作的智能温度控制器电路图 4262次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多