*** M01 把圖片全藏起來了, 有點蠢, 有需要請用這個連結看
*** http://blog.chachar.net/2013/06/nexus-7-tablet-car-install/
***
某天在討論區上看完平板安裝討論串後,手開始癢了

目標很簡單,成品看起來要簡單乾淨,並且盡量不要犧牲我常用的原廠功能。花了幾天在網路上做功課,車上拆東拆西,看我的鬼點子是可不可行??
結果當然是可行啦,不然也不會有這篇了

這是四代 Impreza 的原廠音響主機。很陽春的設計,就中間挖個洞然後塞主機進去。不過也因為這樣才好改~ 不然現在很多車都是這種不規則設計,這個我就沒轍了。
中間這個洞大概是八吋,所以選用了七吋的 Nexus 7。
要把 N7 塞進去當然得弄出點空間來,做法是把音響主機的面板跟主機分家。拆面板大概就幾個螺絲卡榫,這個沒什麼,麻煩的是線。拆了後發現面板跟主機是用兩個 board to board connector 連接。我很痛苦把兩個接頭解焊下來,然後繼續很痛苦的焊上新的線...沒錯,這是 ATA33 古董排線

土法煉鋼的面板延長線完成了。後面貼了一片透明 vinyl 絕緣用。這大概是整個 project 最醜的地方吧 = =|| 做完後跟自己說了一句 I can't believe I did this. 比較正確的做法應該是去買新的接頭來做延長線...
其實我還有另一台音響主機裝在車上,所以才敢大膽亂搞這台。
最後這個面板會塞到主機下面。
接下來處裡外觀。直接把 N7 貼到那個八吋的 opening 後面倒也不是不行,但那樣真的不太好看而且會有不小的縫隙。所以自己設計一個面板送去 Shapeways 做 3D 列印。
三個星期後東西送來啦。材質是 frosted detail plastic. 這個材質夠細緻, 防水, 也相對耐高溫。缺點是比較脆弱一點,但畢竟不會被摔來摔去,應該還好。
上圖左邊一個孔是開給感光元件,左下麥克風,右邊三孔會裝上相當於是平板的電源跟音量按鍵。按鍵也是 3D 印出來的,下面是噴漆後的成品。
Mic 孔後面貼了 grill,這個 grill 是... iPhone 聽筒的。eBay 上很好買。
這是右邊三個按鍵的小電路板。
預留空間。
裝上電路板。
接下來 test fit 一下。上面幾張圖都可以看到面板上下有設計幾個卡榫,下面是切給這些卡榫用的凹槽之一。用 Dremel 挖的~
從背面裝上。
翻過來正面長這樣。
上面這個角度"看起來"還不錯,其實有點問題。印出來面板比我設計的寬度少了將近2mm,也就是說左右的縫比原來預計的多了 1mm... 換成百分比大概是縮了1%,而 Shapeways 號稱他們的誤差最多 0.1%. 不過這家公司很夠意思啦,跟他們 email 來來回回幾次後最後決定給我全額退費

外觀差不多就這樣了,接下來電子方面要處裡方向盤控制鍵(SWC)跟平板供電。翻翻原廠 service manual 就會知道 SWC 基本上就是一個簡單的 resistor network, 然後走3條線接到主機。下面有標出我測量後算出來的電阻值~
為了要好好利用這些按鍵,最後決定用 Arduino Leonardo 來讀這些電阻。這傢伙竟然是 Made in Italy

把它放在 SWC 跟主機中間"攔截"所有 SWC key press. 讀取電阻值後可以
1. 模擬鍵盤 key press 傳給 N7.
2. 模擬原廠 SWC 的功能.
第一點很簡單,Leonardo 有內建模擬鍵盤,然後透過 USB OTG 接 N7 就可以。第二個則是設計了一個可以裝在 arduino 上的 SWC 模擬電路,這個電路就接到原廠主機。按鍵變成 relay,也就是說可以用 arduino 上灌的程式來"按"這些假的按鍵。
這樣就可以做到譬如說方向盤某按鍵, 按一下就模擬原廠的功能,
按住超過 500ms 則傳 Win + M(開地圖) 給 N7 之類的。 甚至要做 double click 都可以。
上面是 SWC 模擬電路,供電部分也弄在同一張板子上了~ 反正就是要把車子的 12V 降到 5V。這裡用的是 LM2576-5 switching regulator. 輸出有 3A,應該足夠了。零件跟電路的話就完全照 datasheet 的 spec 做而已。沒什麼創意 XD
克難的供電測試~ 12V 由電腦的 Power 提供。
然後把電路 layout 成電路板~ 剛開始還怕這個免費軟體沒有 auto routing...
還好是我多慮了

檔案送去 OSHPark 後又是漫長的等待... 三個星期後成品終於來了!
紫色真的還不錯看啊

跟最剛開始那主機的 16pin 20pin 接頭"延長線"比起來,焊這個是輕鬆多了 = =
下圖是已經接到 arduino 上了。左邊從上到下是 USB 5V 供電,12V 輸入,SWC輸入,SWC輸出。
零件都是 Mouser 買的,稍微值得一提的就是那些是 low signal relay, low 到 arduino 的 digital IO pin 可以直接 drive 沒問題 =D
測試我的 "SWC 控制模組" 中...
既然用的是 arduino, 免不了要寫點程式。這個感覺跟 C 差不多吧,沒什麼奇怪的 syntax 所以很好上手。
依我自己的使用需求...寫出來的功能大概如下:
- Mode, Vol +/- 模擬原廠功能
- Track Up/Down 變成 Android MEDIA_NEXT 跟 MEDIA_PREVIOUS
- Track Up 按住 500ms 是按 GUI+m(地圖).
- GUI 就是那個 Win 鍵, arduino 裡叫 GUI key
- Track Down 按住是 MEDIA_PLAY_PAUSE
- Talk 是 GUI+v(Voice Search), 按住則模擬原廠
- 最後下排兩個接/掛電話分別是 Android BACK 跟 HOME, 按住則模擬原廠
程式碼在這裡 nexus_swc.ino.
接下來比較瑣碎點,為了要能使用 USB 隨身碟,必須做一條轉接線。車上的 USB port 另一端是一個方形的母頭。公頭 Mouser 有賣。USB 線裡面的四條線要這樣焊。
上面那張只拍重點,成品大概是這樣 (偷別人的圖XD)
再來是 NFC, 這個是 project 做到一半想到的,反正蠻簡單的就一起做一做~ 下面這個是中控台上方那片塑膠板的背面用 dremel 清出來一塊給我貼 NFC coil 的空間。
用家裡能找到最細的線,繞一繞。
感應測試OK~ 手機放的位置下面就是線圈。線圈接到 N7 裡面。
平板裡面是這樣焊。N7 後面的殼很好開,我用指甲就能挖開了

然後是焊上外接音量跟電源鍵。其實這三個鍵平常不會用到,但當機的時候會需要他們,刷 ROM 也用的到。所以才決定拉出來面板上。
下面是音響主機後面 20 pin 接頭的延長線,從這裡買的。有了這傢伙我就不用剪原廠的線了。大概就是把三條 SWC 線剪斷延長做成接頭。另外 12V 紅黑也做成接頭。
其實原廠主機面板拿掉後騰出來的空間是不太夠塞平板的。記得是差了2mm, 所以要小改一下 mounting bracket 把主機稍微裝後面一點。下圖主機面板本來在右上方。兩個螺絲已經鎖在 bracket 新鑽的孔上。旁邊一點(往右上)是原廠用的孔。
接下來可以上平板啦。隨便固定一下就好,反正最後平板會被夾在主機跟中控台面板中間,不會掉下來。裝的時候會有點多餘塑膠要切掉。
上車安裝無面板主機還有他後面的 20pin 延長線。最大的白色接頭是接 HVAC 控制器,跟這個 project 無關。
接上主機面板,設定調整好後塞進去。以我的用途來說大概就是設定 speed volume 跟手機藍芽配對。電台的話我是沒在聽~
一堆線~ 中間金屬頭是 3.5mm 音源,他旁邊是原廠 USB 接頭接上我的轉接線。下面是轉接線的另一端連到 USB hub。
還是畫一張圖比較清楚吧~
裝上貼了 NFC 線圈的那塊塑膠板。上面弄了一張小貼紙做記號。
中央扶手裡面的 3.5mm aux in 孔要連到平板的耳機孔。 這條線是 6ft M/F.
線繼續往中控台方向拉,線塞進去比較美觀。
再往前拉到油門踏板那邊就可以拉進中控台,這邊是有開口的。手電筒一照就知道開口在哪裡。最後連接平板是1ft M/M 直角 3.5mm 的線。平板這端必須是直角的不然空間不夠。Micro USB 也一樣。
另一種作法是直接把 stereo 音源線剪開接到主機後面aux in的線,不過還是一句話,我不想動原廠的線~~ aux in 不在之前的 20 pin接頭裡面。
下圖那兩塊是用木頭+泡棉做的。用途是要把平板壓在中控台面板上。
最後把線全部接好蓋上去。過程中平板免不了會卡到裡面一些塑膠,記得是有兩個地方會卡到,所以需要稍微修剪一下~
安裝完成後主畫面。
地圖 + 交通。
硬體部分差不多了~ 接下來是軟體設定。第一個最重要的是要讓 Android 看得懂 arduino 鍵盤是在按什麼東西。arduino 的鍵盤跟普通鍵盤的沒什麼兩樣,並不能直接去按 android 的 MEDIA_NEXT 等等,所以要修改系統裡的 key layout file.
這是我現在用的 KL 檔。Vendor_2341_Product_8036.kl 更動部分只有 Key 62-67. 基本上就是把 F key 重新 map,反正 F key 根本用不到。
接下來是 app 快捷鍵,android 有這個功能但是被藏起來了。以我用的 apex launcher 來說,開啟快捷鍵設定頁面必須要新增一個 activity shortcut, 然後選 settings/quicklaunch.
我只設了一個 Search + v 為語音搜尋, 方向盤按 TALK 就會啟動。
Search 就是鍵盤上的視窗鍵, 或是 arduino 裡的 KEY_GUI.
再來介紹幾個 app.
Tasker, 這是做 automation 用。最基本的大概就是偵測充電時 開始放音樂並且讓螢幕不要自動熄滅。斷電後音樂停止+設定 screen timeout 15 秒。我自己還加了像開機畫面啦~自動連接手機網路等等一些雜七雜八的。
Tablet Talk, 用藍芽跟手機配對後,他可以讓你透過平板控制手機通話/撥號功能。裝了這個再配合原廠主機就等於有免持聽筒功能了。
Stickmount, 這個可以自動 mount 插在 USB 上的隨身碟。
Bluetooth AutoTether/AutoConnect, 這個配合 Tasker 就可以做到自動跟手機分享 3G 上網功能。
最後是 ROM 的選擇,這其實沒什麼好選,我用的是 CM10.1 + Timur FI Kernel. 重點是 Timur 這個 kernel 可以做到同時充電並啟用 OTG. 現在 Timur 還出了完整的 USB ROM, 一堆功能根本就為汽車安裝量身訂做~
剩下要裝什麼就看個人喜好,譬如說聽電台的啦,放影片的啦,藍芽 OBDII 等等。但記得一切還是以安全為前提~ 開車要專心

最後! 簡單錄了一段實際使用影片:

Subaru 其他車種平板安裝可以參考 http://forums.nasioc.com/forums/showthread.php?t=2434390