2020年3月16日 星期一

是否能外部連線至家中電腦(浮動ip)

※ 引述《dav1a1223 (Lai_can)》之銘言: : 各位前輩好, : 目前家中電腦(OS為Ubuntu,租屋處為浮動ip)有些GPU運算資源, : 有時在外工作會想ssh連回家使用,甚至希望可以直接開 jupyter notebook server 可以 : 直接用網頁存取。 : 但以往的經驗都是在固定ip的情境下設定供對外連線, : 想問目前這種情況有可能且如何能達成同樣也能連回家使用呢?能夠透過當前被分到的ip : 去連線嗎? : 謝謝各位 推文有提到 DDNS 的機制,我這邊講個 Tor 的 onion service (以前叫做 hidden service),可以用在 ISP 連 public ip 都沒給你用的情況。 https://www.torproject.org/docs/hidden-services.html.en 因為你是 Ubuntu,所以先安裝最新版的 Tor,這邊可以照官方文件 https://2019.www.torproject.org/docs/debian 的說明來做。 先建立 /etc/apt/sources.list.d/tor.list (假設是 18.04): deb https://deb.torproject.org/torproject.org bionic main deb-src https://deb.torproject.org/torproject.org bionic main 然後把 Tor 的 GPG key 加進系統:(官方是用 root 跑,我這邊加上 sudo) curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo gpg --import sudo gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add - 接下來更新 apt 資料然後裝 tor: sudo apt update; sudo apt install -y tor deb.torproject.org-keyring 接著照 https://2019.www.torproject.org/docs/tor-onion-service.html.en 這 邊的說明設定。 在 /etc/tor/torrc 裡面這樣放: HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 22 127.0.0.1:22 重啟後就會在 /var/lib/tor/hidden_service/hostname 看到機器名稱,像是: 0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghij.onion 這個版本是新版的名稱比較長,有可能你會看到比較短的 hostname,像是: 0123456789abcdef.onion 接著就可以在公司的機器 (也需要裝 Tor) 上用 torify 連進去,像是這樣: torify ssh 0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghij.onion

2020年3月10日 星期二

伺服馬達

經過查看 Servo 函式庫的文件後,發現預設 0 度的脈衝寬度是 544 microsecond,也就是 0.544 ms,而預設 180 度的脈衝寬度則是 2400 microsecond,也就是 2.4 ms。而在某些文件中可以看到 SG90 的脈衝寬度為 0.5 ms ~ 2.4 ms,所以使用 1 ms ~ 2 ms 當然就會有很大的偏差。此外,少數資料對 0.5 ms ~ 2.4 ms 的解釋是 SG90 可以擁有更大的旋轉角度,但是很顯然實際上並不是這樣。否則根據這句話來看,SG90 已經可以旋轉接近 360 度了。
同樣在頻率為 50Hz 的情況下,脈衝寬度為 0.5 ms 時的工作週期為 2.5%,而 2.4 ms 的工作週期則為 12%,所以針對 SG90 修改公式如下:
x(%)=2.5+122.5180×x=2.5+1936×x()

一樣是一個一元一次函數。
不過在實際撰寫程式時,因為我們希望頻率是可以由程式加以指定,所以需要重新改寫如下:
PWM_FREQ1PWM_FREQ103PWM_FREQms

0.5ms(%)=0.5103PWM_FREQ×100=0.5×PWM_FREQ103×100=0.5×PWM_FREQ10=0.05×PWM_FREQ

2.4ms(%)=2.4103PWM_FREQ×100=2.4×PWM_FREQ103×100=2.4×PWM_FREQ10=0.24×PWM_FREQ

PWM_FREQx(%)=0.05×PWM_FREQ+0.24×PWM_FREQ0.05×PWM_FREQ180×x=0.05×PWM_FREQ+0.19×PWM_FREQ180×x=0.05×PWM_FREQ+0.19×PWM_FREQ×x180()

此公式即為後面 Python 程式所使用之計算方式。