遠端家電控制及保全系統之實作及分析
張凱揮
台灣大學電機工程學系
現在的家電用品都是要人親自操縱才能使用。有的家電用品如飯鍋、錄影機等雖然可以設定時間開始自動操作,但卻不能預防突發狀況。例如本來預定六點回家吃飯,但臨時要加班,就白煮了一鍋飯了。最好的方法,應該是不管人在何處,都能隨時操作家中的家電。有人就想到要將家電全部連上網路。但每個家電都要有網路設備似乎成本太高了。而在傳統的保全系統上,如果沒有連接保全公司,那防盜器只能做到嚇阻的功效,無法立刻通知屋主,也就不能及時做出反應。
所以我們希望設計出一套設備做為網際網路和家電、防盜器間的橋樑。對使用者來說他只要利用到處都有的telnet程式telnet回家即可操控家中電器,而對電器來說它將能收到來自電腦的指令而做出對應的動作。而對防盜器來說它可以有一個介面通知電腦異常狀況,電腦再利用網際網路設法通知屋主。
我們的系統架構圖如下:
電腦和家電的介面需要一片介面卡。我們利用ISA Bus製成一片8 bit介面卡,利用I/O port和電腦溝通。電腦下指令到特定port時介面卡即會收到,並把資料送出。若是防盜器要送信號給電腦也會送到某一個特定port,電腦會用polling的方式監看那個port來接收信號。其架構如下:
供給大電流的連接埠則是利用TIP 100這一種功率電晶體來做。在輸入電壓高時利用Open collector可以提供很大的電流。其架構如下:
在電腦上我們需要執行一個server的程式。它做為網際網路和硬體的介面。所以一方面要能下指令控制介面卡並接收介面卡的來的訊息,另一方面也要同時能接收網際網路上利用telnet來的控制信號,並且將反應結果送回。
在實作上我們是利用MFC撰寫這個server程式。利用outp, inp做硬體的溝通,利用CAsyncSocket做和網際網路的溝通。
在遠端介面上最簡單的方式是直接telnet進來控制,但我們也利用Java語言撰寫了一個簡單的控制介面。只要利用滑鼠點選就可以控制家中電器,並取得回應。在Java程式撰寫上主要是利用了Socket來做溝通。
在實作中我們設計了一片介面卡,提供了一些連接埠可以連接外面的電器開關。這些開關我們是以發光二極體來代表其開或關的狀態。還有一個大電流輸出埠可以驅動直流馬達來做餵魚等工作。我們亦提供了幾組輸入埠可以連接防盜器,在有小偷來時電腦會發出聲響,而且還會立刻發Email到指定的帳號去並且回應給使用者。如果您的ISP有支援Email通知BB Call的功能,那您的BB Call立刻就會響起來。我們的防盜器目前是利用簡單的觸控開關來代替。我們撰寫了一個telnet的server程式,要控制家中電器時只要telnet到家中電腦即可,非常方便。為了方便使用,我們也提供了利用Java撰寫的使用者端程式,讓您可以利用它取代telnet來做這些控制。
telnet進來後控制的指令很簡單。若要開燈只要用”turn on 1,2…”就可以,其中1, 2是燈的編號。關燈只要用”turn off”即可。若要查看燈的狀況只要用”show me light”即可,而要驅動直流馬達執行餵魚的動作只要用”feed fish”即可。若是忘了指令只要打”help”就會顯示出所有的指令。要離開時只要打”exit”即可。執行畫面如圖:
若是用我們提供的Java介面則操作上就更簡單了。其執行畫面如圖:
所有功能和狀況一目了然。
這個設計中最大的創新就是將網際網路和家庭生活結合在一起。而且所需要的東西很少,只是一部執行Win95的電腦以及一片介面卡和一些開關而已。當然了,這部電腦一定要有連接網際網路才可以。
網際網路其實只是一個通訊的方式而已,最吸引人也最實用的應該是它上面的應用。我們的這一個應用是將很常見的「電腦控制東西」和「網際網路無遠弗屆」的特性結合起來,成為一個簡單又有用的作品。從此以後,不論您在世界上的哪一個角落,都能隨時得知家中狀況、控制家中電器了。
在未來的發展方向有幾個:第一是介面卡支援PNP規格,自動調整I/O port,以免和其他週邊設備相衝突。第二是與家電的溝通。目前最可行的方法應是控制搖控器。若是產業界能訂出家電和電腦介面溝通的標準,那這個應用將更為可行。
參考文獻
[1] The Personal Computer from the Inside Out 3rd Edition, Murray Sargent III
Richard L. Shoremaker, Addison Wesley, 1994
[2] C++ Primer 2nd Edition, Stanley B. Lippman, Addison Wesley, 1995
[3] Inside Visual C++ 4.0, David J. Kruglinski, Microsoft Press, 1996
[4] The Java Tutorial, Object-Oriented Programming for the Internet, Mary Campione
and Kathy Walrath, Addison Wesley, 1996
[5] Microsoft Developer Network, Microsoft, 1997
[6] Datasheets of 7400, 74138, 74573.