古人智慧

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

搜尋此網誌

Translation

2017年4月2日 星期日

幫悠遊卡穿衣服

悠遊卡(EasyCard)是一種非接觸式(RFID)電子票證系統智慧卡。
在台北是必備的付款工具,不論搭捷運(MRT)、公交車、停車場、便利店購物等都可使用。
女主人也有一個,而且非常有特色的~中華航空的造型~

雖然造型很好看,但是用久後吊鉤斷裂,在機尾部打個孔再用,結果沒多久還是斷裂。
這次就用另一個方式解決,為了不破壞造型,是的,就是用3D打印一個外框來。

設計外框最主要的重點是如何描繪出正確的尺寸,尤其是這種複雜曲線的物件。
我提供做法如下:
1. 先把原物件放置在可量測的基礎背景當參考線,拍攝下來匯入到Sketchup
2. 在SketchUp畫出w與h正確尺寸的rectangle,
3. 在匯入圖設定參考線套上SketchUp正確尺寸框後,兩個object融合。這樣就可以建立正確的基準圖。
4. 用線段工具依邊緣仔細描繪
5. 把邊框去除,就是最後我們要的物件。
6. 用offset工具拉出邊緣厚度,然後拉高z軸深度,就大功告成


匯出stl檔,準備用3D打印。
《cura 2.4.0》
《on platform》

《把brim去除》

《合體試試,尺寸吻合》

《背面有露出編號》

《準備鑰匙扣材料》

《用熱熔槍把悠遊卡黏上》

《完成》

這次主要的部分是如何描繪出複雜曲線的真實的尺寸,這方法還真不錯,分享同好!


2017年3月5日 星期日

[BananaPi] OpenVPN server & Client setup

最近在對岸用PPTP的VPN時常連不上我的BananaPi,但是用SSH卻非常順,我合理懷疑可能PPTP的port 1723被擋。

Google一連串先進同好的資料,一致認為OpenVPN應該是最佳的solution。OpenVPN主要是可以自己設定port,假設用https的port443應該非常適合,因為https是常用的protocol,一般不會去block。

把細節記錄下來避免忘記,而且可以分享同好。

設備與環境:
1. BananaPi with Ubuntu 14.04
2. Wifi AP
3. 用 sudo -i 進入root

Step1: Install OpenVPN
首先進入root,如果用ssh進入ubuntu,用sudo -i.

apt-get update
apt-get upgrade

apt-get install openvpn easy-rsa

2. config OpenVPN 
cd /etc/openvpn
gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .

產生server.conf
Modify the server.conf

nano server.conf

port 1194 => port 443

dh dh1024.pem => dh dh2048.pem

在ubuntu 16.04不用打開這一行
;push "redirect-gateway def1 bypass-dhcp" => 去掉;

;push "dhcp-option DNS 208.67.222.222" => 去掉;
;push "dhcp-option DNS 208.67.220.220" => 去掉;
增加一行,google的DNS server
push "dhcp-option DNS 8.8.8.8"

;user nobody  => 去掉;
;group nogroup  => 去掉; 

完畢,記得按ctrl-x存檔

3. config IP forward 
修改 /etc/sysctl.conf
nano /etc/sysctl.conf

#net.ipv4.ip_forward=1 => 去掉#

修改/etc/rc.local
nano /etc/rc.local
增加一行
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

4. generate RSA key
copy easy-rsa 到openvpn,這是避免升級時把key蓋掉
cp -r /usr/share/easy-rsa/ /etc/openvpn
mkdir /etc/openvpn/easy-rsa/keys

修改RSA key屬性
nano /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="TW"
export KEY_PROVINCE="TW"
export KEY_CITY="TPE"
export KEY_ORG="My Company Name"
export KEY_EMAIL="aaaa@bbbb.com"
export KEY_OU="MYOrganizationalUnit"
export KEY_NAME="server"

完畢,記得按ctrl-x存檔

產生Diffie-Hellman parameters,這花掉大約10分鐘。。。。
openssl dhparam -out /etc/openvpn/dh2048.pem 2048

5. 製作server & client key
cd /etc/openvpn/easy-rsa

source ./vars
./clean-all
./build-ca

產生server key,細節參考 How To Set Up an OpenVPN Server on Ubuntu 14.04
./build-key-server server

產生client key,最好一次多做幾個備用
給phone1
./build-key phone1
給phone2
./build-key phone2
給pad1
./build-key pad1
給pad2
./build-key pad2
給PC1
./build-key pc1

這些步驟會在keys目錄下產生.crt, .key檔案。

6.修改 client.ovpn檔
先複製template
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

cd /etc/openvpn/easy-rsa/keys

製作phone1的ovpn
cp client.ovpn phone1.ovpn

nano phone1.ovpn

remote my-server-1 1194 => remote xxxx.xxxx.xxxx(regis.xxx.xxx or ip) 443
;user nobody => 去掉;
;group nogroup => 去掉;

cert client.crt => cert phone1.crt
key client.key => key phone1.key

其他phone2,pad1/2,PC等等,幾個都是重複這個步驟。

7. 啟動OpenVPN server
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

service openvpn start
or
service openvpn restart

service openvpn status

《重要!!》記得在Wifi AP把port 443打開,並接到 banana pi 的IP與port 443

8. 設定 Android phone
將這些client 的.crt .key複製到regis的HOME目錄,並change own and group
cp -r /etc/openvpn/easy-rsa/keys/{phone1.*,ca.crt} /home/regis/vpn/phone1/.
cp -r /etc/openvpn/easy-rsa/keys/{phone2.*,ca.crt} /home/regis/vpn/phone2/.
cp -r /etc/openvpn/easy-rsa/keys/{pad1.*,ca.crt} /home/regis/vpn/pad1/.
....

cd /home/regis/vpn/phone1
chown regis *
chgrp regis *
(這個步驟是為了可以用SCP複製到Macbook)
其他都一樣

複製到Macbook
scp -P xxxx 192.168.x.xxx:/home/regis/vpn/phone1/* ./vpn_keys/phone1/.
主要4個檔案
ca.crt
phone1.crt
phone1.key
phone1.ovpn

scp -P xxxx 192.168.x.xxx:/home/regis/vpn/phone2/* ./vpn_keys/phone2/.

然後,複製到手機與PC

9. 設定PC

《心得》
我發現連接速度很快,其他等下次出差再看看效果。


參考文章:

2017年2月27日 星期一

自平衡車 - ESP8266 + A4988 + NEMA39 (7/xx)

上篇文章說明A4988控制電路板的製作,接下來當然就是把它裝上小車了。
還有,前後保護殼做修改,鎖上4顆螺絲,更結實!
而且在USB的位置開個孔,這樣upload code就不用拆殼,方便!

《V2控制模組看來比V1小,接線也比較牢靠與美觀》

《準備換心臟手術》

《整個心臟取出來》

《分解,與V2控制板結合》

《v2控制模組塞回去了》

《正好與機殼大小,沒有突出》

《前後都一樣,剛剛好》

《整齊》

為了提升結構強度,繼續升級:
《結構分解圖》

《前後保護殼設計為4顆螺絲固定》

《開USB孔》

《USB位置》

《屁股插著USB,像一條尾巴》

《很結實》

《裝上輪子》

《側視圖》

《俯視圖》

視頻分享:

自平衡車 - ESP8266 + A4988 + NEMA39 (6/xx)

追求提升作品的質量,這幾天把A4988控制板做修改。
老實說,我也不知在龜毛什麼。。。只是想把作品做的再好一點~~

V2 change list:
1. 因為servo需要大電流,換高電流的DC-DC power module
2. 節省空間,拿掉DC jack
3. 換防脫落的2.54接頭,不僅可以節省板子高度,也防止一般杜邦線容易脫落問題
4. 修改12v與vcc的trace,提供馬達更好效能。在v1版本因為trace太細,造成A4988的電流提高發燙,馬達也發燙。



當Eagle PCB打開來畫電路與Layout時,被提醒要升級到v8.0.2。升級之後,發現竟然是Autodesk??!!原來Eagle PCB被AutoDesk併購了,還好還有免費版~v8.0.2版的畫面有比較好看,有一些細節改善的還不錯。

回到主題,layout改好后,就準備用我的Cyclone PCB雕刻機,這雕刻機已經被調試的很好,刻出的電路真不錯~
《先刻線路,再鑽孔,最後裁邊》

《把表面刷乾淨》

《準備材料,焊接》

《焊接完成,正面》

《焊接完成,增加注釋避免裝錯》

《焊接完成,反面》

《測試電路,一切正常,開心~~》

《組裝成模組》

《反面》

《正面》

《側面》

《接上馬達做最終測試》

《側面圖》

測試視頻:

2017年2月25日 星期六

自平衡車 - ESP8266 + A4988 + NEMA39 (5/xx)

扎扎實實玩了幾天,結果輪子很容易掉落。
分析的結果是因為輪子是PLA的材質是軟的,小車在奔跑時,很容易被馬達連杆擠壓而把輪子軸心孔位撐開變形,輪子也會隨著變形。

知道問題後,腦海出現幾個方案,最後選擇這個方法:
1. 運用卡榫的原理,將輪子的軸心與輪子分離,這好處是未來輪子鬆脫,可以只換軸心卡榫就可以,不需要整個輪子重新印,浪費材料與時間。
2. 將輪子表面增加輻射的強化結構,讓輪子表面得以支撐而不易變形。

如圖示:
印出來的效果:
《新輪子(左方):看起來結實一些》

《可看出馬達的軸心與卡榫緊緊結合》


2017年2月22日 星期三

自平衡車 - ESP8266 + A4988 + NEMA39 (4/xx)

可以想象車子如果沒有輪胎,車子跑起來應該是個災難吧~~

本來很懶,不想幫小車裝上O型圈,但這幾個月在家裡地板上跑來跑去測試時,會發出猶如鐵球在樓板上滾來滾去的的聲響,令人很不舒服,尤其是在半夜做實驗,深怕樓下鄰居投訴~~~~

是的,這次就去淘了幾條橡皮O型圈,這效果只能說 ~~~ 真是太重要了,小車在行進間完全沒聲音!!! 讃!!!

O型圈:
《下定決心買O型圈》

《外徑90mm,線徑2.4mm》

《套上去有點鬆,尺寸沒掌握好,未來會以加大輪框直徑1mm來應對》


橡皮輪框很重要,如果沒有這O型圈,這平衡車跑的時候聲音很大而且會滑動的現象。
套上這O型圈的效果:

視頻分享: