星期日, 1月 05, 2014

Gearuino '14-01

目前Gearuino的Roadmap如下:

  1. 七段顯示器的選擇以及顯示
  2. Arduino與藍芽的溝通
  3. Arduino與OBD2的溝通(目前採用OBD2轉藍芽的Solution)
  4. 時速的顯示
  5. 檔位的顯示
  6. Arduino與有線OBD2的溝通
六個步驟的Roadmap皆已完成, 用了大概三個月去開發...算久嗎? 應該吧...不過看在我第一次接觸單晶片開發, 標準放寬一點吧~~哈!
既然Roadmap都完成了, 所以Gearuino就要結束了? 當然不, 還有第二階段, 不過稍晚再整理出來. 先回顧一下第一階段的Gearuino做出了什麼東西.

  1. 七段顯示器的選擇以及顯示

    故事要從這片板子說起

  2. 選擇這Arduino的原因很簡單, 他不只用C開發, 而且語法類似Java, 提供豐富的Library, 資源豐富且很多都是開源, 所以最適合個人開發了.

    接著就開始我人生第二次插麵包版了.

    三顆共陽七段顯示器, Arduino搭配電晶體驅動, 吃掉了十個I/O(幾乎是Arduino UNO的全部I/O), 想也知道這不會是最後呈現的方案, 只是作為熟析單晶片的功課而已.



    在車上顯示的狀態.


    最後是改用MAX7219去驅動七段顯示器. 最多可以驅動到八顆七段顯示器, 還可以串接多顆7219驅動更多的LED.

  3. Arduino與藍芽的溝通

    單晶片跟藍芽的溝通是很簡單的, 聽說跟UART是一樣的簡單,  但其實我也沒有碰過UART, 所以不知道什麼是簡單...無論如何, 藍芽控制起來真的很簡單, 只是可能要稍微了解一下藍芽晶片的AT指令才會比較順利.

  4. 我用的藍芽晶片是拍賣上最便宜, 只支援Serial Port Profile(SPP)的產品, 不到台幣兩百元.


  5. Arduino與OBD2的溝通(目前採用OBD2轉藍芽的Solution)

    Arduino要跟OBD2溝通, 一定要透過ELM327去轉換, 而Arduino跟ELM327之間用簡單的UART就可以溝通了.



    但是我的ELM327是藍芽版本的, 無法用有線的方式去連接(但是這問題後來解決了), 所以只好讓我的Arduino接上藍芽. 透過ELM327去跟OBD2溝通也是簡單的一行指令, 況且我目前只需要時速轉速等等資訊的擷取, 因此並不難; 只是我這個人很懶, 想說這種東西一定有人寫過, 所以找到網路上的兩個Arduino用ELM327的library:

    ArduinoOBD
    Arduino ELM327 Library

    最後我是選擇了 Arduino ELM327 Library , 但我是用Software Serial, 所以還要做適當的改寫, 至於選擇的原因就不贅述.

  6. 時速的顯示

    與OBD2串起之後, 顯示時速就不是難事了, 只要跟ELM327要到時速, 再把數據丟去七段顯示器, 就這麼簡單.

    第一版原型在車上顯示的樣子, 非常巨大, 接下來的步驟是小型化.
  7. 檔位的顯示

    檔位的顯示才是這整個Project最有趣的地方, 標準OBD2是沒有檔位的資訊可以擷取的(或許非標準的OBD2有資訊可以撈).
    不過我的目標是讓大多的車輛都可以顯示檔位, 所以在標準OBD2 pid的基準下, 利用時速和轉速等等資訊就可以推算出檔位; 個人測試之後還算蠻準確的, 只是偶爾會有檔位震盪的狀況, 稍微修正即可.  只是檔位顯示還需要再輸入車輛的資訊, 等於專車專用, 不是很方便, 往後的目標是朝向自動推算檔位的方式.

  8. Arduino與有線OBD2的溝通

    有線溝通與小型化是同步進行的.
    目前是先把顯示模組與控制模組設計在不同洞洞板上. 顯示模組先以時速的顯示為基本要求, 接著再增加檔位, 節氣門, 油耗等等資訊. 越多資訊需要越多七段顯示器, 但是與控制模組之間的溝通僅需要兩條線(再加上供電和地, 總共四條), 因此不斷升級顯示模組的同時, 控制模組不需要做任何更動.

    最後顯示模組定案之後,  再將控制模組整合到顯示模組, 使其只有一張洞洞板.


    最後簡述一下為何以及怎麼用有線的方式與OBD2連線.

    原本我就有一組OBD2-藍芽的轉換模組, 是用來讓手機跟OBD溝通用的. 所以一開始的Gearuino是用藍芽與OBD2溝通而且經測試ok. 但是Gearuino需要吃電, 還是要另外從點煙器或者保險絲拉12V來供電, 還是少不了一條線. 因此一了百了, 最後還是決定用有線的方式與OBD2相連, 且一併供電.

    如要改用有線方式, 原本的藍芽OBD恐怕不適用, 腦筋開始轉向去拍賣買有線ELM327來改裝, 但有天突然看到奇摩部落格(現在已終止服務)有篇文章提到, ELM327經過小修改就可以在藍芽以及有線間切換, 因此我開始研究手上的那顆藍芽OBD.

    我手上的藍芽OBD其實包含兩個模組, 分別是ELM模組以及藍芽模組, 而ELM與藍芽之間只有四條線相連, 分別是TX/RX/12V/地, 所以很簡單的我只要把ELM的這四條線拉去我的Arduino, 就完成了, 完全不用改線路, 也不用動烙鐵去修改ELM模組的PCB, 打完收工, 謝謝收看!!!

沒有留言:

Mr.Color飛機模型用Color 與 水性AQUEOUS HobbyColor 對照表

          最近跟兒子一起研究長谷川的飛機模型, 其中說明書中採用的模型漆色號以Mr.Color硝基漆為主, 水性漆AQUEOUS 為輔. 很多Mr.Color有的顏色, AQUEOUS 都沒有, 前100的色號大致上都有對應到, 但Mr.Color 300號以後的都是特...