2017年11月8日 星期三

自製小型抽水機 (Water pump)

今天在 Youtube 上看到兩個自製抽水機的教學, 作法與取材都相當有創意. 第一個是使用塑膠罐, 瓶蓋, 注射筒等材料製作沉水式抽水機 :

How to make a water pump DIY. Homemade pump




下面這部影片則是使用 PVC 水管來做 :

How to make Powerful Water Pump 12volt With 775 Motor




不過我上回買一顆小型沉水式抽水機才 300 元, 如果要自製的話光是馬達就不只 300 元了.

2017年11月7日 星期二

Hostinger crontab 的正確執行路徑

昨晚想起我的 Hostinger 主機 Domain name 快到期了, 有來信詢問是否要續約, 因為租虛擬主機有贈送第一年免費, 第二年開始收費, 兩年 8.49 英鎊, 以匯率 39.6 計算, 折合台幣約 336 元 :




我在今年 2 月初因為試著將專案移到樹莓派上, 看看能否順利執行, 結果可以, 但也因此回到樹莓派與 Python 的研究上, 但不久又轉向到 MicroPython on ESP8266 上. 雖然發現 Hostinger 上跑的 crontab 有異常, 但實在無暇檢查到底哪裡出錯. 既然來到 Hostinger 後台, 那就順便檢查看看. 打開 cron job 執行報告, 發現是匯入函式庫失敗 :


PHP Warning:  include(../db.php): failed to open stream: No such file or directory in /home/u865685xxx/public_html/cron/fetch_taifex_options_pcr.php on line 141

檢查匯入函式庫原始碼如下 :

//載入 webbot 函式庫
include_once("../db.php");           //匯入資料庫設定檔 (必須)
include_once("../lib/mysqli.php");   //匯入資料庫模組   (必須)
include_once("../lib/parse.php");    //匯入剖析模組     (必須)
include_once("../lib/http.php");     //匯入http模組     (必須)

這是因為 cron job 程式放在根目錄的 cron 子目錄下, 而資料庫設定檔放在根目錄下, 因此要用 ".." 跳回上一層; 而函式庫放在根目錄的 lib 子目錄下, 所以先跳回上一層再往下走到 lib. 這個寫法在瀏覽器測試 OK, 但在 cron job 執行卻不行. 我在下面兩篇中看到, 應該要用 $_SERVER['DOCUMENT_ROOT'] 取得根目錄路徑才能正確匯入函式庫 :

PHP absolute path to root
PHP Warning: include_once() Failed opening '' for inclusion

所以我將程式碼改成如下 :

$root=$_SERVER['DOCUMENT_ROOT'];        //$root="/home/u865685122/public_html"
include_once($root."/db.php");          //匯入資料庫設定檔 (必須)
include_once($root."/lib/mysqli.php");  //匯入資料庫模組   (必須)
include_once($root."/lib/parse.php");   //匯入剖析模組     (必須)
include_once($root."/lib/http.php");    //匯入http模組     (必須)

但結果還是一樣, 用瀏覽器測試 OK, 但 cron job 還是不行.

後來我用線上客服的 Hecko 先生, 他說應該用明確的根目錄路徑, 可在 "HOSTING/HOME ROOT" 中查得 :




"No, that would be /home/u865685xxx/public_html/db.php, It must start with a "/" to show that it's a complete path"




改為如下寫法後果然已可正常運作 :

/* 載入 webbot 函式庫 */
$root="/home/u865685xxx/public_html";
include_once($root."/db.php");          //匯入資料庫設定檔 (必須)
include_once($root."/lib/mysqli.php");  //匯入資料庫模組   (必須)
include_once($root."/lib/parse.php");   //匯入剖析模組     (必須)
include_once($root."/lib/http.php");    //匯入http模組     (必須)

參考 :

關於 cron jobs 執行頻率的調整問題
cron jobs crontab 排程教學

2017年11月6日 星期一

購買電腦椅彈力帶

小狐狸房間重新裝潢時買床墊同時也跟家具行買了三張彈性繩椅面的電腦椅. 放在高雄的兩張其中一個因為常坐, 彈力繩已經疲乏了, 原本要買新椅, 但在露天找到有販售彈力帶的賣家, 決定買來自行更換, 要不然現在電腦椅一張都 1000 元以上, 還真不便宜 :

正專利椅帶字號M240912電腦椅帶辦公椅帶彈性繩彈力帶 $40

椅面全換需 11 條, 11*40+80(運費)=520 元. 

2017-11-08 :

今日下班時收到貨, 吃過飯後著手安裝, 發現彈力超強, 鎖一邊後要拉到另一邊非常費勁, 就算兩個人一起拉也弄得汗流浹背, 手非常痠. 

Arduino 超音波模組測試 (二) : 使用 NewPing 函式庫

這幾天在翻閱楊佩璐寫的 "跨入Maker物聯網時代 : 誰都可以用Arduino" 一書時, 在 12.2 節看到其超音波測試範例使用 NewPing 函式庫, 記得去年大概這個時候我也做過 Arduino 的超音波測試, 當時是依據聲波原理使用 pulseIn() 等函式土法煉鋼計算偵測的距離, 參考 :

Arduino 超音波模組測試

今天換個口味, 改用 NewPing 函式庫重新測試超音波模組 HC-SR04, 這是作者 Tim Eckel
因為對傳統的作法不滿意而撰寫的改進版, 參考 :

http://playground.arduino.cc/Code/NewPing

NewPing 函式庫下載網址 :

https://bitbucket.org/teckel12/arduino-new-ping/downloads/

解壓縮後整個目錄複製到 Arduino IDE 安裝目錄的 libraries 目錄下, 重啟 IDE 即可.

使用前須先建立 NewPing 物件 :

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

三個傳入參數都是整數 , TRIGGER_PIN 是 HC-SR04 的 Trig 腳與 Arduino  相連的 DIO 腳位; ECHO_PIN 是 Echo 腳與 Arduino  相連的 DIO 腳位; MAX_DISTANCE 則是最遠的偵測距離, 一般是 HC-SR04 是 400 cm, 不過實測並沒有這麼遠, 大約 200 cm 而已.

NewPing 函式庫提供之函數如下 :

 函數 說明
 ping() 送出偵測訊號, 若收到回應傳回回應時間 (毫秒), 否則傳回 0.
 ping_in() 送出偵測訊號, 若收到回應傳回距離 (英吋), 否則傳回 0.
 ping_cm() 送出偵測訊號, 若收到回應傳回距離 (公分), 否則傳回 0.
 ping_median([iterations])  重複送出偵測訊號 (預設 5 次), 傳回回應時間之中數 (微秒).
 convert_in(echoTime) 傳入毫秒數傳回距離 (英吋)
 convert_cm(echoTime) 傳入毫秒數傳回距離 (公分)
 ping_timer(func) 送出偵測訊號, 並呼叫 func 函數以檢查收到回應.
 check_timer() 檢查是否在指定距離內收到回應.
 timer_us(freq, func) 啟動計時器每 freq 微秒呼叫 func 函數
 timer_ms(freq, func) 啟動計時器每 freq 毫秒呼叫 func 函數
 timer_stop() 停止計時器.

常用的函數是 ping_cm(), ping_median(), convert_cm() 等. 注意, 有整數傳回值者型態為 unsigned int.


測試 1 :  測試距離 (公分)

#include <NewPing.h>

#define TRIGGER_PIN  5
#define ECHO_PIN     6
#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
  }

void loop() {
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm());  //傳回距離 (公分)
  Serial.println("cm");
  delay(500);
  }

少了計算程序真的簡單不少, 序列埠監控視窗輸出如下 :

Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 5cm
Ping: 23cm
Ping: 16cm
Ping: 13cm
Ping: 8cm
Ping: 12cm
Ping: 101cm
Ping: 113cm
Ping: 55cm

可知當偵測距離變化時, 即時的傳回距離變化大, 比較好的方法是用 ping_median() 取得多次偵測的中數 (微秒), 再呼叫 convert_cm() 轉成公分, 如下列測試 2 :


測試 2 :  測試距離 (公分, 傳回多次偵測回應時間之中數) 

#include <NewPing.h>

#define TRIGGER_PIN  5
#define ECHO_PIN     6
#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
  }

void loop() {
  Serial.print("Ping: ");
  unsigned int us=sonar.ping_median();     //傳回 5 次偵測的回應時間中數 (微秒)
  Serial.print(sonar.convert_cm(us));         //將回應時間 (微秒) 轉成距離 (公分)
  Serial.println("cm");
  delay(500);
  }

2017年11月3日 星期五

斜坡式幫浦 (Ram pump)

我在研究水車時發現了一個好玩的機器 - 斜坡式幫浦 (Ram pump), 它是利用水錘效應 (高低水位差的水流衝力) 來壓縮氣瓶中的空氣, 然後透過巧妙的逆止閥設計讓氣瓶在釋放氣壓時把水打到比較高的水位, 故又稱為水錘馬達, 參考 :

水錘馬達Hydraulic Ram Pump

其機械原理參見下列影片 :

how ram pumps work?




下面這部影片則詳細介紹如何自製斜坡式幫浦, 它使用寶特瓶當空壓機 :

How to Make Free Energy Water Pump - Ram Pump




所需元件在五金行應該就買得到, 有時間我也想來製作一個.

下面這部影片的作者使用較長的 PVC 管當空壓機, 可能氣壓較高可打到一樓以上高度 :

Homemade Ram Pump




底下這部使用寶特瓶與塑膠罐自製止逆閥等零件, 可說是全自製的水錘馬達 :

How to make the hydraulic ram. DIY hydraulic ram pump




下面這部影片作者則是用實驗比較兩種斜坡式幫浦的揚水效率, 結果差異不大 :

What Ram Pump Design is Better




不過斜坡式幫浦的缺點就是會產生週期性的噪音, 水車雖然也會有轉動打水聲, 但不會像水錘聲那樣大.

其他範例參考 : 

My New Ram Pump - AMAZING!
Williamson Rampumps Tihoi NZ
10 Percent Perpetual Motion Ram Pump
DIY RAM PUMP OBEYS THE LAWS OF PHYSICS

逆止閥商家 :

露天阿球=全銅製逆止閥 熱水器專用逆止閥 防回流 防水錘聲 防震 銅製逆止凡而 馬達逆止 防回流開關 $120


四葉草的好想你

昨天在 Yahoo 看到歌手四葉草被騷擾的新聞, 想起這個甜姐兒之前唱的那首洗腦歌 "好想你", 就去 Youtube 找到她的 MV 來重聽一遍, 還是覺得很好聽. 這首歌大約是在 2016 年 3 月左右透過菁菁知道的, 因為當她迷哪一首歌時, 就會天天疲勞轟炸.

好想你 I MiSS U - Joyce Chu 四葉草




四葉草本名朱主愛, 是馬來西亞華僑, 有大馬潤娥稱號. 參考 :

https://zh.wikipedia.org/wiki/朱主爱

螺旋式水車幫浦

小舅最近在大馬路邊的小菜園種玉米, 茄子, 芥菜等蔬菜, 雖然水圳就在旁邊, 但因水圳地勢低 (不然要怎麼走水), 仍要用水桶費勁地舀水灌溉, 所以就想要製作一個小水車來代勞. 其實我對省力機械一直都很有興趣, 特別是對永動機或類永動機更是著迷, 雖然違反熱力學第二定律, 但免費的自動機就是很迷人.

我在 Youtube 上找到幾個有趣的水車設計款式, 例如下面這個位於德國的全木造水車, 構造古樸簡單, 利用綁在輪圈上的木桶汲水倒在集水槽中引流, 水頭就是集水槽的高度 :

Wooden Water Wheel in Europe




另外一個讓我佩服的作品是下面這個全竹製水車, 擋水板用的是切半的較大竹筒, 汲水桶則使用中型竹管, 連軸承也都是使用竹管做成, 實在太厲害了 :

# 竹製水車




下面這部影片則是介紹如何製作木作的水車 :

Make Your Own Water Wheel
Make Your Own Water Wheel part 2
Make Your Own Water Wheel part 3





Build A Wood Water Wheel - Making An Old Western Mining Town




最讓我驚奇的是下面這種螺旋式水車 (Spiral water pump), 使用捲繞的塑膠管將端口汲水管舀入的水引至軸心導管接口, 由於軸在轉動, 而地上的水管是靜止的, 因此這種水車在接口的地方會有摩擦, 且或多或少會漏一些水 :

Water wheel pump




下面這個是安裝於巴西的螺旋式水車, 採用兩側汲水方式以提供較大且連續之出水 :

Spiral Pump - Water Pump Wheel




於 4:17 處擷取的接口特寫 :




更多的螺旋式水車範例參考 :

水車揚水改善之點滴 (用 PVC 管做汲水筒)
https://www.youtube.com/watch?v=YWAfnqH1w2g
https://www.youtube.com/watch?v=NStnCKHPe2s
https://www.youtube.com/watch?v=_0nZKAJ-LIk
https://www.youtube.com/watch?v=ZuFxqolv-j0
https://www.youtube.com/watch?v=laI-F9zNzzM
https://www.youtube.com/watch?v=LbklIccv2CI
Waterwheel Microhydro P4, Waterwheel Construction
https://www.youtube.com/watch?v=xRm-FycK6lg
Mechanical Spiral water pump (Preliminary testing at sungai jin, sungai lembing)
Spiral River Water Pump Test (ENGR 223 Fall 2016)
https://www.youtube.com/watch?time_continue=126&v=bNltaZ4RE2o

2017-11-08 補充 :

製作水車時要用到滾珠軸承可參考露天賣家 :

【不囉嗦24H送出】
(培林達人/ EtenShop) 鋅合金小型軸承座KFL系列 $90
鋅合金立式帶座軸承KP08 2個 $75
★Hobby模改舖★ 鋁管 鋁圓管 外徑:8mm /內徑:約5mm /長度:240mm/1支 $38

2017年11月2日 星期四

DIY 太陽能木作工作室

今天在 Youtube 看到下面這個 DIY 組裝太陽能木作工作室的影片, 看起來好像非常簡單. 屋頂上裝了四塊太陽能板, 合計可產生 1KW 電能, 用來驅動鋸床, 鑽床等木作所需工具 :

Building a Solar Powered Workshop




詳細製作步驟參考其網站 :

http://www.homemade-modern.com/ep115-building-a-solar-powered-workshop/

這是位於美國波士頓的設計公司 HomeMade Modern 所製作的一系列 DIY 教學影片中最新的一支, 除了製作影片, 網站介紹他們作品外, 還即將出書.

2017年11月1日 星期三

殺魚記

下班前一樓同事打電話上來, 說九樓同事的哥哥在台南養吳郭魚, 今日載魚來高雄交貨, 有一袋是表面有瑕疵被打下來的, 問我要不要. 但現在為了小狐狸們補習根本沒時間煮, 都是外食, 所以就婉拒了. 正要關電腦下班時竟親自上來詢問, 只好下去拿了剩下的三條.

晚上給二哥複習完英文後開始來殺魚, 其實這些魚已經死掉了, 只是要去鱗去內臟與鰓而已. 處理魚類一定要戴上塑膠手套, 否則很容易被鰭刺傷. 去鱗很簡單, 就是用湯匙由尾部往頭部逆鱗方向刮, 肚子部分鱗較小, 且有腹鰭阻擋較不好刮.

然後用廚房剪刀從鰓的開口接近腹部處往腹部剪開, 一直到腹鰭為止, 剖開腹腔後將內臟取出, 接著扳開兩側的鰓, 用食指與拇指將裡面的鰓拉出來, 用水沖乾淨即可. 平常去市場買魚看老闆處理起來三兩下就 OK 了, 但自己做就覺得很麻煩. 處理完畢後用肥皂香皂雙手各洗一遍都還聞得出魚腥味. 吃葷這麼麻煩, 還不如吃素簡單, 又不會聞到腥羶之味. 可以的話我寧願菜根香.

2017 年第 43 周記事

忽忽又來到週三了, 挖咧上週的周記還沒寫.

這一周主要在處理幾件財務相關問題, 首先是把被鎖住的菁菁郵局提款卡申請補發並更換印鑑, 工本費 50 元, 但麻煩的是要戶口名簿正本影本, 父母雙證件, 原留印鑑 (遺失) 與存簿才能辦理, 我今年初帶著證件去處理, 卻卡在沒帶到原留印鑑, 郵局叫我回去找, 但一直找不到, 相關文件就跟小狐狸們過年的紅包一樣, 一直放在背包裡揹來揹去過了大半年. 上週被一件事情刺激到, 決心改變自己, 認真面對並處理問題, 不要一直積累舊問題, 應該隨時盤點盡可能放空.

其次是, 自從暑假將姐姐與二哥手機門號從預付卡 (中華如意卡) 改成月付型 (小知足 1G 上網專案) 後, 月底若還沒去繳費的話他們就會接到催繳電話, 實在很困擾. 一直想去台銀辦扣繳, 但奇怪的是每次繳費回來後, 明明都有把繳費單收好要帶去台銀, 但要去時偏偏就找不到繳費單, 實在氣人, 只好拖到下個月. 這幾天終於把這件微不足道的小事給處理好了, 但要克服自己的怠惰可是要費很大勁同自己鬥爭.

第三件是自從帶姐姐與水某去新光銀與元富開戶後, 後續網銀帳號與證券戶開啟與密碼更新作業卻一直擱在那兒沒處理, 若超過一個月密碼失效就得再跑一趟申請新密碼. 所幸終於克服 "不想, 不願, 好麻煩" 等劣根性, 搞定了. 只剩憑證還沒下載, 以及姐姐的 e 存摺集保戶須等她寒假回來帶她去補辦.

第四件是, 16, 17 元買進持有兩年的第一金, 因為最近看到它是獵雷艦聯貸主辦行, 擔心後續消息面影響股價, 乾脆趁還在高價全數出清僅留所配之零股, 賣出價為 19.3 元. 庫存股中賺錢的中碳, 中聯資等抱緊外. 友達, 圓剛等套牢股近期也要研究處理, 當鴕鳥不是辦法, 錯誤終究須面對.

第五件是, 大樓的管理費從 10 月起我改成預繳, 以前都跟大多數人一樣月底才繳, 但一忙忘記就會被列入欠繳名單, 雖然月初看到名單馬上就去繳清劃掉, 但總是不好看. 大樓預繳管理費的只有 4, 5 戶, 大部分是店面的老闆. 我決定向這幾位老闆看齊, 也加入他們預繳的行列. 雖然這樣似乎有點阿 Q, 但想法若是一成不變的話, 肯定是當不了老闆的.

過去這個星期心情起伏劇烈, 面臨前所未有的挑戰. 人不可能總是一帆風順, 我們的心也是會經歷不斷的淬煉, 牡蠣如果沒有分泌汁液包容侵入的沙礫, 怎能孕育出美麗的珍珠?