自製一個 “萬用型紅外線遙控器“


2007年4月8日星期日

      家裡音響視聽室裡頭來自各個不同廠牌的設備各有不同的紅外線遙控器,要看一片DVD需要用到好幾個遙控器,換來換去十分不便,曾經使用過菲力普 (Philips) 的 RU940 教導式萬用紅外線遙控器,使用過一段時間後還是覺得不太方便,體積既龐大又笨重,遙控時需要用眼睛盯著LCD螢幕選擇觸控面板按鈕,控制不同器具要在不同的頁面翻來翻去的,十分麻煩,而且教導式的控制碼經常會因為教導不完全而導至控制不靈敏,於是興起一個念頭,自製一個輕便小巧而又簡單的紅外線遙控器,在暗室看DVD時不須盯著遙控器還能自在的遙控各種器具,於是製作出如照片所示的萬用紅外線遙控器。 




    這個遙控器符合輕便短小,多功能控制,不必用眼睛盯著按鍵,只要用大姆指摸摸按鍵及按鍵的相對位置按下按鍵就對了,在漆黑的影音室內可以遙控自如,而且這個遙控器超省電的,三個四號電池至少可以使用三個月以上。


    首先來看看如何讓一個遙控器既簡單又能多功能的控制許多機器,傳統多功能控制器體積龐大,按鍵多且複雜,那麼如何來讓簡單幾個按鍵就能控制許多電器及功能呢?那就是讓這個鍵盤能過簡單的換頁,就像是翻書本一樣,要控制那一部機器,就翻到那一頁去控制它,而且控制一部機器只選擇常用的功能控制,不需要控制那些平常不會用到的功能以簡化需要記在腦子裡的資料,要翻頁的動作就是按一下 ‘P’ 鍵接著按一下底下的十個按鍵之一,也就是說最多可以有十個不同的頁面可以控制,按完翻頁後就可以在該頁面下自由的控制該器具的十種功能,直到需要控制不同頁面器具時才再按翻頁動作,為了達到省電的功能,程式讓按鍵若長達3分鐘未按下按鍵就讓電腦MPU進入超低功率(Power Down)下,若要控制,只要選取新頁面的動作就可以輕易的喚醒電腦。



   右圖就是這個控制器的鍵盤及其排列位置,將鍵盤分為四個組,每個組最多四個按鍵,最上面單獨一個按鍵是啟動鍵(reset),底下十個按鍵分成三個組,分別是1,2,3,4  ,5,6,7,8 及 9,0 ,依相對位置:

   按鍵 ’2’ 經常作為“音量增加“或“指標上移“按鍵,

   按鍵 ’4’ 經常作為“音量減少“或“指標下移“按鍵,

   按鍵 ‘6’ 經常作為“選擇“(Enter)按鍵,

   按鍵 ‘9’ 經常作為“指標左移“(<<) 按鍵,

   按鍵 ‘0’ 經常作為“指標右移“(>>) 按鍵,

   按鍵 ‘7’ 經常作為“暫停“(Pause >II) 按鍵,

   按鍵 ‘8’ 經常作為“開始“(Play >) 按鍵,

以上 “經常“ 只是作為一個方便記憶的大慨設定,依不同的控制頁面需求,可以自定一個方便記憶的控制功能,加上鍵盤不同的排列位置,控制時只要用右手大拇指摸摸按鍵就可以不用看鍵盤控制器具了。


    接著就是動手作一個遙控器了,首先到一般電子材料店去買下列零件:

  * 掌上型小型樹膠萬用盒 ( 90 X 50 X 25 mm)

  * 11 個拇指小按鍵

  * 一個 AT89C4051 , 20腳的 MPU微處理器

  * 一個可放三只四號電池的電池盒

  *2顆紅外線發射 LED

  *一個 12MHz 小型石英震盪器

  *2個 30pF 陶瓷電容

  *1個 10Ω電阻

  *一片 90 X 50 mm 萬用電路板



    選用 AT89C4051 MPU的原因是它很便宜、發展工具容易找到(我使用 WICE 8052 Emulator)、省電 (可工作在2.7到6伏特下,Active 15mA, Idle 5mA, PowerDown 5uA),體積小,可程式(Programmable),只要更改程式碼,幾乎任何廠牌的任何遙控碼都可以精確的做到完全相容的精密控制,沒有任何限制,等優點。


    裝好電路板後,接著就是編寫程式了,寫程式是一件繁雜瑣碎的苦功,若不想從頭做起,這兒我提供一個我目前在用的原始程式Project,提供大家參考,請到  程式下載區 下載 “ 萬用紅外線遙控器程式“,解壓縮後去修改 “ir/emit.h” 檔案內的控制表的項目以符合您的需求,然後執行檔按夾內的 “yasm51s.app”在 “M8051 Assembler”視窗內點選 “Open project file” 然後選到該檔案夾內的 “ir.prj” 然後執行 “Compller” 就可以重新依您的程式翻譯並產生可以燒錄 MPU的程式碼檔案 “ir.hex”了。


    要對各種廠牌的紅外線遙控設備控制,就要暸解他們的訊號構成,最好的辦法就是做一個紅外線接收器或直接打開遙控器,用數位式示波器去量發射訊號,分析它的遙控碼,最後用組合語言去再現該控制訊號即可,在這裡我介紹兩種最常被使用的遙控碼格式,一種是32位元遙控碼,它是由一個 38KHz的載波訊號:

    * 發射 9.1 毫秒(mS)然後停止 4.5 mS作為前導訊號開頭,

    * 接著是32個以 發射 0.6 mS 停止 0.6 mS 來作為訊號位元 “0” 

    * 或發射 0.6 mS 載波訊號然後停止 1.5 mS 來作為訊號位元 “1”,

    * 在送完 32個位元訊號後,發射一個 0.6 mS 載波訊號作為結束。




在發射完上面的32個位元的主控制訊號後,如果發射按鍵繼續按著,這時它會停留約45 mS後發射“重複(Repeat)“訊號,也就是:

    *發射 9.1 mS 載波訊號

    *停止 2.1 mS

    *發射 0.6 mS 結束在波訊號

以後如果發射按鍵繼續按著,它就每隔 65mS發射一次 “Repeat” 訊號,直到按鍵放開。

因此控制碼就是這32位元碼了,它又分為4組八位元碼,前兩個八位元碼代表廠牌或機器的控制碼,第三個八位元才是真正控制同一部機器的各種動作的訊號,第四個八位元碼通常是第三個八位元碼的反相也就是一的補數 (  1’s compliment),但是也有的機器是使用固定數字,與第三個八位元碼無關,如蘋果電腦的 iRemot 就是少數例外的案例。

    例如某一個廠牌的中央空調冷氣機,它的機器辨識碼是 02B9,

        冷氣 02B9 8877

        除溼 02B9 C837

        送風 02B9 08F7

        -------- 等

    而 Apple 的 iremote 則是

        <<        77E1 105A

        >>        77E1 E05A

        >II        77E1 205A

        +          77E1 D05A

        -   77E1 B05A

        Menu   77E1 405A


  另外一種常用的控制碼是菲力普(Philips)提出的叫做 RC5 碼,已被廣泛的使用在影音設備的紅外線遙控器上,它是一種固定14位元的雙向位編碼 (Bi-phase Coding) 在取樣時間點為上升邊時為 “1”,若為下降邊時為 “0”,14為元的前兩個位元固定為 “1”作為起始位元,第三個位元用來作為控制位元,每次一個新按鍵按下時會更換一次狀態 (toggled) ,用來讓接收器分辨是長時間按鍵或是新的按鍵所發出來的遙控訊號,接著是五個系統位元碼,最多可以有32種不同的電器做遙控,最後6個位元碼最多可以控制64種不同的動作,如下表所示:



範例:第五號機器所發出來的控制碼為 0x35


下圖是由數位示波器所記錄的 RC5碼,元件碼為 0x0D,控制碼為 0x03。




測量紅外線遙控器訊號的方法:


    最簡單的方法是打開您的紅外線遙控器,用示波器去量紅外線LED兩端的電壓就可以,(當然啦,必須按下按鍵才看得到訊號),但是這個訊號不太好看,因為它包含載波訊號及雜散電容的充放電訊號。 


    最好是到電子材料行去買一顆 紅外線接收器,目前最容易買到的是 FM-6038LM 或 FM6838TM2 ,一顆大約是46元到59元之間,如下圖所示,接上 5V 電源,示波器接在地和輸出端,用遙控器對它發射訊號就可以看到了,數位示波器最好是設定在 Single trigger mode 。

這顆紅外線接收器對電源雜訊的排斥能力非常差(PSRR很低) ,電源需要濾波乾淨一點。



    設計電路的法則:

設計電路須考量的因素很多,若考量不周,在使用後發生問題再回來修改就要付出代價,那就是在繳學費,這個紅外線發射器其實電路很簡單,設計須考慮的地方是:

一、體積要小,因此使用一顆 AT89C4051,這顆MPU有 DIP與SOIC 兩種包裝,SOIC雖然體積更小,但是必須洗電路板才能發揮小體積的優點,不適用於萬用電路板手工焊製,DIP包裝已夠小堪用了。

二、要省電才不必經常更換電池,但這一項與使用的零件要便宜且容易買得到、發射距離要遠會相衝突,看到 APPLE Remote 那麼小,省電,發射距離又遠,那是因為他們大量生產,可以開模作特殊盒子、買得到效率非常高的發射LED,與特殊用途、工作於低電壓下又省電的MPU,而它所使用的鋰電池也是很貴的,AT89C4051只能使用於工作電壓在 2.7V到6V之間,若使用3V供電,可能很快就要換電池,因此使用4.5V三顆四號電池,因為使用鐵殼發射LED,每顆壓降只有 1V,因此使用兩顆串連,在較小的電流下可以發射得更遠,若要省錢,當然一顆LED也可以工作,但是其串連的電阻要加大阻值,將電源功率消耗掉就是了。