《超圖解ESP32應用實作》的PID循跡自走車PCB電路板說明

《超圖解ESP32應用實作》新書初稿已經完成,尚未編排,內容涵蓋PID控制、編寫硬體中斷事件類別程式庫、擴充微控器的輸入介面、PlatformIO IDE開發工具、AI程式設計助理、JTAG偵錯介面、CAN匯流排應用、ESP32-S3/S2開發板的內建USB介面實作…等主題,共18章,約600頁。

PID(比例-積分-微分)是自動控制領域廣泛採用的演算法。本文旨在補充說明書本第9章的PID控制循跡自走車《試作3號機》,和書中未提到的《試作2號機》之間的差異。

PID循跡自走車的原型

底下是採用洞洞板製作的循跡(也稱為「循線」)自走車原型,底層的洞洞板連接一個透明塑膠片,承載具備充電和5V, 3.3V電壓輸出功能的鋰電池模組,以及白色的輔助輪(萬向輪)。

PID循跡自走車

從側面可看出它由不同的模組堆疊而成,每個模組(馬達控制器、ESP32微控器、循跡感測器數位擴充輸入埠、OLED顯示器和啟動鍵)各自焊接在一小塊洞洞板。

PID循跡自走車側面

書本有圖解說明手工製作自走車所需的工具、步驟、接線和測試過程。

PID循跡自走車PCB洞洞板

承載鋰電池模組和萬向輪的塑膠板,我最初是裁切桶裝光碟片包裝附帶的透明塑膠片。

透明塑膠片

這是裁切完成,鎖上萬向輪以及兩種鋰電池(16340型和18650型)充電、5V升壓模組的樣子:

萬向輪以及兩種鋰電池(16340型和18650型)模組

為了方便讀者製作相同的板子,我繪製了一個向量圖稿,並且用桌上型雷射切割機,在2mm厚度的壓克力板切割出這個板子(如下圖左)。設計稿附在書本範例裡面,讀者可以拿給壓克力招牌業者或各地的Maker(自造者)中心切割。

壓克力板和塑膠片

當然,你也可以像書本的說明一樣,用壓克力刀手工裁切,雖然成品不像機器做的那麼平整,但使用上沒問題。

使用PCB洞洞板製作電子電路的原型

麵包板和PCB洞洞板都是製作原型過程中,連接電子零組件的媒介。許多DIY電子作品,都只有製作一個或少數個,因此把元件焊接在洞洞板是很常見的方式,《超圖解ESP32應用實作》示範的熱插拔機械小鍵盤,以及連接汽車CAN匯流排的OBD-II介面實驗,都是用洞洞板製作。這是熱插拔機械鍵盤的電路板:

熱插拔機械鍵盤的PCB洞洞板

這是插入按鍵軸體和鍵軸定位板的模樣。

DIY熱插拔機械鍵盤

鍵軸定位板,我採用1.5mm厚的壓克力板製作,因為它的主要作用是固定鍵軸,所以方形孔洞的大小必須和鍵軸本體一致,但手工切割的精確度不足,所以我用一款稱為”3018 Pro”的桌上型CNC(數值加工機)加上15W雷射切割頭製作(如下圖),書本範例同樣有附設計圖檔。

3018 Pro桌上型CNC加雷射切割頭

底下是第18章,連接汽車OBD-II診斷介面實作的PCB洞洞板正、反面外觀:

OBD-II診斷介面洞洞板

OBDII連接器的接腳不是2.54mm間距,跟洞洞板不相容,所以要自行鑽孔、稍微修改一下洞洞板。因為只有幾個元件,不難製作。

OBD-II診斷介面洞洞板

PID控制循跡自走車的PCB板《試作2號機》

雖然DIY作品在素材選用上沒有強制要求,電路用麵包板或洞洞板組裝,自走車的本體用塑膠盒子、木片、紙盒、竹筷…等組合都行。

但自走車的元件比較多,為了降低DIY的門檻以及對製作工具(如:鋸子和電鑽)的要求,並且提供讀者一個「標準化」的實驗素材,筆者繪製了一個雙層(或者說「雙面」)循跡自走車電路板。本書第9章有介紹PCB板的術語,以及提交書本範例PCB設計檔給PCB代工廠「打樣」的流程,打樣就是少量試作,通常是3~5片。讀者可自己上傳書本的範例檔給代工廠打樣,將來也許可以直接買到這個PCB板。

KiCAD PCB編輯器

之前用洞洞板製作的自走車,各模組分層堆疊在不同子板,外型都是容易裁切的矩形;設計這個PCB的主要用意是要減少自行加工的步驟,所以全部元件都焊在這個板子,電路板的每個邊都做成不割手的圓角。底下是循跡自走車的電路板正面外觀,筆者稱它「試作2號機」(洞洞板原型車是1號)。

試作2號機PCB正面

PCB右前方預留數排2.54mm間距的銲接孔(焊盤),方便日後新增開關、蜂鳴器、距離感測器…等元件。PCB板通常是安裝在機器的內部,而這個板子則是顯露在外,所以我加上一些補助說明文字和設計圖樣。底下是PCB板背面照,上方空白處標示了ESP32的腳位編號及其功能,方便實驗時對照。

試作2號機PCB背面

我在周日提交PCB設計稿給代工廠,經線上客服人員確認無誤並付款之後,星期三就完成打樣。底下是焊接完畢的循跡自走車2號。

試作2號機循跡自走車

「試作1號機」洞洞板放置馬達的空間比較緊湊,而2號機的PCB板則特意加長中間兩側,讓馬達固定座蓋住N20的齒輪箱,達到基本的防塵效果。

N20馬達固定座

《試作3號機》PCB板

試作2號機的電路跟1號機相同,但部分走線規劃,在PCB板有更合理的方式,例如:路線更短或者需要繞過某些區域,所以我修改了2號機的PCB板,將馬達位置稍微往前移,馬達驅動板以及連接馬達的排針接點則往後移,也調整一些腳位,以便縮短驅動馬達的訊號走線並且遠離ESP32的接腳,降低雜訊干擾的可能性。

這是《試作3號機》的PCB板正面照:

試作3號機PCB板正面

2號機背面印刷的ESP32接腳說明,令電路板顯得有些雜亂,我刪除它,改成標示元件與ESP32的相連腳位,如:啟動開關和I2C匯流排的腳位,以便在編寫程式時查看。《試作3號機》的PCB板背面照:

試作3號機PCB板背面

1號和2號機的馬達驅動板是背面朝上焊接(因為它的接腳名稱印在電路板背面),方便日後確認電路接線,但自行設計的PCB板本身就能加上印刷圖文(絲印),所以《試作3號機》的馬達驅動板採正面焊接。

試作2號機與3號機的電路板,我分別交給不同的代工廠打樣,價格不同。也許是我這個雙層板的製造工藝要求不高,所以品質看起來沒有差別,PCB板也都是用氣泡袋真空包裝,但仍有一個小小的差異:價位較高的代工廠有在包裝裡面附一包乾燥劑,底下這個便宜的打樣沒有附 😛

試作3號機PCB板

底下是焊接、組裝完成的《試作3號機》循跡自走車。「啟動」鍵開關從使用ESP32內建的上拉電阻,改成用電阻和電容構成的消除彈跳雜訊(濾波)電路。PCB正前方新增兩排2.54mm間距的焊盤(焊接點),方便讀者「改機」,自行加上距離感測器或其他元件。

焊接試作3號機PCB板

這是焊接完畢,連接18650鋰電池充電、5V升壓模組的模樣,中間的ESP32開發板採用“LILYGO TTGO Mini32 V1.3”。

試作3號機循跡自走車

《試作3號機》循跡自走車電路板的後續修正

本以為上文的3號機PCB打樣就是最終確定版,但在收到新訂購的「8線循線模塊」後…傻眼,底下照片中的兩個循跡感測器的功能和腳位完全一樣,但仔細比較,可發現上面那個的零組件以及兩個固定圓孔的距離都被拉開了。

8路循線模塊

《試作3號機》PCB板前面有開兩個對齊循跡感測器模組的圓孔,雖然實際上用不到(焊上排針就夠穩固了,不必用螺絲固定),但為了能在視覺上覆蓋這兩種模組,我把PCB板前面的兩個圓孔改成長條形。書本範例提供的PCB設計檔案是修改過的長條形版本。

其實0.96吋OLED顯示器模組的尺寸、固定孔的位置和大小也略有不同,所以自走車PCB板沒有預留顯示器的螺絲孔,但只要焊接或插入排插,OLED顯示器就不會晃動了。

OLED顯示器

最後,循跡自走車1~3號機的電池盒以及萬向輪,都要另外用一片壓克力板安裝。假如把萬向輪和電池盒直接固定在PCB板,就能不需要這片壓克力板了。底下是一個可行的設計方案,改用一款高度較低的萬向輪:

萬向輪

在PCB板後面裁切一個矩形孔,讓萬向輪從上方穿透過去,再用螺母墊高,或者把左右輪換成較大尺寸的款式,即可讓車體保持水平。

試作4號機設計

然而,設計PCB板時也要考量它的尺寸,《試作3號機》PCB的尺寸約9.9cm × 9.7cm。PCB代工廠提供的低廉打樣價格,通常只限於10cm × 10cm以內,厚1.5mm(含)以下的雙面PCB板,若超過尺寸,打樣價格會攀升好幾倍。這個板子的電路佈線也要修改,例如,OLED顯示器往左移、ESP32往前移,才能擠入新的外型,倘若有《試作4號機》,大概會朝這方向設計。

Posts created 470

6 thoughts on “《超圖解ESP32應用實作》的PID循跡自走車PCB電路板說明

  1. 赵英杰老师您好,恭喜您!前天吧,我预感您在写新书,只是没想到会这么快,真的非常感谢您<3在这个混乱的时代,唯有您的书带给我平静,感恩!

  2. 哇,我刚买了《超图解esp32》,老师就要出新书吗?一定要买一本支持支持!就是大陆进口速度太慢啦。

    另外提一点建议:可以把书分成“上 中 下”册吗?太厚阅读、携带不太方便。

    另问一个问题:作为非电子、控制相关专业的学生,只是想做一些有点酷的玩意儿,有必要在未来学习stm32吗?因为学校老师一直在推荐这个平台,但是我只会arduino。

    1. 非常感谢支持!

      我是电子科系毕业,以前在学校学的单片机是8051,学了大半个学期才配合8个LED做出追光(台湾称为「跑马灯」)效果,因为前面的课程在讲解处理器的 结构、寄存器、内存结构和汇编语言(台湾称为「组合语言」)。 LED追光在当时看起来很酷,现在看来很小儿科⋯额⋯好像也不能这么讲,我前几天逛电脑卖场,看到商家展示透明的桌机壳,里面搭配LED灯条做出彩色 追光效果⋯很吸睛。

      我以为内地的老师会推荐使用开源RISC-V架构的处理器:-) 我有几片STM32开发板,它的性价比高,但我并没有使用官方的开发工具(STM32CubeIDE),而是用Arduino, MicroPython和JavaScript语言。 从DIY的角度来看,我觉得用哪一款处理器不是很重要,想到性价比,ESP32-S2 mini开发板,采32位RISC-V处理器,有Wi-Fi,零售价不到人民币 8元⋯实在太卷了,你也能用它做出很酷的东西。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top