小朋友偷懶不刷牙,運用 IoT 不用盯著也能做到監督

這個DIY專案向您展示如何將一個從商店裡買來的牙刷架轉變成一個家用物連網的產品。英特爾 Edison 開發板提供了 一個小巧且有計算能力的方式來鼓勵健康習慣—只需要使用您既有牙刷與牙膏。
評論
評論

關於作者 Nathan Carver 經過曲折的道路來到物連網的領域。以前曾經在 Ringling Brothers 扮演小丑,他現在是一家名為 Crisp Media 的移動廣告公司的工程副總。之前的工作包含管理一個專業的服務部門, 創辦一間軟體公司,在 Singer and Saw 表演 ,並且在 Hudson 河航行。他住在紐約且其他的專案可 在此取得

本文受 Intel 官方授權翻譯,本文譯自 《創建 T.E.E.T.H. – 將英特爾® Edison 物聯網技術帶進您家中》

 

Nathan C. 於 2015,1 月 15 提交 Share

這個 DIY 專案向您展示如何將一個從商店裡買來的牙刷架轉變成一個家用物連網的產品。英特爾 Edison 開發板提供了 一個小巧且有計算能力的方式來鼓勵健康習慣—只需要使用您既有牙刷與牙膏。 為英特爾 Edison 開發板開發程式可能會用到您已經掌握的程式技能。因為這個開發板內建無線功能並且執行 node.js 來連接硬體,您可以使用 JavaScript*來編寫程式。這意謂著大多數的網頁開發人員能夠以英特爾 Edison 開發板快速的開始編寫物聯網程式。 下列步驟概述所需的開關、螢幕和感測器並將任何一個牙刷支架轉變成為 T.E.E.T.H 鼓勵每人健康的定時器。原始碼的部分展示了一個簡單的 node.js 專案如何控制那些功能並聯結到網際網路來做雲端分析與郵件傳送。圖一為整個專案的顯示圖。

使用 T.E.E.T.H 智慧型牙刷計時器

首先將您的牙刷從支架中取出。計時器便啟動並等待您開始刷牙。由美國牙科協會*所推薦的兩分鐘刷牙時間,計時開始時 LED 螢幕中會顯示鼓勵的文字。螢幕中的顏色會逐漸淡去直到您刷牙結束。別擔心如果您閉著眼睛刷牙,會有聲音播放直到結束來提醒您。當您放回牙刷 (或是您離開房間並關燈) 之後計時器便會停止。在這之後,支架會將您的時間資料上傳雲端。如果您有達到您的目標,他還會發送一個祝賀電子郵件。最後您能登入雲端查看每隻在支架裡的牙刷的進度。您可以監控這些物聯網資料來鼓勵家中成員養成健康習慣。

 

購買與計畫

開發此專案所需時間預估: 2-3 小時

費用: $75 -- $100 (約台幣 2250-3000 元左右)

圖2顯示這個專案所用到的各個部分

fig-02-parts-used-for-t.e.e.t.h.-project
圖 2 – T.E.E.T.H 專案所用到的各個部分

 

材料

  • 牙刷支架
  • 英特爾 Edison 計算模組
  • 英特爾 Edison 擴充板
  • 控制桿開關(每隻牙刷一個)
  • 塑膠平台(每隻牙刷一個)
  • 10K 電阻 (通孔,每隻牙刷一個)
  • Grove – LCD RGB 背光
  • 光阻器光線感測器
  • 壓電陶瓷蜂鳴器
  • USB接口的通電電池
  • 矽黏著劑與密封劑
  • 專案代碼
  • 連接線

工具

  • Intel® XDK IoT Edition 和USB線的電腦
  • 烙鐵與焊錫
  • 根據您選擇的支架適合的切割工具

步驟

1. 準備支架

我選擇一個竹製的夾刷支架,所以我能夠輕易的鑽出所需的孔並裝上所需要的元件,並且大部分的走線是隱藏在內部。您所需的工具取決於您選擇的支架的材料。又或許您可以製作一個底座來代替。 掛載一個LED螢幕在前方 在支架頂部鑽出一個足夠容納整個LCD的洞。然後將切下的部分為螢幕切出一個較小的洞。用竹子碎屑填滿並將組裝黏回支架(圖3)。

fig-03-mounting-the-led-screen
圖 3 – 掛載 LED螢幕

另一個方式是您可以簡單的將整個模組用螺絲釘鎖在外部。這根據您個人的審美觀。不論您怎麼做,要點是確保您的LED線能夠連接到將被掛載到背後的英特爾 Edison 擴充板。

 

底部加入槓桿開關

任何偵測動作的感測器在此皆能用。我選擇槓桿開關而非紅外線傳感器之類的東西來降低耗能。不過,一個牙刷約只有 15 克,所以您需要一個非常敏感的開關。

由於開關很小,所以我還加了一個平台讓牙刷放置在支架中的任何位置都能觸發開關。我的平台是 從一個塑膠工具箱的隔板上切割下來的。(我通常會準備比實際上所需要的還多一些,因此切出一塊適合的平台很快也很便宜) 您還要焊接一條連接線到開關。將一條線接到地/共用腳位,另一 條接到 NC(通常是關閉的) 腳位。

fig-04-mounting-lever-switches
圖 4 – 安裝槓桿開關

因為碰觸槓桿的背面並不會觸發開關,我已經安裝好開關所以背面實際上是在牙刷支架隔板裡面 (圖 4)。至於 LCD 螢幕,須確保您的線可以接到擴充板。我在支架背面鑽了一個洞將線材 (大部分) 隱藏起來。

 

在前方增加一個光線探測器,並在後方增加一個蜂鳴器

焊接一根足夠長且能夠接到支架背面擴充版位置的連接線來準備光線探測器和蜂鳴器。我在前方鑽了一個適合光線探測器的孔 (圖 5)。位在前方的位置剛好使感測器能夠精準的讀取房間裡的環境燈光。我在背面的位置切出一大一點的洞給蜂鳴器,所以對於牙刷支架原本的外貌不會有太多的影響,還能預防在早上的時候聲音太大聲。

fig-05-holes-and-mounting
圖 5 – 孔洞與蜂鳴器和光線感測器的安裝

暴露的電子零件防水處理 因為這個專案必定會被弄濕,所以為您的連接線做一些防備措施。利用防水膠或者是其他的黏合劑來將外露的電子零件和接線覆蓋 (圖 6)。例如我在 LCD 組件背面使用了很多的防水矽膠。但是要確保槓桿開關沒有被覆蓋而且他們還能保持倆良好的接觸。

fig-06-waterproof-silicon-another-sealant
圖 6 – 使用防水矽膠或另外一種黏合劑來防水

將組件連接到擴充板 我第一次做這個專案的時候用了一塊麵包板來測試我的開發板和連線 (圖 7)。您可能在最後幾個步驟的時候也需要做同樣的事情。

fig-07-breadboard-wiring-battery-lcd
圖 7 – 麵包板接線,電池,和 LCD 螢幕

 

按上圖將元件連接到開發板的腳位 (圖 8)。大部分都可以直接連接,但是我有加了 10K 的下拉電阻來降低開關的噪音和防止讀取錯誤。

fig-08-connections-breakout-board
圖 8 – 擴充板的連接

將英特爾 Edison 運算模組加到開發板上,如此一來您的硬體部分就大致完工了。我們會很快的裝上電池。現在您的專案應該十分類似下圖所示。

fig-09-hardware-setup-almost-done
圖 9 – 硬體安裝基本完工

 

2. 準備英特爾 Edison 開發板和雲端服務

英特爾的物聯網站上有英特爾 Edison 開發板 起動與運行的文件 。按照這些指示將您的電腦連接到開發板上。

無線網路的設置

因為這個專案使用 Wi-Fi 連接雲端並發送電子郵件,您也需將板子設定連接到路由器。這簡單的運用英特爾 Edison 開發板既有的功能,更多的資料可以在上述的入門聯結中找到。

設定一個物聯網分析帳號

這個專案使用英特爾物聯網開發套件雲端分析來儲存資料。您可以從下列網站創立一個帳號: 網站連結

將元件新增至雲端

在物联網分析表中完成你的英特爾 Edison 開發板注册後,你必須通過創建定制的元件來為你的数據準備雲。您將為每支牙刷創建一個訂製的元件。您所給定的名稱將會在您的報告當中顯示。按照 這些指示 來開啟您的元件

在英特爾 Edison 開發板上註冊元件

一但在物聯網分析表上新創好元件,您需要在開發板上註冊這些元件。您在這個步驟所使用的名稱將會是把 資料存到雲端的原始碼中所使用的名稱。在開發板上註冊元件請參考 相同的指令

在英特爾 Edison 開發板上啟動英特爾代理引擎

英特爾 Edison 開發板使用一個內建的服務來跟雲端通訊。這個服務必須執行這些程式來連接與傳送資料。在完成上面聯結中所提到的指令後,您就可以發送指令來測試板子能否聯接到雲端並且傳送資料到您的客製化元件。

 

3. 編寫英特爾 Edison 開發板程式

當硬體完成而且服務也準備妥當,是時候來編寫 T.E.E.T.H 的程式了。

英特爾 XDK IoT Edition 聯接開發板

英特爾 XDK IoT Edition 是協助您在開發板子上新增 node.js 專案的開發環境。它包含很多範例。相關文件可在 下列聯結 中找到

載入程式

在 GitHub 上 下載 或複製 原始碼 。這個檔案依循一個小的 node.js 專案的結構

  • readme.md – 文件及版權資訊
  • package.json – 定義相關文件的 專案描述
  • main.js – 執行 T.E.E.TH 的所有程式碼
  • node_modules –當您第一次新創這個專案相關函式庫的目錄

設定 SMTP 服務

在 main.js 上方定義了許多的常量。您將需更新很多值來匹配您的家裡環境與您的喜好。至少,您需要更改 MAIL.user,MAIL.pass 和 Mail.brushTo 的值。這些屬性定義了 SMTP 郵件服務如何聯接網際網路以及 T.E.E.T.H 電子郵件應該送往何處。

fig-10-configure-mail (1)
圖 10 – 設置 Mail.user,Mail.pass,Mail.brushTo

使用已註冊的分析元件名稱

使用您在常量區域裡所註冊的物聯網分析表中的名稱, METRICS.brushComponent. 這是一個您的專案當所有元件的陣列。對我而言,它有兩個元素。

fig-11-intel-analytics-dashboard
圖 11 – 物聯網分析表

加入更多的牙刷

如果您已經做好一個容納兩支牙刷以上的支架,您必須更改程式中的常量區域來反映這個事實。當牙刷相關數值出現時,程式會使用陣列結構。按照這些常量為每支牙刷新增額外的陣列元素: METRICS.brushComponent, MAIL. brushTo.PINS.brushSwitch, SCREEN_MSG.brushName, TIME.brushPreptime, and TIME.brushGoaltime.

 

4. 了解程式碼

儘管這個專案可能由多個檔案組成,每個元件一個檔案,我覺得如果只有一個 main.js 檔案會更加簡單。這個專案不需要很多程式碼,因此更多的文件可能複雜化這個簡單的專案。

 

所需的函式庫

一個 node.js 專案,程式碼依賴其他的元件來跟硬體、分析程式、和電子郵件溝通。

常量

這是唯一需要修改的地方。根據需求更改常量值,來改變顏色、螢幕訊息、電子郵件,甚至時間間隔。

計時器

為了簡單化,所有的計時器都存放在全域物件中。這樣允許 setTimeout 和 setInterval 的函式呼叫來存取計時器。

日誌

日誌類別輸出控制台訊息,按照傳統的方式根據錯誤、警告和資訊來限制輸出。

感測器

感測器類別,您會發現控制通用輸入輸出腳位的原始碼有多簡單。牙刷開關與光線感測器的值在這裡被讀取。

蜂鳴器

蜂鳴器類中的大部分程式碼被用來播放計時器開始與結束的輕快鳥叫聲。

螢幕

螢幕類負責所有 LCD 螢幕的指令,它通常有兩個功能: 顯示文字消息和改變背景顏色

郵件

郵件類利用 SMTP 並使用所需的 node_module 來傳送電子郵件。當傳送嚐試失敗時它包含了 一些錯誤檢查。

韻律

韻律類是幫助的最後一項。他用板子上的本端接口來傳送分析資料到 iotkit-agent 程式。一旦連線時錯誤發生,錯誤訊息會被送到控制台以便偵錯。

牙刷

這是主要類別,包含了這個專案中所有的邏輯。牙刷呼叫感測器類別來監控開關與燈光,蜂鳴器發出聲音警告,螢幕類別顯示訊息,郵件類別傳送郵件,韻律類更新物連網開發板。如果您想要更改您的功能,這裡就是所需更新的地方。

 

5. 測試

趁著開發板和牙刷支架還連接在電腦上時花些時間做測試。這是在您的環境下檢查控制台輸出與偵錯程式碼最簡單的方式。

確認感測器與顯示

使用英特爾 XDK IoT Edition 的 Install/Build 按鈕將程式碼發送到開發板並執行 NPM 來建立 node 專案。按下運行按鈕來啟動 T.E.E.T.H.

透過使用一根牙刷來啟動支架內的每一個控制開關來測試支架。您將看到 LCD 螢幕點亮並且能夠顯示控制台的輸出。同時,蜂鳴器應該響起而且如果您遮住光線感測器,計時器應該關閉。

檢查郵件

讓計時器運行到最後以便執行電子郵件的功能。根據您的服務而定,您應該在幾分鐘之內在您的收件夾中收到一封電子郵件。

查看分析

最後需要確認的是分析的部分。使用您的支架上所有的牙刷來測試每個開關。登入分析表並確認您看到每個客製化元件的資料。

 

6. 加入電源

最後終於準備好將英特爾 Edison 開發板從您的電腦上移開,並將牙刷支架作為一個獨立的物連網設備放回浴室。

安裝電池

用一個有 USB 線的可充電電池來替擴充板提供電力 (圖 12)。我用的是研討會時的所送的展場禮物。它本來是幫手機充電的但是在這個專案中也十分適合。我保留了 USB 接口以便充電。

未命名
圖 12 – 安裝電池

完成英特爾 Edison 開發板封裝

記住這個專案會被弄濕。採取預防措施來保護您的電池和開發板以及任何外露的電子元件。這是我最後版本的圖片。

Figure1-CompletedProject_cropped (1)
圖 13 – 最後版本

更進一步

這個專案中我們只是剛剛開始利用英特爾 Edison 平台的無線網際網路和雲端資料的可能性。這些原始碼可以簡單的修改應用於其他的技術。例如,您也許要用純文字或是推特來取代電子郵件。又或許您使用其他的雲端服務例如 Xively 取代物連網分析。甚至傳送給喇叭的開始和結束聲可以換成您所喜愛的 mp3 檔案。您可以利用替換 node.js 模組來快速的調整您想使用的模組。

此外,智慧型牙刷可以更加智慧化。類似 Nest 遇到 T.E.E.T.H。目前資料只是單向的輸出到雲端,但是利用這些資料當成計時器的輸入將其變成一個學習工具。例如,如果您似乎從未在整整兩分鐘完成,計時器可以給您設定較低的目標來增加每次成功的機率。與其使用一个固定的準備時間,一個對刷牙環境聲音有反應的感應器可以適應你的習慣。即使不做任何调整,这仍是一个將物聯網帶進你家裡非常棒的項目。把它當成浴室 2.0 運動的一部分。

 

更多 精選文章....

 

歡迎加入"Inside" Line 官方帳號,關注最新創業、科技、網路、工作訊息

好友人數