本文的重点是:将便宜的路由器转成家庭自动化服务器!该项目将允许您从 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
相关组件
路由器运行Web服务器,您可以通过浏览器访问它。
在网页上按下按钮后,路由器发出串行命令, 我们用微控制器处理它,AVR 将其转换为 RF (射频)协议,将其注入到 RF 遥控器中,RF 遥控器控制 RF 出口。
你可以从 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插头,用于快速连接。
在路由器上安装基于 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'
保存上面的文件内容。
将 /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
对于我来说,Atmega88(内部 8Mhz 振荡器)无法在 3V3(由路由器提供)上运行,因此我必须使用一个 5V 的外部电源。 因此,我们需要在 5V 的 MCU <-> 3V3 的路由器串口之间进行电压转换。该电源供电器还具有用于 RF 遥控器的 12V 导轨(rail),因此可以在没有电池的情况下运行。
您需要找到自己的遥控器的数据路径,通常它在 IC 和 晶体管之间(见图)。使用电阻来驱动晶体管。
![RF遥控器][3]
为了烧录固件需要使用相关的 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 文件中。欢迎您分享您对软件的改进。
RF交换插座和遥控器中常用的IC有:
RF协议包含在这些数据表中。
从页面上的按钮到路由器的串行输出的反应时间是:
通过使用基于AJAX的网页可以减少延迟。
它有多稳定?
由于 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/
观光\评论区