M-EP1
這次負責這個案子,讓我有許多新的體會。想藉這篇文章,記錄下過程中的思考與學習,也希望能給有志於創作的朋友一些參考。 事情的起點其實很簡單。某天老闆交辦:「有一塊模組需要進行控制,或許未來可以發展成我們自己的產品!」收到這個指令後,我依照過去的習慣,迅速地把腦中的想法畫在紙上,簡單勾勒出初步的概念圖(如下圖)。 說來有點......,上一次自己設計電路板時,SMD元件還沒普及。這才驚覺,自己其實已經和這個產業的最新進展有點脫節了。 雖然如此,這些年我一直有關注相關社群的發展,疫情期間也參加過不少線上分享會,聽了許多熱情的Maker們介紹他們的創作。這時腦海裡突然浮現 官帥這個名字。雖然我本身是個比較I的人,但這次還是決定主動聯絡他,把這張外行人的草圖拿出來討論。 坦白說,專業人士看到這張圖,大概只會覺得「這到底是什麼鬼?」但為了完成目標,我只能硬著頭皮衝下去!這就是第一版SoC版本的開端!(以上會把敏感資訊移除) M-EP1
M-EP2
有了這個開端之後,我深刻體會到,專案的順利推進,必須建立在對合作夥伴的信任之上。唯有彼此信任,才能激發良好的互動與高效的協作。 很快地,原本僅僅是一張手繪草圖的概念,在強力外包執行力下,超乎預期地迅速產出了一個基礎的3D渲染圖。當然,這僅僅是溝通的起點,並不是專案的終點。 由於這個專案在初期僅止於概念階段,連一份正式的規格書都還沒有,所有的發想只能依賴我自己的想像力來補足。而另一方面,客戶端的需求也尚未定案,資訊相對不明確。因此,在這樣的情況下,我只能根據自身的經驗與判斷,先行將想像中的藍圖付諸實踐。 M-EP2
M-EP3
好的開始固然重要,但真正能讓一個專案走到最後、順利完成的關鍵,還是「堅持」。這個階段,我和外包夥伴已經默默組成了一個小而靈活的團隊,大家都很有默契地往同一個目標前進。
我們當時決定採用B2B模組化的方式來設計電路。這個決策,其實是因為一開始負責連接的模組本身就是走這個概念,加上希望縮短初期驗證的時間,所以很快就拍板定案。事後回頭看,這個選擇確實幫專案省下不少時間,也讓後續的開發進度加快不少。
不過,第一個遇到的技術挑戰,就是電源規格的設計。根據需求,系統必須能接受DC 12V的輸入,然後同時提供 模組 和 SoC板 各自所需的5V電源。為了避免兩邊互相干擾,我們決定採用雙電源的設計,讓每個模組的電源獨立運作,這樣就算其中一邊出現問題,也不會影響到另一個模組的運作。M-EP3
M-EP4
M-EP4 解決了電源供應的需求之後,接下來出現的問題就比較有挑戰性了。這次的主要模組採用的是特定的接頭和固定孔位,但一開始我們手上根本沒有完整的尺寸圖,只能靠經驗和現場量測。說真的,這種「無圖可依」的狀況,對我來說還是有點壓力,畢竟要一次到位真的不容易。
更尷尬的是,量測的工作必須由我這邊先完成,然後再把所有數據交給夥伴,讓他去做孔位定位。這過程其實很考驗彼此的信任,因為只要前面一個環節出錯,後面整個設計就會跟著跑掉。想想,對那些經常處理這類專案的人來說,或許這只是日常小事,但對我來說,每次都像在比精準度。
幸運的是,就在我們準備要送PCB製作時,終於拿到一份比較準確的CAD圖。當下真的鬆了一口氣,也趕緊把我們量測的數據和CAD圖做比對。結果發現,誤差值小到讓人振奮——原來我們的量測完全正確!
這一刻真的很有成就感,最終,我們也順利完成這塊板子的精準對接。
M-EP5
M-EP5 在討論硬體的同時,軟體這邊其實也沒閒著。這次我們沿用之前用過的一塊底板,把SoC接上去,再連到廠商提供的Demo Board,透過USB完成連接。其實這塊之前就有用過,操作上跟一般的SoC板沒什麼太大差別,基本上就把它當作Pi Zero,接上OTG線就能用了。
不過說到軟體開發,那又是另一段可以慢慢講的故事。這裡先把硬體的第一階段談完,後面再來分享軟體那邊遇到的種種挑戰。M-EP5
M-EP6
M-EP6 過了一關又一關,處理完模組的定位之後,接下來要面對的是模組 USB 和 SoC 之間的 OTG 傳輸線連接,還有 SoC 的供電傳輸線。雖然它們都是 USB 傳輸線,但接頭卻各自不同,有 Type A to Micro USB,也有 Mini USB to Micro USB。最後我們選擇用轉接線來解決這個問題。
主要板子這邊必須用上 USB 連接器,這時又得考慮兩個連接器之間的走線距離,不能太短也不能太繃。評估之後,雖然外觀看起來不算最理想,但這樣的做法至少能順利完成我們的目標。
M-EP7
M-EP7 最麻煩的問題解決之後,整個內部連接還剩下最後一塊——RS485 輸出介面。為了省去控制 RS485 的 DE/RE 信號這種麻煩,我們這次直接選用可以自動切換的模組,這樣真的省了不少事而且這塊模組真的非常好用!
不過因為模組本身體積不小,最後只能把它放在板子的背面。幸好,連接上 TTL UART 的 Vcc、TXD、RXD、GND 後,RS485 的輸出只剩下 A+、B-、GND,接線也算單純。
這樣下來,板子上所有需要用到的模組就算是全數搞定了。雖然整體看起來好像只是「堆模組」那麼簡單,但其實每一步都不能馬虎,畢竟PCB送洗只有一次機會,每個決定前都得先實際連接模組測試過才敢下手。說到底,彼此的工作量還是相當可觀的。
M-EP8
M-EP8 前面的決策大致上已經完成了硬體一半的功能,接下來要處理的,是設計一條控制線。這條線的用途很單純,就是當輸入+12V電壓時,讓軟體能夠偵測到訊號,進而啟動內部的功能,就像IC上的Enable腳一樣,給高準位就開始動作。
但問題來了,SoC這邊只能接受+5V或+3.3V的電壓,直接接+12V肯定不行。遇到這種準位不符的情況,我們決定採用最常見的光耦合開關來解決。設計上,當GPIO給正電壓時,光耦導通,4、3腳連通後,INPUT0就能得到+3.3V,這樣訊號就能安全地送到SoC的輸入腳,達到高準位的效果。
有趣的是,這次我們剛好把元件巧妙地塞在SoC和底板之間的空間,既不佔用太多位置,也讓整體佈局更緊湊。
M-EP9
前面經過了好幾輪的假設、反覆驗證,還有在麵包板上做電路測試,才終於敲定最後的電路設計。這樣一路走來,整個產品的板子設計也終於接近尾聲了。
一開始就有規劃好,這塊板子是要安裝在機構整合後,所有的輸入、輸出和電源都會整合到一條多蕊纜線上。最後只留了一組 LED 燈號用來識別狀態,簡單明瞭。
這次開發還讓我學到一件事,就是「纜線定制」的成本比我想像中高很多。像端子接頭選用 PH2.0 公母接頭,設計時最好用常見的腳位數(2、4、6、8、10),這樣在採購和庫存管理上都比較合理。但當時沒注意到這個「眉角」,結果選了13腳的規格,市面上很少見,導致後續備料困難度大大提升。
另外,找打件廠時也要特別留意,在生產過程中哪些地方容易出錯,設計階段就要盡量避開這些問題。雖然這個版本已經可以量產,但要真正降低生產成本和失誤率,可能還不是最理想的選擇。