用 Linux 控制你的家電 <!-- chapt change Linux 控制家電 簡簡單單用 Linux 控制你的家電 --> <author>Rui Li <htmlurl url="mailto:ruili@worldnet.att.net" name="ruili@worldnet.att.net"> <date>v0.003, 26 April 2001 <abstract> 這篇文章教你如何用 Linux 來簡單的控制你的家電. 你只需要做一個小小的簡單電路,就可以用 Linux 控制你的家電了 </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt>簡介 --> <sect>簡介 <p> 相信很多人都想知道 Linux 是否可以控制家電呢?這也一直是我比較喜歡玩的東西, 現在,我可以給你一個肯定的答案: Linux 可以非常輕鬆簡單的控制你的家電! <p> 前段時間閒來無事,就把 mini-howto 中 coffee-machine 那篇文章中的電路研究一番, 然後再加以改進,做了個小的家電控制的電路這樣可以利用 crontab 自動設定很多東 西,比如室內電燈,空調在一定的時間自動打開之類的.反正只要是用電的簡單的開 關目前都能控制.當然,這個電路也可以控制其它的東西.但是那也要對家電做一點 小小的改動.比如我家中的 VCR 和 VCD 都被我改過,所以 撥放/停止, 前進/後退, 頻道 等等都可以用電腦控制.寫個小程式,還可以利用 web 來控制( 隨然我都是用 telnet or ssh ) 利用數據機撥入可以做到打電話到自己的電腦里後,輸入一組號碼 控制某個家電.我下班的時候,就可以從辦公室 telnet 到家里,這樣回去的時候,空調已經打開了, 如果時間算的準,回家的時候燈也剛好打開了:) <p> 這個電路最大的好處就是<it><bf>非常簡單</bf></it>.只要五個電子元件就能做成.可以讓不懂 電路的人也玩的開心. <p> 這個電路可以再次改良,能完成更多的功能,這就看你自己怎麼控制啦. 我在這里就只講基本的東西. <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt>系統要求 --> <sect>系統要求 <p> 隨便找一台可以裝起來 Linux 的電腦,確定有個正常工作的並列埠就可以了. 我目前正在用一台 386DX with 4MB RAM 40MB HD 的電腦控制我的家電. 軟體方面,你需要 gcc 去編輯控制的程式. 如果想用 telnet 控制,那麼你還需要 telnetd 你可以自己寫個控制並列埠的程式. 利用 ioperm 和 outb(value,port), 來控制並列埠. 通過 value 值的改變達到控制多組家電的目的. <p> 你也可以下截我已經寫好的程式,這個程式需要 g++ 來 compile <url url="http://home.att.net/~ruili/goldencat/paralle.tar.gz"> <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt> 電路基本原理 --> <sect>電路基本原理 <p><code> 利用電腦的並列埠資料線1到並列埠資料線9可以提共0到5伏電的特性. 控制一個繼電器而達到控制電器的目的.</code> <p> 需要重點說一下,這裡用的是 paralle port,就是接打印機的那個.不是RS232. 因為收到不少E-mail,搞混 paralle port 和 RS232<p> 下面是電腦的並列埠和一個單一的簡單電路:<p> 我們需要用到的只有 pin 2 到 pin 9 這八個 pin (可以得到+5v)<p> pin 18 一直到 pin 25 是通的, 是地線 <p> <CODE> ____________________________________________________________ / \ \ 13 12 11 10 9 8 7 6 5 4 3 2 1 / \ / \ 25 24 23 22 21 20 19 18 17 16 15 14 / \______________________________________________________/ | 這裡是給提繼電器共正電 Vcc | | / -------+--------| |---------| P data 4.7K B / c | 1N4002 |_| |------- -----------/\/\/\/\---------+-----| NPN __ __ | relay |這裡接家電 | \ e /_\ |-| |------- LED X \ +--------| |---------| P Ground | | | ----------------------------+-------+--------+ 給relay供電的Ground線 | ---------------------------------------------+ </CODE> <p> 原理和介紹: <p> <CODE> P data 並列埠資料線 (pin2 到 pin9 都是,這裡的簡單電路只用到了一條) p Ground 並列埠地線 (18~25隨便挑一條你覺得順眼的) Vcc 看你用那種繼電器而定,我用的是 12V 的繼電器所以就接個 12V 的直流電源供應器 Ground 12V 直流電源供應器的地線 4.7k 4.7K 電阻 NPN 我是隨便找了個 NPN 的電晶體, 這個只要隨便找個差不多的 NPN 就可以了 我的是c2235,也可以用BC547A或者2N222A 1N4002 1N4002 的二極體 LED 發光二極體隨便找個會發光的就好了.這里當作指示燈 當家電的開關被打開後,燈就會亮 relay 繼電器,功率看你需要的買,我最小的都用300W(自己算算就知道了,一個電燈通常45W) 這裡選擇的是coil relay. 主要是看你接甚麼家電.300W對大多數都沒有問題. 如果接空調之類的,最少3000W才安全 </CODE> <p><code> 這個電路通過電腦的並列埠得到一個+5v電壓打開繼電器,這樣繼電器那邊的家電就就被接通了. 當並列埠的電壓變成0的時候,繼電器就會跳回關閉狀態,家電也就關閉了.</code> <p> 這裡再講講relay的工作原理和如何把你的家電連結在relay上,這部份算是FAQ啦<p> <code> 這裡是一個relay,及relay的內部工作原理: ____________________________ | | 1 | | 3 -----|---------s o----------|------- | coil s \switch | 2 | s \ | 4 -----|---------s o- \-------|------- | | | | | | |__________________________| 上面畫的是一個4只腳的relay.這裡,relay pin3 和 pin4 平時是斷開的. 當 pin1 和 pin2 之間加的電壓以後 (+12V),通過coil,就會把 switch 打開.這時候, pin3 和 pin4 就是通的了.實際上, pin1, pin2 起到的 作用,只是控制開關而已. relay本身就是一個開關: 這就是relay斷開的狀態 relay打開的狀態 |3 |3 | | | | o o \ | o \ o | | | | | | |4 |4 還有人問我說,買到的relay是五只腳的,那麼就順便講講 5 個 pin 的 relay 啦 _______________________________ | | 1 | | 5 ---------|---+ o------------|---------------- | |-----------/---- s | | / s | 3 | / s | ---------|-----------o/ s | 4 | o---s-------|---------------- | | | | | | 2 | | | ----------|---------------------+ | |_____________________________| 不太好畫,差不多就這樣啦.現在來講原理: 平時的狀態下, pin3 和 pin5 是通的. pin5 和 pin4 是斷開的. 當在 pin1 和 pin2 之間加電以後(12v), pin3 和 pin5 就斷開 了,而 pin5 和 pin4 就接通了.看下面的原理: 現在是 relay 關閉狀態 這是relay打開狀態 |5 |5 | | | | o o \ | o \ o o | o | | | | | | | | | | 4| |3 4| |3 relay 還有四只腳的五只腳的,這裡就不介紹了,原理上都一樣,只不過 腳越多,也就說是個越複雜的開關而已.我們只有用到4只腳就夠了. 這裡在聲明一下,每個 relay 的設計都會不一樣,也就是說, pin 放的 位置不一樣.我上面畫的都是原理,具體那只腳長在 relay 的甚麼部位, 還是要自己去判斷的,如果自己不會測,買的時侯問問老闆. 有些 relay 會在 relay 有 pin 的地方標一個小小的 s ,那麼 s 兩邊 的 pin 就是 pin1, pin2. 這裡的 s 是指 coil. 接下來說說如何把家電連接到 relay 上. +-----+ 電源插座 1 _______3 | __|________ || || --| |---------+ | | | || || 2 |relay|4 | (o) (o) | _||___||__ --|_____|----+ |------|---| | | | | | | 家電 | +------------+ | |的插頭 | | | | | | | | __|_|__ | | | | | | |________| | | | | 插頭 1 | | | | |_|_|_| (不管畫的像不像,反正這就是個插頭啦) || || || || 只要把家電的插頭插到那個電源插座裡面,就好啦.也就是說,不用對家電 做任何的改變.只要改個插座就好.這樣任何家電都可以用. 而插頭 1 呢,插到家裡牆上的電源插座就好.</code> <p> 我自己寫了個程式可以很方便的控制並列埠的八條資料線.(需要 g++)<p> <url url="http://home.att.net/~ruili/goldencat/paralle.tar.gz"> <p><code> 完整的電路可以控制八組繼電器也就是說可以控制八組不同的家電. 你還需要一個DB25接頭(並列埠接頭)的接口,這樣利用一條並列埠排線就能簡單的把電腦和控制電路連接到一起了.</code> <p> 我是建議接的時候,做個盒子,電路都放在盒子里.盒子的正面是開關,指示燈 和DB25的接口.平實用並列埠排線和電腦連接. 底下有些圖片可以讓你參考<p> <url url="http://home.att.net/~ruili/goldencat/p1.jpg"><p> <url url="http://home.att.net/~ruili/goldencat/p2.jpg"><p> <url url="http://home.att.net/~ruili/goldencat/p3.jpg"><p> <p><code> 完整的電路圖(控制八組繼電器)是用 gschem 做出來的.</code><p> <url url="http://home.att.net/~ruili/goldencat/01.png"><p> 如果需要把圖片放大(這樣看的會清楚很多)可以找我要我用 gschem 直接輸出的存檔 但是這需要 gEDA <p> 下截 gEDA <url url="http://www.geda.seul.org/"> <p> 我的homepage:<p> <url url="http://home.att.net/~ruili/goldencat/index.html"> <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt> 感謝 --> <sect> 感謝 <p> 這裡特別感謝 Rufus Chang <htmlurl url="mailto:rufus@chu.url.com.tw" name="rufus@chu.url.com.tw"> 如果不是他提議,我就根本不會想到寫這篇 mini-howto. 看的人也只好去 bbs 找,或者運氣好能找到我的 homepage :) 他也幫助我翻譯了一些我無法翻譯成中文的英文單詞 <p> 也特別感謝 Chih-Wei Huang <htmlurl url="mailto:cwhuang@linux.org.tw" name="cwhuang@linux.org.tw"> 能讓我把這篇 mini-howto 放到 CLDP <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt>Mirror --> <sect>Mirror 我的homepage:<p> <url url="http://home.att.net/~ruili/goldencat/index.html"><p><p> Mirror in Taiwan:<p> <url url="http://www.study-area.net/goldencat/linux-mini-howto/index.html"><p><p> I'm still looking for a Mirror in People's Republic Of China<p><p> English Version (maybe old):<P> <url url="http://www.linuxdoc.org/HOWTO/mini/Home-Electrical-Control/"><p><p> <!-- ******************************************* ************ End of Section *************** ******************************************* <chapt> Copyright and License --> <sect> Copyright and License <p> Copyright Rui Li 2000-2001 License is GNU GPL, but it is requested that you retain the author's name and email on all copies. 當您 copy 這篇文章的時候,請保留我的姓名和 E-mail <!-- ******************************************* ************ End of Section *************** ******************************************* --> </article>