歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用樹莓派紅外控制空調和風扇

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

日期:2017/2/28 14:28:16   编辑:Linux教程

1. 硬件連接:
紅外接收器
vcc 連 pin1 (3.3v)
gnd 連 pin6(ground)
data連 pin12(gpio18)

紅外發射器
vcc 連pin2(5v)
gnd連pin25(ground)
data連pin11(gpio17)

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

Raspberry Pi 樹莓派上安裝Weston http://www.linuxidc.com/Linux/2013-06/86685.htm

用於Raspberry Pi 的Linux 操作系統已經可用 http://www.linuxidc.com/Linux/2012-03/56058.htm

Raspberry Pi(樹莓派)試用小記 http://www.linuxidc.com/Linux/2013-10/91008.htm

Raspberry Pi(樹莓派)的安裝、配置IP及軟件源等入門 http://www.linuxidc.com/Linux/2013-10/91009.htm

2.軟件部分
1. 安裝lirc軟件組件,

  1. sudo apt-get install lirc

2. 加載驅動

  1. sudo modprobe lirc_rpi

3. 測試lirc是否正常

  1. sudo mode2 -d /dev/lirc0 # 按遙控上的任何鍵,查看是否有輸出類似
  2. space 4960669
  3. pulse 2697
  4. ……
  5. pulse 2697

4. 修改/etc/lirc/hardware.conf 文件中的 DRIVER和DEVICE

  1. pi@raspberrypi ~ $ cat /etc/lirc/hardware.conf
  2. # /etc/lirc/hardware.conf
  3. #
  4. # Arguments which will be used when launching lircd
  5. LIRCD_ARGS=""
  6. #Don't start lircmd even if there seems to be a good config file
  7. #START_LIRCMD=false
  8. #Don't start irexec, even if a good config file seems to exist.
  9. #START_IREXEC=false
  10. #Try to load appropriate kernel modules
  11. LOAD_MODULES=true
  12. # Run "lircd --driver=help" for a list of supported drivers.
  13. DRIVER="default"
  14. # usually /dev/lirc0 is the correct setting for systems using udev
  15. DEVICE="/dev/lirc0"
  16. MODULES=""
  17. # Default configuration files for your hardware if any
  18. LIRCD_CONF=""
  19. 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,用來存放我們錄制的文件,並將文件放入其中

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

並修改文件中name 為好記的字段,這個後面要用的

  1. begin remote name fan
  2. bits 16 flags SPACE_ENC|CONST_LENGTH

9.修改/etc/lirc/lircd.conf,添加如下:

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

10.重啟 sudo /etc/init.d/lirc restart,加載配置文件

11.測試你的風扇吧:

  1. sudo irsend SEND_ONCE fan KEY_NEXT

fan:為第8步驟中提到的名字 KEY_NEXT:你的鍵值 (這些要是忘記了,可以再remotes下面的配置文件進行查看,如果失敗,就看看你的硬件接法,以及元件好壞)
12.下面講講空調這種復雜的玩意,這種是無法直接錄制的(希望大家在學習下面的內容前先,學習一下紅外的協議標准,不然後面的東西,可能不知所以然)
紅外協議:http://www.linuxidc.com/Linux/2014-09/106408.htm
13. 學習了標准後,就明白了載波,以及頻率的概念了,後頭看看剛才sudo mode2 -d /dev/lirc0 的輸出,那個就是我們的協議波形,space表示低電平,pulse表示 高電平,後面跟的是持續的時間,前面風扇用的是解析出來的命令,這裡就要用的是這種原始的波形方式
14. 首先在開始錄制空調的文件之前,我們需要有一個樣板的conf文件,這個文件不能使用前面的文件,我們需要重新錄制。

  1. 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.有問題的同學,可以給我留言進行詢問

Copyright © Linux教程網 All Rights Reserved