用Puck.js讓園藝自動化

十月 26, 2017
Facebook
Twitter
圖片

圖片提供:iStock.com/Paul Biryukov

我很喜歡番茄,尤其是鮮採番茄。我們很幸運有朝南的菜圃,只要有充足的灌溉就能長出好番茄,但過去經驗顯示我沒辦法按時幫它們澆水。在用魚池泵浦和計時器的幾次失敗嘗試後,我依照常理去買了一臺真正的澆水器,但它不是電池沒電就是打不開、關不掉,最後自己水滿出來。最後,身為Maker,我決定自己動手解決,用微控制器做了一臺澆水器,而且還運作順暢。它每年都有演進,到了現在它不但簡單、可靠、便宜,還有市面上昂貴的澆水器找不到的功能,例如自動施肥!

組裝

圖片

圖A1

圖片

圖A2 攝影:Gordon Williams

它的管路很簡單,只要在盒子上鑽幾個孔(圖A1、A2),接著裝入磁線圈(圖B),再接上水管轉接頭(圖C)和滴灌套件(圖D,此處會和水源連接)。另外,蠕動泵浦(peristaltic pump,圖E )會定時把肥料加入水流中;其中一端透過水管接到液體番茄肥料的容器,另一端用T型接頭接到通往番茄的澆水管路。市面上賣的滴灌套件通常會附所有需要的管路和T型接頭。
圖片

圖B

圖片

圖D

圖片

圖C

圖片

圖E

為了避免使用電路板,我把FET和二極體(圖F)直接焊接到磁線圈和泵浦,接著只要把12V電源和3條線(接地線和兩條接到D1和D2的控制訊號線)接到Puck.js(圖G),參考圖H的電路圖。Puck.js放在外盒上,鑽孔來跑線路。因為防水,所以把它放在外面沒問題,這樣我在附近的時候就可以輕鬆按按鈕啟動澆水(圖I)。
圖片

圖F

圖片

圖G

圖片

圖H

圖片

圖I

軟體

好玩的地方來了!Puck.js執行的是JavaScript,可以透過Web Bluetooth完全無線編輯程式和除錯。

依照Puck.js網站的說明來更新Puck.js的韌體,並開啟Espruino IDE,通常只要有Chrome瀏覽器就沒問題。

打開Web IDE之後,按一下左上方的「連線」圖示,並選擇裝置。IDE的左邊會看到指令提示,用來和微控制器本身即時互動。在右手邊可以用「正常」的方式寫程式碼,一次把它上傳。

進入右上角的「Settings」(設定),接著選取「Communications」(通訊),確認「Set Current Time」(設定目前時間)已勾選(這會在每次上傳程式碼時設定正確時間)。

接著上傳簡單的澆水器程式碼:

E.setTimeZone(-8 /* PST */);
var hadWater = false;
 
function waterPlants(water, feed) {
  digitalPulse(D1, 1, water*1000);
  if (feed)
   digitalPulse(D2, 1, feed*1000);
}
 
// 每10分鐘檢查澆水
function onTick() {
  var now = new Date();
  var h = now.getHours();
  var day = now.getDay();
  if (h==8 || h==19) {
   // 在星期一、三、五早上澆水
    var doFeed = (h==8) &&
     (day==1 || day==3 || day==5);
    if (!hadWater)
     waterPlants(300, doFeed?30:0);
    hadWater = true;
  } else {
    hadWater = false;
  }
}
setInterval(onTick, 10*60000);
 
// 按下按鈕時澆水30秒
setWatch(function() {
waterPlants(30,0);
}, BTN, {edge:”rising”,
  debounce:50,repeat:true});
這樣它就會在設定的時間每天澆水兩次,並且每週施肥三次(星期一、三、五)。

用IDE的左邊可以直接和澆水器互動。D1.set()會打開水的磁線圈,而D1.reset()會把它關閉。輸入waterPlants(10,5)則是命令澆水10秒、施肥5秒。

這樣就完成了。澆水器可以持續運作,直到一年左右後電池才會沒電。如果希望它在重設後仍繼續運作,只要輸入save(),就可以全部儲存到快閃記憶體。

依照預設,任何人都可以和Puck.js連線並互動。如果對這方面有疑慮,espruino.com/Puck.js+Security可以給你一些靈感。

圖片

圖J

歡迎到我的Github下載這份程式碼,還有稍微複雜一些、能記錄溫度和光線強度、甚至提供手機儀表板的版本(圖J)。

如果你有做像這樣的澆水器或類似的專題,還是有任何問題,歡迎在Espruino論壇和我聯繫。
時間:3至8小時 難度:中等 成本:65美元
材料

  • 滴灌套件 包括管線、水管轉接頭、T型接頭及滴灌器(drip feeder)。使用鑽了孔的軟管效果亦佳。
  • 壓入式轉接頭(push-fit adaptor)
  • Puck.js微控制器
  • 3V鈕扣電池 Puck.js附有一個
  • FET(電晶體),P36NF06L (2) 用來開關磁線圈和泵浦
  • 二極體,1N4001 (2) 線圈關閉時保護FET不受反電動勢(back EMF)影響
  • 12V鉛酸電池
  • 防風雨外盒 我用的是Schneider接線盒。有各種尺寸可選,我用的款式在底部有備用空間。
工具

  • 電鑽
  • 有網路連線的電腦
  • 烙鐵與焊錫
Gordon WilliamsGordon是一位把熱情變成事業的軟硬體玩家。
(譯:屠建明)
[原文]
Social media & sharing icons powered by UltimatelySocial