紅外接收器
vcc 連 pin1 (3.3v)
gnd 連 pin6(ground)
data連 pin12(gpio18)
紅外發射器
vcc 連pin2(5v)
gnd連pin25(ground)
data連pin11(gpio17)
如果是2pin的紅外發射器,就不用接vcc,為了提高穩定性,需要添加添加三極管和電阻,我們這裡就偷懶了,隻連接配接了2pin。
<a target="_blank"></a>
1. 安裝lirc軟體元件,
sudo apt-get install lirc
2. 加載驅動
sudo modprobe lirc_rpi
3. 測試lirc是否正常
sudo mode2 -d /dev/lirc0 # 按遙控上的任何鍵,檢視是否有輸出類似
space 4960669
pulse 2697
……
4. 修改/etc/lirc/hardware.conf 檔案中的 driver和device
pi@raspberrypi ~ $ cat /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
# arguments which will be used when launching lircd
lircd_args=""
#don't start lircmd even if there seems to be a good config file
#start_lircmd=false
#don't start irexec, even if a good config file seems to exist.
#start_irexec=false
#try to load appropriate kernel modules
load_modules=true
# run "lircd --driver=help" for a list of supported drivers.
driver="default"
# usually /dev/lirc0 is the correct setting for systems using udev
device="/dev/lirc0"
modules=""
# default configuration files for your hardware if any
lircd_conf=""
lircmd_conf=""
5. 我們發射的紅外指令,都是通過先錄制,然後發送的方法,錄制的情況分2種,
一種是風扇這種簡單的指令,我們使用的辦法,可以直接解析出指令,使用lirc的錄制功能就可以完成 另一種就是例如空調這種比較複雜帶邏輯的指令,這種無法直接錄制,我們采用的辦法是使用原始的錄制方法,後面講,這裡先給大家提醒一下
6. irrecord --list-namespace | grep -i key_ 挑幾個你喜歡的鍵名,後面會用到的
7.先講講一般的錄制,風扇這種比較簡單的裝置遙控
sudo irrecord -d /dev/lirc0 ~/fan.conf,在使用者自己的目錄下生成檔案 按兩下回車後,進行錄制,首先按住一個鍵等待點一直出現到結束 然後不停得按遙控器上不同的鍵,重複按也沒有關系,反正就是要等到點一直出現到結束 第三步,輸入你的鍵名,一定是前面看到的key_xx,回車後,按一下你想要錄制的那個鍵 後面輸入鍵名錄制,重複進行,直接回車,錄制結束,在目錄下就生成了fan.conf,如果過程中出錯,删掉檔案,重新錄制
有興趣的同學,可以看看檔案的具體内容,再結合紅外的協定标準研究一下,這裡就不細說了,有興趣可以私下給我留言
8.建立一個目錄/etc/lirc/remotes,用來存放我們錄制的檔案,并将檔案放入其中
sudo cp ~/fan.conf /etc/lirc/remotes/
并修改檔案中name 為好記的字段,這個後面要用的
begin remote name fan
bits 16 flags space_enc|const_length
9.修改/etc/lirc/lircd.conf,添加如下:
include "/etc/lirc/remotes/fan.conf"
10.重新開機 sudo /etc/init.d/lirc restart,加載配置檔案
11.測試你的風扇吧:
sudo irsend send_once fan key_next
fan:為第8步驟中提到的名字 key_next:你的鍵值 (這些要是忘記了,可以再remotes下面的配置檔案進行檢視,如果失敗,就看看你的硬體接法,以及元件好壞)
12.下面講講空調這種複雜的玩意,這種是無法直接錄制的(希望大家在學習下面的内容前先,學習一下紅外的協定标準,不然後面的東西,可能不知是以然)
13. 學習了标準後,就明白了載波,以及頻率的概念了,後頭看看剛才sudo mode2 -d /dev/lirc0 的輸出,那個就是我們的協定波形,space表示低電平,pulse表示 高電平,後面跟的是持續的時間,前面風扇用的是解析出來的指令,這裡就要用的是這種原始的波形方式
14. 首先在開始錄制空調的檔案之前,我們需要有一個樣闆的conf檔案,這個檔案不能使用前面的檔案,我們需要重新錄制。
irrecord -f -d /dev/lirc0 ~/fanraw.conf
-f --force : force raw mode 強制使用raw模式,使用前面步驟7的辦法進行錄制
完成後,大家看看檔案内容與前面的有什麼不同,并看看與mode2 打出來的資訊的關聯,估計聰明的孩子已經知道怎麼回事了吧
15. raw模式錄制的檔案其實就是pulse和space的延續時間,然後lirc在按照這個時間進行發送
16.開工:
首先使用sudo mode2 -d /dev/lirc0,找到你的那個鍵的總行數,多按幾次,保證是沒有問題的去掉第一行,然後把後面的數字,一次看看之前的raw檔案的樣子,寫進去,會代碼的朋友,可以寫個工具處理,嗖嗖的,或者使用linux的正則搞定
17.在檔案中重複添加其他鍵的那些數值,還有鍵名,最後把name也修改了,include到lircd.conf中,重新開機程式
18.測試一把,打完收工啦。
19.有問題的同學,可以給我留言進行詢問
原文釋出時間:2014-09-10
本文來自雲栖合作夥伴“linux中國”