第1章 前言
要在樹莓派3 (A20)android系統上實現紅外遙控器,因為super3上有紅外接收頭,所以可以直接支援紅外遙控器,可以把樹莓派3應用到家庭控制當中。當作網路機頂盒用
樹莓派3的紅外遙控器,還有滑鼠功能,也就是它可以代替的部份的滑鼠功能,因為在有些軟體,不支援純遙控支援,必須要滑鼠箭頭去它按鈕的,就可以用到這個功能了
只要輕輕按一下右下角這個“箭頭”按鈕,就可以用方向鍵來控制滑鼠箭頭了
遙控器的購買連結
http://item.taobao.com/item.htm?&id=37686098339
第2章 硬體相關
2.1電路原理圖
樹莓派3的紅外接收頭對應的IO口是PB4,如
2.2 實物圖
板子上的紅外接收頭位置
遙控器外觀和對應編碼注意,上面的客服碼,ff是高8位,00是低8位,所以add_core=0xff00;
第3章軟體修改3.1 修改fex設定檔(sys_config.fex) 修改superoid\lichee\tools\pack\chips\sun7i\configs\android\smfy-super3\sys_config.fex 如下項
[ir_para]ir_used = 1ir_rx = port:PB04<2>
配置PB04作為紅外輸放腳(匹配我們內部的驅動)。
3.2 修改kernel3.2.1 修改ADDR_CODE 在檔案lichee\linux-3.4\drivers\input\keyboard\ir-keymap.h中,根據自己的遙控器的地址碼修改如下代碼
#define IR_ADDR_CODE (0xff00)譬如說,如果地址碼為0x7f80,則修改成
#define IR_ADDR_CODE (0x7f80)
如果發現無效,則將兩個位元組的值交換一下位置,修改成
#define IR_ADDR_CODE (0x807f) 本教程所針對的這個遙控器地址碼是
0xff00
3.2.2 修改sun7i-ir.c修改lichee\linux-3.4\drivers\input\keyboard\sun7i-ir.c 檔案
if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_wakeup", &ir_wakeup)){ pr_err("%s: ir_wakeup script_get_item error. \n",__func__ ); ir_wakeup = 0; } if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "power_key", &power_key)){ pr_err("%s: power_key script_get_item error. \n",__func__ ); power_key = 0x4d; } if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_addr_code", &ir_addr_code)){ pr_err("%s: ir_addr_code script_get_item error. \n",__func__ ); ir_addr_code = 0xff00; //----這裡重新指定了code,所以,修改了上面的 IR_ADDR_CODE,還要改這裡才會生效 }
3.2.3 編譯kernel 在lichee目錄下執行 #./build.sh–p sun7i_android編譯核心 然後在android42目錄下#extract-bsp 拷貝sun7i-ir.ko到module目錄
3.2.4 手動調試(新手可跳過)Step1: 樹莓派3進入android系統,串連USB線到PC上,通過adb命令進到PC# adb shellStep2: 在adbshell裡,# rmmod sun7i-ir.ko卸載原來的驅動Step3: 拷貝新編譯的sun7i-ir.ko到super3根目錄PC# adb pushC://sun7i-ir.ko /Step4: 再次adbshell進到super3裝置命令列,#insmod sun7i-ir.ko手動載入驅動模組#getevent然後對著super3按遙控器,如果前面的地址碼改對了,那這裡就應該看得到按遙控會有key event列印出來,這就表示android底層已識別出了遙控器了,向上發了event了,此時可以放心地進行下一步
3.3 修改kl檔案
3.3.1
修改sun7i-ir.kl
檔案superoid\android42\device\softwinner\smfy-super3\sun7i-ir.kl檔案針對前面2.3章裡的圖2.3 紅外遙控器碼錶
key 64 BACK WAKE_DROPPEDkey 4 MENU WAKE_DROPPEDkey 85 DPAD_CENTER WAKE_DROPPEDkey 22 DPAD_DOWN WAKE_DROPPEDkey 70 DPAD_UP WAKE_DROPPEDkey 6 HOME WAKEkey 71 DPAD_LEFT WAKE_DROPPEDkey 21 DPAD_RIGHT WAKE_DROPPEDkey 16 VOLUME_UP WAKEkey 20 VOLUME_DOWN WAKEkey 24 POWER WAKEkey 12 0 WAKEkey 84 1 WAKEkey 72 2 WAKEkey 7 3 WAKEkey 80 4 WAKEkey 18 5 WAKEkey 17 6 WAKEkey 76 7 WAKEkey 14 8 WAKEkey 13 9 WAKEkey 8 MUTE WAKEkey 86 PROG_RED WAKEkey 91 PROG_BLUE WAKEkey 87 PROG_GREEN WAKEkey 31 PROG_YELLOW WAKEkey 23 MOUSE WAKEkey 75 DEL WAKE
3.3.2 調試(新手可跳過) 如果是android老手,這個時候,可以手動調試一下,以保證這個地址碼是對的,可以立即看得到修改的效果Step1: 通過USB串連樹莓派3,PC上cmd進命令列, PC# adb push C:// sun7i-ir.kl/system/usr/keylayout/上面命令的前題:我們已把sun7i-ir.kl檔案放在了PC的C盤根目錄下 如上命令是把sun7i-ir.kl檔案拷貝到super3的/system/usr/keylayout/目錄下替換原檔案 Step2: 重啟樹莓派3,進入android系統 此時應該遙控器已經可以用了,可以用上下左右鍵進行選擇。
3.4滑鼠功能支援
修改build.prop檔案 進入super3的終端命令列修改如下項
ro.softmouse.left.code=71ro.softmouse.right.code=21ro.softmouse.top.code=70ro.softmouse.bottom.code=22ro.softmouse.leftbtn.code=85
第4章 編譯打包
#make –j4 編譯到系統#pack打包img
大功告成了
http://item.taobao.com/item.htm?&id=15301429836