天天看點

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

紅外接收器

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中國”

繼續閱讀