使用樹莓派紅外控制空調和風扇

1 贊 回覆發表於2014-09-10

一. 硬體連線:

紅外接收器

vcc 連 pin1 (3.3v)

gnd 連 pin6(ground)

data連 pin12(gpio18)

紅外發射器

vcc 連pin2(5v)

gnd連pin25(ground)

data連pin11(gpio17)

如果是2pin的紅外發射器,就不用接vcc,為了提高穩定性,需要新增新增三極體和電阻,我們這裡就偷懶了,只連線了2pin。

二.軟體部分

1. 安裝lirc軟體元件,

sudo apt-get install lirc

2. 載入驅動

 sudo modprobe lirc_rpi

3. 測試lirc是否正常

sudo mode2 -d /dev/lirc0   # 按遙控上的任何鍵,檢視是否有輸出類似
space 4960669
pulse 2697
……
pulse 2697

 4. 修改/etc/lirc/hardware.conf  <wbr>檔案中的 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種,  <wbr>

一種是風扇這種簡單的指令,我們使用的辦法,可以直接解析出命令,使用lirc的錄製功能就可以完成  <wbr> 另一種就是例如空調這種比較複雜帶邏輯的命令,這種無法直接錄製,我們採用的辦法是使用原始的錄製方法,後面講,這裡先給大家提醒一下

6.  <wbr>irrecord --list-namespace | grep -i key_  <wbr>挑幾個你喜歡的鍵名,後面會用到的

7.先講講一般的錄製,風扇這種比較簡單的裝置遙控

sudo irrecord -d /dev/lirc0  <wbr>~/fan.conf,在使用者自己的目錄下生成檔案 按兩下回車後,進行錄製,首先按住一個鍵等待點一直出現到結束 然後不停得按遙控器上不同的鍵,重複按也沒有關係,反正就是要等到點一直出現到結束 第三步,輸入你的鍵名,一定是前面看到的KEY_XX,回車後,按一下你想要錄製的那個鍵 後面輸入鍵名錄制,重複進行,直接回車,錄製結束,在目錄下就生成了fan.conf,如果過程中出錯,刪掉檔案,重新錄製

有興趣的同學,可以看看檔案的具體內容,再結合紅外的協議標準研究一下,這裡就不細說了,有興趣可以私下給我留言

8.新建一個目錄/etc/lirc/remotes,用來存放我們錄製的檔案,並將檔案放入其中<wbr><wbr>

sudo cp  ~/fan.conf /etc/lirc/remotes/

並修改檔案中name 為好記的欄位,這個後面要用的

begin remote   name  fan
bits 16   flags SPACE_ENC|CONST_LENGTH 

 9.修改/etc/lirc/lircd.conf,新增如下: <wbr>  <wbr>

 include "/etc/lirc/remotes/fan.conf" 

10.重啟 <wbr>sudo /etc/init.d/lirc restart,載入配置檔案

11.測試你的風扇吧:<wbr>

sudo irsend SEND_ONCE  fan KEY_NEXT  

 fan:為第8步驟中提到的名字  <wbr> KEY_NEXT:你的鍵值  <wbr> (這些要是忘記了,可以再remotes下面的配置檔案進行檢視,如果失敗,就看看你的硬體接法,以及元件好壞)

12.下面講講空調這種複雜的玩意,這種是無法直接錄製的(希望大家在學習下面的內容前先,學習一下紅外的協議標準,不然後面的東西,可能不知所以然)
<wbr>紅外協議:http://www.cnblogs.com/yulongchen/archive/2013/04/12/3017409.html

13. 學習了標準後,就明白了載波,以及頻率的概念了,<wbr>後頭看看剛才sudo mode2 -d /dev/lirc0 的輸出,那個就是我們的協議波形,space表示低電平,pulse表示  <wbr>  <wbr>  <wbr>高電平,後面跟的是持續的時間,前面風扇用的是解析出來的命令,這裡就要用的是這種原始的波形方式

14. 首先在開始錄製空調的檔案之前,我們需要有一個樣板的conf檔案,這個檔案不能使用前面的檔案,我們需要重新錄製。

 irrecord  -f -d /dev/lirc0 ~/fanraw.conf

 -f <wbr>--force : <wbr>force raw mode 強制使用raw模式,使用前面步驟7的辦法進行錄製

完成後,大家看看檔案內容與前面的有什麼不同,並看看與mode2 打出來的資訊的關聯,估計聰明的孩子已經知道怎麼回事了吧

15. raw模式錄製的檔案其實就是pulse和space的延續時間,然後lirc在按照這個時間進行傳送

16.開工:

<wbr>首先使用sudo mode2 -d /dev/lirc0,找到你的那個鍵的總行數,多按幾次,保證是沒有問題的去掉第一行,然後把後面的數字,一次看看之前的raw檔案的樣子,寫進去,會程式碼的朋友,可以寫個工具處理,嗖嗖的,或者使用linux的正則搞定

17.在檔案中重複新增其他鍵的那些數值,還有鍵名,最後把name也修改了,include到lircd.conf中,重啟程式 

18.測試一把,打完收工啦。

19.有問題的同學,可以給我留言進行詢問

其中用到的參考資料,提供給大家:

 

相關文章