古人智慧

Just Do it!
上士聞道,勤而行之;中士聞道,若存若亡;下士聞道,大笑之。不笑,不足以爲道。
~ 道德經 41

搜尋此網誌

載入中…

Translation

2017年1月15日 星期日

自平衡車 - ESP8266 + A4988 + NEMA39

每次看到3年前做的自平衡車都好想幫他升級,但是要玩的的東西太多了~~~
今天,就狠狠把時間留下,準備做個不一樣的自平衡車。。。。

《先考慮TinyPlan GPIO是否足夠,8 pin剛好》

《要做一塊PCB來接步進電機馬達》

《拿之前的A4988板子來試著堆疊》
《橫擺》

《疊著》



《看起來還可》

用Eagle PCB畫電路圖與Layout。。。


再來,就是用我DIY的雕刻機,雕刻效果還真不錯!!!



《簡單的零件》

《焊接完成,背面》

《正面》

《裝上A4988》


《應該用這種擺法,體積最小》

《開始測試》

《夜間模式,漂亮嗎?》

《視頻分享》

video

2017年1月2日 星期一

Spider Robot恭祝大家2017新年快樂~

祝大家新年快樂,身體健康,事事順心,心想事成~


如何用LibreOffice/OpenOffice輸入數學公式

製作Spider Robot最重要的部分就是三角函數還有矩陣運算。

這學習過程跌跌撞撞,尤其是cos、sin等等角度與象限整合的矩陣運算,真令人頭昏腦漲的搞不清楚,實在沮喪~~

還好,從Google search中找到前人的智慧與分享,終於打通任督二脈,趕快記下來!!

先分享Spider robot在3軸旋轉的動作,好有趣~
《這個版本身體與腳會分開,做的不是很好》
《修正版》

這是我手寫的旋轉矩陣,


但是,如何用word寫下三角函數與矩陣公式? 這又是一門深奧的學問,真是過一關卡一關,關關難過關關過-----

首先,找到用LibreOffice可以輸入數學公式。
在Writer中點選「插入/物件/公式」後,
輸入數學式子原始碼:
left [ matrix{(X_2-X_1)#(Y_2-Y_1)#(Z_2-Z_1)##(X_3-X_2)#(Y_3-Y_2)#(Z_3-Z_2)##(X_1-X_3)#(Y_1-Y_3)#(Z_1-Z_3)} right] left ( matrix{ X##Y##Z} right) = left ( matrix{ L_1^2-L_2^2+R_2^2-R_1^2##L_2^2-L_3^2 +R_3^2-R_2^2##L_3^2-L_1^2 +R_1^2-R_3^2} right)

呵呵,就出現這個矩陣,就是我要的!!
那就寫個旋轉矩陣試試,對X/Y/Z軸旋轉矩陣為-

其中,我卡在對Y軸旋轉的矩陣好幾天,後來在可汗學院找到這課程,如同打開神秘大門,讃!Rotation in R3 around the x-axis

然後,把這3個矩陣整合成為3D旋轉矩陣!
我竟然可以做出這矩陣,太帥了!!
source code如下:

left [ matrix{X_1##Y_1##Z_1} right] = [R_x*R_y*R_z]left[ matrix{X##Y##Z}right  ] = left[ matrix{cos%beta#0#sin%beta##sin%alpha Sin%beta#cos%alpha#-sin%alpha cos%beta##-cos%alpha Sin%beta#sin%alpha#cos%alpha cos%beta}right ]left [ matrix{ cos%gamma#-sin%gamma#0##sin%gamma#cos%gamma#0##0#0#1} right] left[ matrix{X##Y##Z}right] newline %= left[ matrix{cos%beta cos%gamma#-cos%beta sin%gamma#sin%beta##sin%alpha sin%beta cos%gamma+cos%alpha sin%gamma#-sin%alpha sin%beta sin%gamma+cos%alpha cos%gamma# -sin%alpha cos%beta##-cos%alpha sin%beta cos%gamma + sin%alpha sin%gamma#cos%alpha sin%beta sin%gamma+sin%alpha cos%gamma#cos%alpha cos%beta}right ]left[ matrix{X##Y##Z}right  ]



參考資料:

2016年12月19日 星期一

[ESP8266] TinyPlan + A4988 + NEMA39 stepper

3年前,因對陀螺儀產生興趣,著手製作2輪自平衡車來理解Gyro的原理與運用。一路跌跌撞撞終於完成,這項目讓我成為maker~~
3年後,我發現對gyro還需要深入研究,而且現在有ESP8266平台,CPU與memory都提升很多,應該可以做細膩的運算與動作,這也是這篇主要的部分。

先規劃系統方塊圖:
電路板是用承田電子的TinyPlan板子,TinyPlan是將ESP8266模組與USB還有reset電路整合,與Adruino IDE結合使用非常容易與方便。

為了確保ESP8266能透過A4988驅動步進電機馬達,我先把測試電路接起來,做了以下實驗。
《用我DIY的電源供應器,
5V接TinyPlan,
A4988則接另一12V電源》

《TinyPlan上ESP8266模塊》

《DIY的A4988測試板》

video
《視訊分享》

實驗結果一切正常。。。。

測試code:


#include "A4988.h"

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MICROSTEP 16
#define MOTOR_STEPS (200 * MICROSTEP)

// All the wires needed for full functionality
#define ENBL 15
#define DIR_1 13
#define STEP_1 12

// microstep control for A4988
A4988 stepper_1(MOTOR_STEPS, DIR_1, STEP_1, ENBL);

long move_r = 360;
int dir = 1;
void setup() {
  /*
     Set target motor RPM.
  */
  stepper_1.setRPM(10);
  stepper_1.setMicrostep(MICROSTEP); // make sure we are in full speed mode
}

void loop() {
  /*
     The easy way is just tell the motor to rotate 360 degrees at 1rpm
  */
  stepper_1.rotate(move_r * dir);
  dir = dir * -1;
}


參考資料:
A4988 arduino Library download - 《here》

Spider Robot family 成員大集合

2016年底了,把手上的Spider Robot蜘蛛機器人做個盤點。
做這個project最大的收穫有幾個部分“
1. 數學-三角函數:這部分是非常基礎而且必要的部分!
2. 熟悉Arduino與ESP8266平台開發,學習有關於interrupt與HTML語法。
3. 3D建模,使用Sketchup建模,開發蜘蛛的動件結構,腳的結構簡單與結實是重點。
4. PCB設計,使用Eagle PCB設計電路與layout,再用雕刻機刻出電路板。
5. 仿真步態模擬,開發不同與有趣的步態。

提供Spider Robot蜘蛛機器人的寫真:
[Give me five!]

[hand in hand~]

[疊疊樂]

[兄弟機合照-1]

[兄弟機合照-2]



[圍著老祖宗]




2016年12月16日 星期五

Git架設-Banana-Pi M2+

因正職工作因素,時常出差在外地。在hotel寫Code時,需要參考以前的code都很困擾。如果把這些code全部上傳到GitHub又不太現實。
心中就想自己有個Git repository可以從外地進來取code,應該是很美好的事!
是的,在網路上已經有很多先進提供很好的方案,經過實作後完全符合我的需求,真是太棒了!

記錄實作流程:
設備:
1. Banana-Pi M2+
2. TP-Link Wifi分享器

安裝Git:
>> sudo apt-get install git-core

建立一個Git repository放在  /var/git 目錄內:
>> cd /var
>> sudo mkdir git

>> cd git
>> sudo mkdir regis_project.git

>> cd regis_project.git
>> sudo git --bare init

建立git的group:
>> sudo groupadd git
>> sudo usermod -a -G git your_login # your_login改成你自己的帳號。
>> sudo chgrp -R git /var/git
>> sudo chmod g+rwx -R /var/git

到這裡,已經在server(Banana-Pi)端完成Git的部署。
再來就是把所有的code上傳到這個repository。

我所有的code放在Mac的 ~/Documents/arduino/regis_project
>> cd ~/Documents/arduino/regis_project
>> git init

設定server端的short name,之後輸入比較容易,因為避免被駭,我把ssh的port換掉。
>> git remote add origin ssh://your_login@your.host:port/var/git/regis_project.git

這裡的host name,如果在內網就直接輸入banana-pi的IP,在外網就要輸入外網對應的IP。

把code上傳
git add .
git commit -m "說明remark"
git push origin master

完成所有code上傳。
再來,就是實驗下載code。

在PC上d槽
D:\test\t2\regis_project> git init
D:\test\t2\regis_project> git clone origin
就可以把code全部拉下來在這個目錄。

有用的命令:
git status -v
git log
git log --graph --oneline
git pull
git mergetool



參考先進文章:
簡易git server架設教學 (用Ubuntu linux)
伺服器上的 Git - 在伺服器上部署 Git

2016年12月15日 星期四

[Spider Q] Q版的蜘蛛機器人

製作一系列的Spider Robot,主控板從Arduino ProMini到ESP8266,發現用ESP8266模塊的TinyPlan或MinPlan還不錯用。

為何用TinyPlan與MiniPlan PCB?
因為Arduino的cpu只有8bit,memory只有32kB,要做的複雜的功能與動作限制多,而且無線傳輸需要再加入藍牙或是Wifi模組。ESP8266吸引人的部分,就是32bit CPU,memory高達4MB內建Wifi,這足以滿足大多開發者的需求。

這是TinyPlan與MiniPlan PCB的主要方塊圖,把USB與power與ESP8266整合,提供很好的使用體驗。
Spider Robot Q是2DOF簡化版,一支腳有2個關節,總共8個servo。
TinyPlan提供8個GPIO產生PWM訊號就足夠推動這8個servo,不僅體積縮小結構簡單,且價格便宜不少。

視頻分享:
控制器解說:這是HTML的遙控器,很容易加入其它特殊功能。因為每顆servo都有一些角度誤差,每隻腳與關節都必須calibration來確保四足對地板都是平衡。



實際操作:

兩隻Spider-Q跳舞~~


設計細節分享:
結構:

控制板:

軟件: