渣古頭玩具加鏡頭發光發聲遙控及面部辨識Pan/Tilt自動追蹤

另名:

蘇格蘭場非工業用國際線路自動追蹤十六嘩佬發光發聲遙控左右垂直風油呔連面部辨識渣古頭玩具


仍然是Zaku exceed head 扭蛋玩具改造。原本設計路線是經歷不同階段性改動才到這個版本的,卻因太心急以至2.0只做了少許就著直接做7.0了。定名7.0是沒有原因的,只是跟了ultraman 漫畫發展而已

 XD 。
此文貼於模型玩具版似乎有點離題,唯盡量多提模型改造方面,電改及軟件層面簡略提及便算,有需要才分享罷。

Link of my Zaku Head 1.0

https://goo.gl/QKnhx4


3大功能改造:
1.植入鏡頭,並面部追蹤功能
2.水平垂直活動
3.起動關燈光及聲效


Startup/Shutdown LED/Sound Effect

Remote Control


Face Detection




基本運作流程

- 由鏡頭經USB讀入畫面資訊至電腦,由openCV + Visual C++ 寫成的軟件辨識人面並輸出畫面坐標至Arduino's COM Port
- Arduino 讀入COM Port 資訊,調整 X, Y Servo 以使坐標恆常置中。


模型制作部份

眼部
- 見一般 Zaku II 頭部機械設計眼部都只有左右移動,但為了堅持可玩性,仍然強行設定為左右加少幅度上下移動。。。幸而網上發現竟有例外,使得堅持合理化了。事實上,機械人何需要眼球可動? XD
- 眼部底盤用鋸鋸開,頂部亦然。
- 眼球約五元硬幣大小為~3mm直徑,PG 高達舊零件剛好大小相若。用了smoke color為主色。
- 眼球用回原有零件,內中開洞~7mm直徑以放入鏡頭(~6.5mm)。遮光罩?切自引擎改造套件,用了Liquid Chrome増強反光效果。為了有圓形可動空間,原有透明眼罩亦棄用了。
- 角膜?用透明套件打磨多重內圈扮成 Fresnel Lense 形狀,噴上透明紅+少量透明黃。用甲gel 固定在鏡頭外。

頭頂
- 頭蓋開合部份加了微動開關,用以啟動系統關閉狀態燈光及聲效。這個設定事實源於每次打開車頭蓋時的主觀願望而已XD。
- 始終覺得頭頂的主控口(?)應該要可開合,設計成以顏色及標誌分辦機械型號。既已在內開了大洞藏眼球,所以便再挖深點以切出頂蓋。

其他
- 動力管作了簡單刻線,為增加立體感。
- 內部作了不同程度打磨,為了騰出活動空間及塞進所有零件。
- 底部用透明膠板制作,跟前作一樣,開孔為可更換SD Card。
- 簡單舊化便完成了。

電改部份
鏡頭
網上購入原為簡約窺鏡用途之原件,已配備外環LED及USB接口,非常方便。

Servo
雙Servo分別控制水平及垂直方向,設計上可有L形或T形排法實現,不過礙於空間有限及考慮到視⻆問題,最後採用T形了。

DFPlayer
首次使用,功能完備的MP3 Player,獨立運作一流。可是 datasheet 說明不足,例如command 只提到0x01-0x11而其實還有0x12-0x16,0x12就是那常用的播放\mp3\ 內檔案功能,或許這是強國生產才有的隱藏指令罷XD。

IR receiver
用粒ir receiver 直駁和最簡單的library 便成了,除了資源用得較多之外,沒大難度。而控制方面就用家中棄用遙控,只需將內碼改為相應的ir code 便成。沒有的話用手機加ir blaster 亦可。

全體整合
是遇到最多困難的部份
硬件
1. USB 資源及電力 : 因為鏡頭及Arduino 均需要數據傳輸,兩個 USB 埠是需要的,而DFPlayer 亦需要外部穩定電源。堅持用單一 USB 還是USB Hub + 外置電源還是放棄用多個USB之間惆悵了好一段日子,最後一博試用標榜高速直推兩只1T 硬盤的USB Hub,這種非標準元件卻給問題解決了。

主控軟件
1. 主控程式改自instructables資源 http://www.instructables.com/id/Face-detection-and-tracking-with-Arduino-and-OpenC/,然而那是數年前的程式碼,於今天新版的openCV 及 Visual Studio Community 需要一定程度的改動才能執行。
2. 幾經除錯及測試才發現源碼COM Library 只支援COM1-9而是非至256,而我又不懂用新版 Library ,因此Arduino 在連接的作業系統上(我用Windows 10)需要人手作相應改動來遷就。
Arduino 程式
1. 棄用servo.h 及 softwareserial.h,因它倆資源互斥加上softwareserial.h需用系統資源較大。(故此連帶DFPlayer_Mini_Mp3.h 都不用了)事實上加了irremote.h 亦衍生不少資源問題。
2. 主控鏡頭當偵測到面部會不斷傳送 X,Y 資訊往COM Port,然而 Arduino 實際上不應全數回應,因會做成反應不同步及誤認X為Y或Y為X等現象,因此雙方需要有自動同步機制及有自動忽略過量數據功能。


VC++ Code


Arduino Code


Desktop Icon


Overall Summary


1.0 vs 7.0


Zaku Camera


謝謝觀賞

※本文為投稿文章非本站立場,內容如有疑慮請來信告知