OpenWRT 路由器打造智能家居服务器

本文的重点是:将便宜的路由器转成家庭自动化服务器!该项目将允许您从 iPhone 或任何浏览器开头插座、灯;还可以远程发送串行命令。

这个项目基于 SmartLinc,下面是相关的链接:

http://www.smarthome.com/2412N/SmartLinc-INSTEON-Central-Controller/p.aspx

http://wiki.smarthome.com/index.php?title=2412_Manual_rev_2.0

相关组件

  • OpenWRT兼容路由器,带有串行头
  • AVR微控制器开发板(如Arduino)
  • 执行器如:射频开关插座(433.92Mhz),带遥控器

步骤1:总览

OpenWRT Server overview
OpenWRT Server overview

系统

路由器运行Web服务器,您可以通过浏览器访问它。

在网页上按下按钮后,路由器发出串行命令,   我们用微控制器处理它,AVR 将其转换为 RF (射频)协议,将其注入到 RF 遥控器中,RF 遥控器控制 RF 出口。  

步骤2

你可以从 http://wiki.openwrt.org/toh/start 列表中,选择一个合适的路由器。

我选择了 TP-Link TL-WR741ND,因为它便宜(约$ 30)。

拆开它(将会导致保修失效!)。 而您将不得不将串行接头焊接到电路板上,以访问串行端口。 TL-WR741ND 指令可以在这里找到:http://wiki.openwrt.org/toh/tp-link/tl-wr741nd 对于其他路由器,请在这里搜索:http://wiki.openwrt.org/toh/start

完成焊接后,通过通风孔将四条电缆从外壳中进行管理。 我在最后使用了RJ22插头,用于快速连接。

步骤3:配置路由器

在路由器上安装基于 Linux 的 OpenWRT 固件。  如果你遇到一些困难,从这里开始:http://openwrt.org

在您有一个可用的 SSH 连接后,您可以继续。

由于路由器(默认情况下)在端口 80 上运行 Web 管理页面,因此我们需要添加辅助端口来为我们的自定义网站提供服务。 为此,我们需要配置 uhttpd(Web服务器应用程序)配置文件。

下载 WinSCP,就能在 Windows 上简单地通过SSH执行此操作:http://winscp.net/download/winscp429.zip

建立一个新的连接:

Host name: normally 192.168.1.1 (默认)
Port: 22
User name: root
Password: 安装后你给的密码
File protocol: SCP

然后找到文件 /etc/config/uhttpd,将下面的内容复制进去:

config 'uhttpd' 'secondary'
option 'listen_http' '81'
option 'home' '/HomeAutomation/www'
option 'cgi_prefix' '/cgi-bin'
option 'script_timeout' '60'
option 'network_timeout' '30'

保存上面的文件内容。

步骤4:设置网页

将 /HomeAutomation/ 文件夹结构上传到根目录。并设置位于这里的脚本文件的权限:/HomeAutomation/www/cgi-bin

相关文件:HomeAutomation web page.zip

选择所有文件 -> F9 属性 -> 为每个人设置执行权限(X)(Owner, Group, Others)。关闭WinSCP,重新启动路由器(例如重启电源)。 

现在Web服务器已经准备好了。试试看: 打开网页浏览器,输入:http://192.168.1.1:81。

你应该看到你的自定义网页。

如果您按所附网页上的按钮,路由器将通过先前连接的串行电缆发送串行命令。我们需要拦截这些命令并处理它们。为此,我们需要构建微控制器板(如Arduino)。

代码包含的网站非常基础。如果您制作好的 CGI/AJAX 网站,请与我们分享。

网站如何工作

当您点击一个按钮时,浏览器加载脚本文件,路由器执行位于每个cgi文件中的shell命令(串行输出)。脚本文件然后将浏览器重定向到索引页(约1秒)。

如果要输出自定义串行命令,请修改.cgi文件。串行命令如下:

echo -e "\x9B\x11\x08\x22\xC5\x0D" > /dev/ttyS0

这里 \ x修饰符用于以十六进制代替 ASCII 输出数据

协议细节

我尽可能简单。 一个包的内容包含:

Byte# Function
1 Synchronization (0x9B)
2 Message type, use 0x00 or 0x01 for now (check firmware for details)
3 Data1
4 Data2
5 Checksum (calculated from Byte#2-4)
6 End character (, 0x0D)

包相关的信息见:Packet Generator.xls

步骤5:硬件

Hardware
Hardware

对于我来说,Atmega88(内部 8Mhz 振荡器)无法在 3V3(由路由器提供)上运行,因此我必须使用一个 5V 的外部电源。 因此,我们需要在 5V 的 MCU <-> 3V3 的路由器串口之间进行电压转换。该电源供电器还具有用于 RF 遥控器的 12V 导轨(rail),因此可以在没有电池的情况下运行。

将信号注入RF遥控器。

您需要找到自己的遥控器的数据路径,通常它在 IC 和 晶体管之间(见图)。使用电阻来驱动晶体管。

![RF遥控器][3]
RF遥控器

固件

为了烧录固件需要使用相关的 IDE: http://www.atmel.com/forms/software_download.asp?family_id=607&fn=dl_AvrStudio4Setup.exe

http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download

http://electronics-diy.com/avr_programmer.php

技术细节

MCU:ATMEGA88 振荡器:内部8Mhz 清除 DIV8 保险丝!

固件包含在 zip 文件中。欢迎您分享您对软件的改进。

MCU M88 int8Mhz.zip

步骤6:更多技术细节

RF交换插座和遥控器中常用的IC有:

RF协议包含在这些数据表中。

从页面上的按钮到路由器的串行输出的反应时间是:

  • iPhone&wifi:1秒  - PC&LAN:瞬时(〜100mS)

通过使用基于AJAX的网页可以减少延迟。

步骤7:收获

  • 您可以使用基于Linux的系统,每天24小时运行您的定制软件,功耗仅为4.5W。
  • 连接IP网络摄像头,将视频Feed嵌入网页
  • 可以将自定义串行命令发送到任何外部设备。(请注意 3V3 串行电压电平,我强烈建议您使用 CD40106 作为缓冲区)
  • 在本应用中,您可以将任何可能的RF命令(基于RF协议)发送到接收器。 (即对遥控器上的按钮编号没有限制)

它有多稳定?

由于 TCP/IP因特网协议和复杂的微控制器固件,系统不会错过任何命令。

进一步改进

插入交换机的射频接收器,添加一个MCU,检测数据模式,输出红外代码,您将获得一个基于互联网的遥控遥控器:D

为可处理输入串行数据的路由器编写软件。是的,您将能够从路由器的Twitt(例如来自外部测量设备的功耗报告)。或者做老式的东西,如短信双向控制,家庭报警系统,红外中继器(通过网络),调度程序自动根据时间自动控制事物。

这是原始的SmartLinc网页(它使用AJAX,并在AVR Web服务器上运行!) http://www.cocoontech.com/forums/index.php?autocom=downloads&showfile=71,这是开始开发网页的好方法。

不要忘了分享你对这个项目做了什么。

Created by: Arpad Toth All rights reserved 2010

原文链接:http://www.instructables.com/id/Home-automation-server-with-router/

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.