ScratchBot粉墨登場
Description
2017-01-02
作者:Pizg Chen
專案特色
在繪圖或描線時會有畫不直或畫歪的情況嗎?那你一定需要ScratchBot來幫你。ScratchBot是一台能夠畫圖的機器人,只要給予指令它就能繪出你想要的圖形,雖然目前只能使用在簡易的圖形或直線上,而且長度計算、精準度和整體機構外觀也都需要調整,因此未來還會再做改良精進。這個作品的材料取得難度不高、程式碼淺顯易懂,不妨在家自己動手做一台來玩玩吧!
材料準備:
- 機構件 * 1
- Arduino Nano 開發板 * 1
- Arduino Nano 擴展板 * 1
- 28BYJ-48 步進馬達 * 2
- 步進馬達驅動板 * 2
- SG90 伺服馬達 * 1
- 2節AA電池盒 * 1
- DC5521 電源插頭 * 1
- 16500 貍電池 * 2
組裝:
整體上大致很好組裝,唯一要注意的是畫筆要先固定在固定桿上面,然後SG90伺服馬達維持在90度的情況下將固定桿鎖緊。另外,為了避免輪子卡死,在將輪子鎖緊到28BYJ-48步進馬達時,要注意輪軸跟馬達固定板應該留一點空隙,約0.5mm即可。
調整SG90伺服馬達的角度:
調整SG90伺服馬達的角度,是為了讓車子行走時畫筆也能夠正確地提筆與下筆。如果沒有調整好伺服馬達轉動的角度,有可能會出現若干狀況,例如:畫筆卡住地面影響車子行進、畫筆沒有接觸地面以致沒有畫出線條…等等。
測試車子前進後退的能力:
程式採用Arduino官方Stepper函式庫,經過測試,激磁512步可以讓28BYJ-48轉動一圈(360度)。ScratchBot的輪徑為60mm,如果激磁5120步,輪子將會轉動10圈。利用簡單的計算,轉動10圈的一棟距離即為輪徑60mm * π * 10 = 1885mm,依照相同的計算方式即可利用激磁來決定想要移動的距離。這邊可以參考-步進馬達控制
程式碼:
//輪子各轉10圈,讓車子前進與後退。
#include
#include
const int stepsPerRevolution = 2048;
Stepper mRight(stepsPerRevolution, 2, 4, 3, 5);
Stepper mLeft(stepsPerRevolution, 6, 8, 7, 9);
const int steps = 512;
int laps;
Servo Pen;
void setup() {
mRight.setSpeed(10);
mLeft.setSpeed(10);
Pen.attach(10);
PenDown();
laps = 10;
}
void loop() {
Forward(steps * laps);
Back(steps * laps);
}
void PenDown() {
Pen.write(116);
}
void PenUp() {
Pen.write(90);
}
void Forward(int steps) {
for(int i=0; i < steps; i++) {
mRight.step(-1);
mLeft.step(1);
}
}
void Back(int steps) {
for(int i=0; i < steps; i++) { mRight.step(1); mLeft.step(-1); } } void Move(int steps) { if (steps > 0)
Forward(steps);
else
Back(steps);
}
※將上述程式碼燒錄至Arduino,讓ScratchBot實際跑一下。再用皮尺測量車子實際行走的距離,並觀察直線歪斜的程度。
變更設計:
- 繪圖機構:由於繪圖機構目前是整組設置在車體內部,雖然此舉可以讓ScratchBot的外觀比較簡潔,但相對地也造成讓玩家不方便更換畫筆。玩家必須先拆開頂板上的螺絲、掀開頂板、取出整組繪圖機構、更換畫筆、放回繪圖機構、蓋上頂板,最後鎖緊螺絲,手續上真是繁雜。因此考慮在下一版本將繪圖機構變更到頂板上面,雖然影響車子的外觀,但對於玩家在更換畫筆時應該會便利不少。
- 輪子:在測試時發現輪子會打滑,影響繪圖精準度。因此想為輪子加上橡膠外胎,但好像沒有60mm直徑輪子的市售品只有40mm的。但如果改成40mm的輪子,那麼將會影響到固定在底板下方的電池盒,那就只好將繪圖機構組變更到頂板上,原本的地方就可以拿來放置電池盒,也就可以使用40mm的輪子,打滑的問題一併解決了。
問題討論:
- 如果車子實際行走的距離不等於計算的距離時該怎麼辦?
- 如果原本應該是直線,實際畫出來有偏斜時該怎麼辦?
- 想要畫一條長100mm的直線,程式該怎麼寫?
Resource:
Contact
- CategoryRobot Car, Smart Toy, 自走車& mini 4WD
Project簡述
- 簡述ScratchBot是一台能夠畫圖的機器人,只要給予指令它就能繪出你想要的圖形,雖然目前只能使用在簡易的圖形或直線上,而且長度計算、精準度和整體機構外觀也都需要調整,因此未來還會再做改良精進。