2014/04/29

遠端遙控 Arduino 倒一杯水 (SpaceBrew, Firmata, SG90, Java Script, Processing, Internet of Things)

按鈕, 倒水, 再按鈕, 杯端正
萊恩大兵找資料的時候, 踫巧看到 SpaceBrew, 覺得它很適合用做物聯網 (Internet of Things) 的中介架構, 很有趣也很簡單用的樣子. 就動手整合了一個遠端遙控倒水的應用, 來體驗體驗 SpaceBrew 的威力.

在 SpaceBrew 的架構裡, 聯網的物件分別扮演兩種角色, 一是 publisher (發佈端), 負責發送資料或數據, 型態可以是 boolean, 也可以是 range (0~1023之間的數值) 或字串. 另一是 subscriber (訂閱端), 負責接收 Publisher 傳來的資料, 解譯, 再做出適當的回應. 聯網的物件可以同時扮演這兩種角色, 不限定只能一種.

來動手吧. 

Subscriber (arduino 端)

(1) 將 Firmata firmware 預先燒錄在 Arduino 主板上, 方便稍後使用 Processing 來操控. 
(2) 將伺服馬達 SG90 與杯架一同固定在牆壁上.
用 LASY 積木做個臨時杯架.

(3) 連結 SG90 與 Arduino
5V, GND 與 #10.

(4) Processing 程式 (程式下載)
  • 登錄 SpaceBrew cloud 為一個 subscriber (boolean).
  • onBooleanMessage(), 聽到 publisher 傳來數值後, 根據數值的真否來做出倒水杯或端正水杯的動作. 



Publisher (java script 端)

(1) Java Script 程式 (程式下載)
  • 登錄 SpaceBrew cloud 為一個 publisher (boolean).
  • onButtonPress(), 按下按鈕後, 程式會依據內部記錄的杯子狀態, 發送真否值給 subscriber 端.


(2) 上傳 java script 程式到 google drive 後, 再分享頁面出來. 這樣就可以從 iPad 端開啟網頁做操控了.
僅有一個按鈕的網頁.

SpaceBrew cloud

(1) Subscriber 與 publisher 登錄上 SpaceBrew cloud 之後, 會在 admin 頁面上新增兩個端點. 得手動去連結這兩個端點後, 才會把大家串在一起.
把 publisher 與 subscriber 兩端連起來. 

Okay, 全部就緒, 來倒水吧.

心得, 經驗與問題

  • 在 java script 程式裡面, 傳送 boolean 值給 spacebrew client 時, 仍需將它轉換為字串型態來傳送. 例如: 
sb.send("pourwater", "boolean", "false"); 
一開始萊恩大兵直接傳入 true 或 false 值, 偏偏 java script 也沒說這不對. 唉.. 花了好一會兒萊恩大兵才找出問題.
  • Servo SG90 的轉動範圍只在 60 ~ 180 度之間. (明明規格資料說它可以在 0 ~ 180 度之間轉動的..) 萊恩大兵試了兩顆 servo SG90, 結果都一樣. 還不知道是怎麼一回事.



參考資料


[萊恩大兵的其它文章]

自製大四軸

自製大四軸, 實作分享@華山文創園區
自製大四軸, (1) 零組件篇, 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
自製大四軸, (2) 零組件篇, 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
自製大四軸, (3) 零組件篇, 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (4) 零組件篇, 馬達與電變調整 (Drone, Quadcopter, Maker, Electric Speed Control, Motor)
自製大四軸, (5) 組裝篇, 四軸飛行器成形 (Drone, Quadcopter, MultiWii, Arduino, Maker, Electric Speed Control, Motor)
自製大四軸, (6) 調整篇, 飛行前兩三事 (Drone, Quadcopter, Maker, Futaba, Arduino, MultiWii)
自製大四軸, (7) 充電篇, iMax B6 充電器操作記要 (Charger, Battery)
自製大四軸, (8) 問題篇, 機架損壞維修 (Drone, Quadcopter, Laser Cut)
自製大四軸, (9) 改良篇, 方便拆卸的木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (10) 外飛篇, 新手的青蛙跳與遛狗 (Drone, Quadcopter, Maker, MultiWii)

自動報球速的棒球


CC2540 Bluetooth Low Energy
筆記, CC2540 Bluetooth Low Energy, (1) 開發環境 架設 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)

藍色小鋪一起來做

藍色小鋪一起來做, (1) 用 beacon 控制開關的枱燈
藍色小鋪一起來做, (2) 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
藍色小鋪一起來做, (3) 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
藍色小鋪一起來做, (4) 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
藍色小鋪一起來做, (5) iBeacon scanner 專案示範與解說 (Bluetooth, CC2540, iBeacon)
藍色小鋪一起來做, (6) 完成, 用 iBeacon 控制開關的枱燈 (Bluetooth, CC2540, iBeacon)
藍色小鋪, 初嚐樹莓派 (Raspberry Pi)
藍色小鋪, iBeacon 應用, 自動記錄到訪時間 (iBeacon, Geohopper, Zapier)

小惡魔 無線溫度感測器

108 大眼仔
Plot Clock

體驗, 原住民互動故事書@宜蘭大同鄉泰雅生活館
體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)


實作, 電容感應音樂樹

沒有留言:

張貼留言