作者:陸向陽
測距應用對許多創客而言並不陌生,例如紅外線測距、超音波測距等,但較少人使用雷射(對岸稱為激光)測距。近期有一名創客Hesam Moshiri就示範如何打造一個基本的雷射測距。
控制電路設計開發
Hesam先挑一片主控板,他選擇深圳Waveshare公司的RP2040-Zero板,該板的主控晶片為RP2040,即樹莓派官方的獨特MCU晶片,該晶片除了供自家Raspberry Pi Pico板使用外,也供其他板卡商製成自己要的控制板,RP2040-Zero即是其一。
嬌小的RP2040-Zero板為整體控制電路的心臟,但還需要一個控制用的身體,對此Hesam設計了一片與RP2040-Zero連接的週邊控制板,是運用Altium公司的雲端版設計軟體Altium Designer 23設計成,設計期間也透過網站搜尋可以取得的電子零件並產生料件清單(俗稱BOM表),設計完成後的週邊控制板為雙層板,並委託他人客製生產,取得生產完成的印刷電路板後,Hesam再將購得的電子料件焊接上板子,以此實現週邊控制板。
客製的控制板畢竟不量產,故沒有名字,而其上頭有繼電器(relay)、LED燈號、按鈕等,以及有個專屬連接器可連接蜂鳴器(buzzer),以便後續開發可以使用。然後,電力的部份也是先接到客製板上再傳遞給RP2040-Zero板,不過RP2040-Zero自身也能取得電力。
客製板還有兩個特別的連接器,一個僅有4根接腳,用來連接飛時(Time-of-flight, ToF)測距感測器(distance sensor),感測器晶片是意法半導體(STMicroelectronics, STMicro)的VL53L0X(同時具有發送接收),台灣也可買到,約數百元新台幣。4根接腳的連接器本質上是I2C介面。
關於VL53L0X的性能規格,STMicro官網寫最遠可以量測200公尺,但一般要考慮配置與外部環境因素等,實務而言約在3公分~1公尺間;解析度方面最小可以到0.1公分,不過也有誤差範圍,誤差在3%~10%間。
另一個連接器有40根接腳,用來連接軟板的TFT顯示器,本質上是SPI介面,用來顯示量測到的距離數值。Hesam用一片2.4吋、解析度320 x 240的彩色TFT顯示器,該顯示器內嵌的控制/驅動晶片為我國奕力科技的ILI9341,台灣一樣可以找到使用該晶片的TFT顯示器模組。
控制程式設計開發
軟體部分Hesam只有概略交代,但也能略窺一二,首先他是用比較底層、比較技術的方式進行軟體開發,先是使用Raspberry Pi Pico的Pico C/C++ SDK v1.5函式庫,然後花許多時間在LVGL(Light and Versatile Embedded Graphics Library)函式庫上,用該函式庫來設計開發2.4吋TFT顯示器上的顯示畫面。
然後為了同時使用上RP2040內的兩個執行核心,Hesam在RP2040-Zero控制板上跑一個即時作業系統(RTOS,沒有明講是哪一套)。至於開發工具方面,Hesam用常見的Microsoft Visual Studio Code(簡稱VS Code),寫好的程式則透過gcc arm 12.2.1編譯器進行編譯。
若想了解程式細節,其實Hesam也已經把原始程式碼放一份在Altium社群專案網站上,專案名稱Laser-Range-Finder,必須註冊帳號後登入才能看,或者直接連結Google、Facebook帳號也是可以。
筆者下載一份後檢視,裡頭有VL43L0X的C語言原始程式碼(副檔名.c,另也有用上含括檔.h),以及一個已經編譯好的Laser.uf2檔案,可以直接燒到控制板上,或者保險一點是先放入flash_nuke.uf2檔案把控制板上原有的內容都清掉,而後才放入Laser.uf2檔案。
各種應用可能
Hesam完成上述後,後續就是讓其他人以此為基礎去加搭發揮,例如「當距離短於30公分時透過蜂鳴器發出警告」,類似今日汽車常見的倒車雷達,但其實多數是以超音波技術實現;或者是「距離超過80公分時則啟動繼電器,從而驅動電風扇、洗衣機等大功率設備運作」。
最後,雷射測距也是有缺點,照射到黑體物是不容易反射的,會被吸收,如此就無法準確測距,但是超音波與紅外線同樣有其優缺點,所以通常是同時使用上兩種或兩種以上的測距技術而後交叉比對確認,對於一些避障應用而言這將是不可少的。
(責任編輯:謝嘉洵)
- 創客積木M5Stack加入LLM戰局 - 2024/11/29
- MLPerf大語言模型、生成式AI測項觀察 - 2024/11/27
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28