Windows IOT - 自动化您的电源插座
组件和用品
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
| ||||
| ||||
| ||||
|
关于这个项目
简介
在这个项目中,我们将看到如何使用在 Windows 10 iot、xbee 和 arduino 上运行的 raspberry pi 在本地和云中控制您家的电源插座。所有代码示例都可以在github中找到。
为什么要自动化电源插座?
如果您可以自动化电源插座,而不是从云端控制设备,我们可以将任何设备连接到电源插座并控制它们。在这个项目中,我以控制风扇和灯为例。
让我们开始使用蜜蜂
我用 Xbee 传输无线电信号。一个称为 Coordinator 的 Xbee 连接到 raspberry pi,另一个称为 Router 连接到电源插座。协调器根据我们的输入将信号发送到路由器以控制电源插座。
在 AT 模式下配置 Xbees
下载并安装XCTU。
为了更新 Zigbee (Xbee) 固件,我使用了 adafruit FTDI 适配器
请观看有关在 AT 模式下配置 Xbees 的教程。
配置蜜蜂
在我们继续下一步之前,您需要确保这两个 Xbees 相互通信。
设置接收器
我们需要 Zigbee 路由器、Arduino UNO R3、用于 Arduino 的 Xbee Shield 和 Arduino 继电器屏蔽。
Arduino 草图
如果来自 CoOrdinator Zigbee 的数据为 ON1,我们打开继电器 1。如果数据为 ON2,我们打开继电器 2。同样我们关断OFF1和OFF2的继电器
您必须在 arduino ide 中编译它并刻录到 arduino uno:
#define RELAY1 7#define RELAY2 5String state ="OFF";void setup(){Serial.begin(9600);pinMode(RELAY1, OUTPUT);}void loop(){//检查是否为串口数据可用if(Serial.available()> 0){state =Serial.readString();Serial.println(state);}//如果文本为ON1。打开relay1if(state =="ON1\r\n")digitalWrite(RELAY1,1);//如果文字是ON2。打开relay2else if(state =="ON2\r\n")digitalWrite(RELAY2,1);//如果text为OFF1.关闭relay1else if(state =="OFF1\r\n")digitalWrite(RELAY1,0);//如果text为OFF2.关闭relay2else if(state =="OFF2\r\n")digitalWrite(RELAY2,0);//Do Nothingelse{digitalWrite(RELAY1,0);digitalWrite(RELAY2,0);}}
配置电源插座(注意我们玩高压)
继电器是电子领域的古老技术。它充当开关。继电器的输入可以是交流电压(110 至 240 V)。使用arduino等微控制器,我们可以打开/关闭继电器
我们要将高压连接到继电器,请尊重交流电流并在将电线连接到继电器时采取极端的预防措施。这太危险了,风险自负
我没有直接将继电器配置到电源插座,而是使用了延长线。不过概念是一样的。
在延长线中,将一根电线保持原样并夹住另一根电线。将电线一端连接到公共端 (C),另一端连接到 NO(常开)
将继电器屏蔽连接到 Arduino,将 Xbee 屏蔽堆叠在顶部或继电器屏蔽上。在 Xbee Shield 上插入配置为路由器的 Zigbee
我使用 Xbee Shield 将 Xbee 连接到 arduino。确保将屏蔽中的设置设为 Xbee。当我们将开关设置为 USB 时,该屏蔽与 arduino 也可用于写入固件设置。它使用arduino内置的FTDI芯片将数据写入Xbee。
插入电源线并使用外部电池电源为 arduino 供电。接收器完成。
配置服务器
要设置服务器,我们需要在 Windows 10 IOT 上运行的 Raspberry Pi 2 和设置为协调器的 Zigbee。
将 Zigbee 连接到 FTDI 适配器,并将 6 针 FTDI RS 232 USB 电缆连接到树莓派 USB 端口。我们将使用 UWP 在 raspberry pi 上设置一个网络服务器。服务器将等待用户输入,并根据选择,将串行数据写入连接 FTDI RS 232 电缆的 USB 端口,Zigbee 将此消息作为无线电波传输。我们已经在协调器 Zigbee 中设置了路由器的 DH 和 DL,因此将消息发送到正确的 Zigbee 路由器。
要了解有关 raspberry pi 的 FTDI 驱动程序的更多信息,请参阅 https://github.com/jark/ftdisample
请按照此视频在 Raspberry Pi 上设置服务器。
所有代码示例都可以在github中找到。
启用 Azure
为了从世界任何地方控制我们的家,我们为我们的应用启用了云服务。
您需要创建一个网站并将其托管在 azure 中。创建 Azure SQL DB 以对站点的用户进行身份验证/授权。创建一个 Azure 云存储服务来执行我们的命令。处理来自 Raspberry PI Blinky App 的这些命令并控制您的家。
创建存储表需要参考这篇文章:
https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/
创建Sql表,参考这篇文章:
https://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started/
请观看有关如何在我们的项目中使用 azure 的视频教程:
启用 Azure演示
我试图展示如何通过两种方式控制电源插座,
- 访问网络中的树莓派 Web 服务器 url
- 通过托管在 Azure 中的 aspnet5 Web 应用程序
结论
- 这种自动化解决了许多现实世界的问题。通过附加额外的传感器,如光和运动检测器,我们可以打开/关闭灯或至少向用户提供数据以节省能源。
- 老年人可以使用遥控器控制他们的电源插座。在这种情况下,我们需要额外的 RFID 设备。
- 我们可以制定开/关灯的时间表,以节省电力。
- 如果有任何入侵者,可以打开所有灯。
- 在假期中,无需担心......我们只需点击一下按钮即可关闭我们的家。
- 无需一直保持室温,只要您觉得合适就可以。节省能源。
代码
- 中继
中继C/C++
控制继电器#define RELAY1 7 #define RELAY2 5String state ="OFF";void setup(){ Serial.begin(9600); pinMode(继电器1,输出); }void loop(){ //检查串口数据是否可用 if(Serial.available()> 0){ state =Serial.readString(); Serial.println(状态); } //如果文本是ON1。打开relay1 if(state =="ON1\r\n") digitalWrite(RELAY1,1); //如果文本是ON2。打开relay2 else if(state =="ON2\r\n") digitalWrite(RELAY2,1); //如果文本为OFF1。关闭relay1 else if(state =="OFF1\r\n") digitalWrite(RELAY1,0); //如果文本为OFF2。关闭relay2 else if(state =="OFF2\r\n") digitalWrite(RELAY2,0); //什么都不做{ digitalWrite(RELAY1,0);数字写入(继电器2,0); }}
示例
示例代码https://github.com/syediddi/hacksterio示意图
将电源线连接到继电器制造工艺