文章目錄
- 前言
- 續言
- 一、紅外基礎知識
- 二、資料協定
- 三、編碼
-
- 1.編碼基礎
- 2.編碼格式
- 四、紅外解碼過程
- 五、控制空調
-
- 1.準備階段
- 2.解碼
- 3.編寫程式
- 4.燒寫程式
- 六、遙控器硬體制作
-
- 1.主要晶片
- 2.紅外發射
- 3.OLED顯示屏
- 4.穩壓電路
- 5.升壓電路
- 6.充電電路
- 7.矩陣按鍵
- 8.時鐘電路
- 9.存儲晶片
- 10.WIIF子產品
- 七、電路闆焊接調試
-
- 1.先焊接單片機和電源部分
- 2.焊接升壓電路
- 3.焊接時鐘和存儲晶片
- 4.焊接背面
- 5.焊接紅外和按鍵
- 6.最後效果
- ==========測試完畢
前言
還記得大一的時候開始學習單片機,那時候就接觸了紅外接收,也正常通信過,用的是配套的遙控器。後來發現實驗室的開發闆上還有一個紅外發射頭,既然如此,為什麼不去做一個紅外遙控器呢?
說幹就幹,還記得那時大二暑假的時候,在家裡閑着沒事,就想做一個紅外遙控器控制家裡的電器,首先想要控制的是家裡的電視(創維的),
傻傻的:
當時是電視的遙控器,直接用原來的紅外接收程式接收,結果發現就算一直按一個按鍵,它的碼也總是會變(笑死),當時可能還是懵懂的狀态,一直都沒有找到原因,後來聽說要用示波器測(或者邏輯分析儀),因為我沒有這些玩意,後來就擱置了。
在大二下學期,當時花了二十多大洋買了一個小型的邏輯分析儀,就又折騰了一下,通過紅外接收和邏輯分析儀,再加上一個遙控器,齊活,胡亂搞了一通,算是能實作實驗室空調的一些簡單的控制,算是基本成功了吧。
續言
為什麼又要做個遙控器呢,原因有二:
其一:因為我舍友在底下自習室,别人把空調總是開的很低,他身體受不了,他就想着調高一點,奈何他手機沒有紅外,空調又沒有遙控器,都沒有,那就隻能做一個了。
其二:因為立創EDA最近有一個活動,既然有活動,那肯定有獎勵啊,貫徹白嫖精神,必須得參加啊,但白嫖也是有原則的,(總要做點什麼東西吧),于是就做個紅外遙控器吧。
一、紅外基礎知識
紅外遙控有發送和接收兩個部分組成。發射端采用單片機将待發送的二進制信号編碼調制為一系列的脈沖串信号,通過紅外發射管發射紅外信号。紅外接收完成對紅外信号的接收、放大、檢波、整形、并解調出遙控編碼脈沖。
紅外遙控發射裝置,其主要元件為紅外發光二極管,單隻紅外發光二極管的發射功率約為100mw。
紅外遙控的控制距離約為10米。
二、資料協定
最常見的資料協定是:NEC編碼。
還有其他協定:ITT 、a Nokia 、NRC、Sharp、Sony
紅外遙控協定組成: 一般是引導碼、使用者碼、按鍵碼、重複碼、按鍵反碼、結束碼等組成。
紅外遙控載波頻率: 33K 、 36K 、 36.6K 、 38K 、 40K 、 56K 。常用38K,以37.916K最準确。紅外載波占空比:1/3 、1/2、不常用的有1/4。
三、編碼
1.編碼基礎
紅外遙控發射采用PPM編碼方式,當發射時,将發射一組108ms的編碼脈沖。遙控編碼脈沖由前導碼、16位位址碼(8位位址碼、8位位址碼的反碼)和16位操作碼(8位操作碼、8位操作碼的反碼)組成。
通過對使用者碼的檢驗,每個遙控器智能控制一個裝置動作,這樣可以有效地防止多個裝置之間的幹擾。
編碼後面還要有編碼的反碼,用來檢測編碼接收的正确性,防止誤操作,增強系統的可靠性。
2.編碼格式
前導碼是一個遙控器的起始部分,由一個9ms的高電平(起始碼)和一個4.5ms的低電平(結果碼)組成,作為接收資料的準備脈沖。
以脈寬為0.56ms、周期為1.12ms的組合表示二進制的”0“,以脈寬為1.68ms、周期為2.24ms的組合表示二進制的”1“。
四、紅外解碼過程
1 、單片機配置寄存器,開啟P32腳下降沿中斷和定時器中斷,定時器推薦使用 8 位自動重裝,最大定時96us.
2 、當引導碼38KHz紅外照射接收器的時候,接收器輸出低電平給單片機P3.2腳,觸發下降沿中斷 。
3 、先儲存定時器的時間值,然後清零定時器的自定義變量(不是寄存器) ) 。
4 、下一次38KHz來臨的時候,繼續觸發下降沿中斷。和前面一次一樣。都是先儲存時間值,再清零自定義變量。
5 、上述 2次下降沿中間的時間差,就是紅外遙控器的最基本時間差。
6 、根據時間長短,判斷正确的引導碼出現後,儲存後來緊接的32個時間長度(即連續的下降沿,時間差) ) 。
7 、分 4次、分别判斷8位資料的時間長度。根據協定識别出1和0。 8位是低位在前高位在後。
8 、 整個NRC協定的順序是 :9ms+4.5ms 引導碼 、8位使用者機器碼 、8位機器反碼 、8位按鍵碼 、8位按鍵反碼。
配套的紅外遙控器編碼

五、控制空調
1.準備階段
首先有一個空調的遙控器和一個紅外接收頭,還需要一個邏輯分析儀和帶的上位機軟體。
2.解碼
首先我們需要先知道空調遙控器的編碼格式
我們把邏輯分析儀的一個通道接到紅外接收頭的資料引腳,然後打開上位機邏輯分析儀,
點選start開始采集,在采集的過程中我們按下遙控器要解碼的一個按鍵。
之後邏輯分析儀就會出現一個波形,
如下:
這裡我已經把波形表示的是0還是1都已經寫出來了。
要記得編碼的格式是:
每8個二進制資料是一個位元組,然後這8個二進制是按從低到高開始發送的,
例如:1011 0010 表示第一個位元組
那麼我們知道前面的是低位,後面的是高位,是以從高到低應該是0100 1101 正确的編碼是4D,後面也是如此。
這裡我測的是關空調的指令,是以得出結論,關空調的指令是
後面的測試也是類似的,我就不寫出來了。
下面是美的空調(型号:RN02U/BG)的一些編碼。
== 固定編碼==
下面這些編碼是固定的,不改變。
unsigned char shangxiafeng[6] = {0x9D,0x62,0xAF,0x50,0x20,0xDF}; //上下風
unsigned char zuoyoufeng[6] = {0x9D,0x62,0xAF,0x50,0xE0,0x1F}; //左右風
== 不固定編碼==
下面這些編碼不是固定的,是組合編碼。
關于組合編碼的格式:
4D B2 :這兩個碼是固定的
第三個位元組:表示風速
第四個位元組:表示風速的反碼
第五個位元組:高4位表示模式,低四位表示溫度
第六個位元組:高4位表示模式的反碼,低4位表示溫度的反碼
4D B2 FD 02 3A C5
FD 02代表風速大小
3 C代表模式
A 5代表溫度
模式:
1.自動 1110 E
2.制冷 1111 F
3.抽濕 1101 D
4.制熱 1100 C
風速
AU: FD 02
20%:FF 00
40%:F9 06
60%:FA 05
80%:FC 03
F%(測試不成功):FC 03
溫度:
17: 0000 0 18:1000 8 19:1100 C
20:0100 4 21:0110 6 22:1110 E
23:0101 A 24:0100 2 25:1100 3
26:1011 B 27:1001 9 28:0001 1
29:1010 5 30:1101 D
3.編寫程式
更多詳細的内容,請查找完整的代碼。
4.燒寫程式
将程式燒錄到開發闆,驗證即可。
六、遙控器硬體制作
1.主要晶片
主要晶片我采用的是STC8A8K-44腳的單片機,主要是因為我手裡頭還有兩個。這個功能也是非常強悍的,但我都沒有用到,有點浪費了。
2.紅外發射
之前那個紅外電路不能正常工作,搗鼓了好久,就是不行。之前開發闆上有一個紅外發射,我換成那個電路就可以工作了。
3.OLED顯示屏
為什麼我要加一個顯示屏呢,這是因為我需要顯示目前空調的一些狀态資訊,這樣我就能清楚直覺的看到空調的目前狀态,友善我進行下一步操作。
4.穩壓電路
沒什麼好說的,就是把5V轉化為3.3V使用。
5.升壓電路
因為是遙控器嗎,那麼肯定是便攜式的,那肯定要加一個電池,電池是3.7V左右,我的單片機工作在5V,那麼肯定要轉換為5V。
6.充電電路
既然我們都用到電池,那麼肯定要有充電電路,電池沒電了,總不能把電池扣下來,充好電再裝上去吧,太麻煩,直接插電充。
7.矩陣按鍵
因為空調的控制按鍵比較多,這裡我就用了一個4x4的矩陣按鍵,
這樣可以用更少的IO口控制更多的按鍵,可以節省單片機資源。
8.時鐘電路
這個是擴充功能,後續會在螢幕上顯示目前的時間,這樣,可以更大的利用單片機的資源。
9.存儲晶片
這個也是擴充子產品,後續如果想做成學習型的紅外遙控器,那麼儲存資料肯定少不了,這個子產品可以存儲資料,并且速度也不慢。
10.WIIF子產品
這也是擴充子產品。後續想要做成聯網的,隻要把遙控器放到空調旁邊,通過手機就可以控制空調的打開和關閉,實作遠端控制,這個應用也是非常友善的。
七、電路闆焊接調試
1.先焊接單片機和電源部分
首先我們要确定電源沒有問題,因為這個是内部晶振,是以晶振不用管,焊接這一部分之後,我們就可以看看是否能把程式燒錄到單片機。
這一部分如果沒有問題的話,基本就成功了,後續都是輔助。
2.焊接升壓電路
升壓電路是把電池的3.7V升壓到5V。
3.焊接時鐘和存儲晶片
這一部分是擴充電路,我們需要就焊,不焊也沒有影響
4.焊接背面
背面是按鍵的一些電阻,蜂鳴器的三極管,紅外的三極管
5.焊接紅外和按鍵
焊接完這一部分,我們基本就焊接完畢
6.最後效果
最後我們下載下傳程式,可以出現這個界面,按每個按鍵(看絲印)執行對應的功能。