摘要:打造Raspberry Pi 無線坦克車(PiTank)
去年安迪兒試做了raspberry pi小車後
一直想要試試更威的坦克車
可是去年碰上專案趕年底上線
安迪兒又有考試要唸書
坦克車就一直在todo list上放了好久
今年清todo list時
終於狠下心來實現它
(怠惰啊...)
剛好的安迪兒同事 Terry大
知道安迪兒想要弄坦克車
就送了安迪兒tamiya的坦克車底座
並告訴安迪兒可以用齒輪變速箱去加大扭力
他還怕我沒其它的配件
又多給了一包零星的材料包
超有用的
(真是太感謝了T.T)
所以安迪兒這次完全拿這些東西和手上現成的東西來打造
首先是程式部份
先寫一個坦克的控制中心,web介面的
這樣手機、平板、PC都可以使用
安迪兒這次是拿node.js + express來開發
因為node.js很輕巧,資源也吃不多
很適合拿來在raspberry pi上執行服務
express讓前端有個簡易的介面,給使用者看影像和操控的地方
前後端溝通方式有2種
一種是websocket
* 傳送手機x、y軸的感測,控制鏡頭即時變換視野
一種是api
* 負責畫面上四個方式的按鈕控制
以下是安迪兒完成的樣子
因為網路上大多是python的模組
node.js很少提到怎麼直接控制gpio
安迪兒這邊提一下
關於node.js控制pi gpio的方式
安迪兒是用這2隻去控制
https://www.npmjs.com/package/pi-gpio
https://www.npmjs.com/package/pi-blaster.js
pi-gpio是送GPIO訊號
pi-blaster是送伺服馬達PWM訊號
要使用這2個套件,raspberry pi上都還要另外安裝相對的東西
(2份npm的文件裡有提到,原理可以看一下套件裡的程式碼)
https://github.com/quick2wire/quick2wire-gpio-admin
https://github.com/sarfata/pi-blaster
因為年代久遠了,雖然大家都說用quick2wire-gpio-admin
但其實有錯誤(2012年的)
查了一下原因是因為raspberry pi B版後燒的image有改過
(雖然是這樣說,但B版這也很久了耶,安迪兒第一塊pi版就是B版的)
安迪兒只好去看quick2wire-gpio-admin的原始碼
並修改了一些相關的部份,再重新make過安裝就可以順利使用了
相同的情形也發生在node.js的套件
https://www.npmjs.com/package/pi-gpio
也是因為老舊判斷版子cpu等資料和gpio的部份有更動
所以安迪兒又再一次流眼淚的去修改套件
這部份的修改,安迪兒直接放上github的node_module裡
沒重新安裝的話,可以直接用安迪兒整包改好的node module
全部的程式
安迪兒己經放上github
Bow-wow Pi Tank
可以自行捉下來玩玩
安迪兒稍為說一下
使用github上整包bowwow PiTank的步驟
首先git clone https://github.com/bowwowxx/PiTank.git xxx資料匣
然後裡面有個PiTank_module.zip 解開它,裡邊是安迪兒改好的模組
可以直接拿這個進quick2wire-gpio-admin
cd quick2wire-gpio-admin
make
sudo make install
sudo adduser $USER gpio
再來是pi-blaster
cd pi-blaster
install autoconf
sudo apt-get install autoconf
building
./autogen.sh
./configure
make
install
sudo make install
正常的話,這部份重開機後也會執行
PWM相關訊息
再來裝一下raspberry pi的node.js
wget http://node-arm.herokuapp.com/nodelatestarmhf.deb
sudo dpkg -i nodelatestarmhf.deb
裝完後看一下有沒訊息
pi@raspberrypi ~ $ node -v
v0.12.1
pi@raspberrypi ~ $ npm -v
2.5.1
最後進到PiTank的資料匣下
有必要的話,修改一下gpio的腳位後
起動PiTank
sudo npm start
再來是影像的部份
這邊可以參考
Raspberry pi 記錄3-關於Pi Camera和即時串流(MJPG Stream Server)
起動即時串流服務後,修改一下PiTank裡面index.jade的ip
再重啟PiTank
sudo npm start
打開瀏覽器,EX:192.168.0.10:3000
看一下影像和控制按鈕有沒反應了
再來是車體的部份
大約是規劃位子裝上零件
貼上照片看一下
完成圖:
收工嘍~收工嘍~^^