古人智慧

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

搜尋此網誌

Translation

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型圈的效果:

視頻分享:


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

這陣子除了研究軟件的gyro陀螺儀演算法之外,最重要的部分就是OSC(Open Sound Control)的控制協議了。

為啥要研究OSC? 因為我手上有套source code就是用OSC在手機上APP來遙控,原作者認為OSC是個通用而且容易擴充的protocol。經過研究source code後,也覺得還真的不錯用,而且OSC搭配UDP(User Datagram Protocol)可以讓遙控器與robot傳輸更直接,速度更快。
日後有機會,再把這個source code做詳細解說。

《待續》

2017年2月18日 星期六

PC電腦晶片鑰匙扣

過農曆年休假幾天把書房與工具做大整理,剛好翻出好幾顆PC的繪圖晶片。
這個晶片已經是古董級了,丟掉可惜。
就上網買個金屬扣來改裝吧。

首先,先用2mm鑽頭在晶片的角落距離邊緣2mm左右打洞。
鑽洞過程注意事項:
0. 戴護目鏡,最好是用鑽台架可以穩穩的垂直與上下。
1. 電鑽轉速要快,鑽頭要垂直晶片,避免歪斜造成危險。
2. 鑽頭接近晶片表面時,要慢慢進入,觀察表面是否有裂痕。
3. 中間是夾著矽晶片,當鑽到會遇到比較大的阻力,慢慢使力。

鑽台架:


然後用內徑8mm線徑0.8mm的小開口環來串接鑰匙扣環。
晶片原先長這個樣子,先用斜口鉗把整排腳上下搖晃就可以把整排拉下,不要用剪的,不然會參差不齊。


《小開口環可以選三角環,或是O型環》

《穿過晶片的鑽孔與大環串接》

《成品圖》