打造Raspberry Pi 無線坦克車(PiTank)

摘要:打造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
看一下影像和控制按鈕有沒反應了

 

再來是車體的部份

大約是規劃位子裝上零件
貼上照片看一下

完成圖:

附上去年完工的小車影片:
bowwow小車

附上完工的bowwow坦克車影片:
bowwow坦克車

收工嘍~收工嘍~^^

==以上文章同步發表至安迪兒另一個github備份站==