Intel Edison IoT 開發入門 (Part 2) - 第一個 Node.js 溫度感測器

Node.js 不但是 REST API 開發的熱門技術,現在更是 IoT 裝置的重要實作技術。Intel Edison 是屬於 Single Board Computer 的物聯網解決方案,它與 ARM mbed 非常不同。

ARM mbed 是屬於 High Performance MCU 的解決方案。二者的 Use Case 與 Diagram 很不一樣,各有所長。

同一個「溫度感測器」的題目,使用 Intel Edison 與 ARM mbed 有截然不同的二種做法。但其同通點則是:

  • HTTP
  • WebSocket
  • CoAP

從這二個實作可以慢慢體會到 Web of Things 的精神:IoT 裝置未來將以 Web 技術來互聯(interoperability)。

DIY 溫度感測裝置

使用 Intel Edison 製作溫度感測裝置,需要準備以下零件:

  • Intel Edison 開發板
  • Arduino 擴充板
  • Grove Starter Kit-Base Shield 擴充板
  • Grove Starter Kit-Temperature Sensor(溫度感測器)
  • Grove Starter Kit- Universal 4 Pin 20cm Unbuckled Cable(杜邦線)

組裝完成圖:

完成圖

使用本文範例,請使用杜邦線將溫度感測器,連接至 Base Shield 上的 A0 插槽。使用杜邦線連線溫度感測器與 Base Shield 時,要注意黑線是接地(GND)。Pin 腳在電路板上有印刷字體。

下載溫度感測範例

WoT.City 提供一個 Edison 的溫度感測器範例,請至WoT.City Github下載。

最簡單的方式,是登入 Edison 後使用 curl 下載:

root@edison:~# curl -L -o coap.tar.gz https://github.com/wotcity/edison-temperature-coap/archive/v0.2.t  
ar.gz  

coap.tar.gz 解壓後:

root@edison:~# tar zxvf coap.tar.gz  
edison-temperature-coap-0.2/  
edison-temperature-coap-0.2/.gitignore  
edison-temperature-coap-0.2/LocalTemperature.xdk  
edison-temperature-coap-0.2/README.md  
edison-temperature-coap-0.2/app.json  
edison-temperature-coap-0.2/icon.png  
edison-temperature-coap-0.2/main.js  
edison-temperature-coap-0.2/package.json  

解著進入範例目錄,並安裝 Node.js 模組:

# cd edison-temperature-coap-0.2/
# npm i

完成後,啟動溫度感測器主程式:

# node main.js 

本範例的功能如下:

  • 每隔四秒鐘讀取溫度數值
  • 將上述數據打包成 JSON 文件
  • 將上述 JSON 文件以 CoAP 協定傳送給 CoAP Server

以下是執行結果:

Sample Reading Grove Kit Temperature Sensor  
Analog Pin (A0) Output: 590  
Sending: {"temperature":89.74972788359588}  
Analog Pin (A0) Output: 599  
Sending: {"temperature":91.27882151930712}  
Analog Pin (A0) Output: 601  
.
.
.

「物聯網」的重點,其實不在「物」本身,而是在「聯網」與「雲」。本系列教學,將會把重心放在「聯網」與「雲」二個部份,補齊目前 IoT 文章最缺乏的部份。

關於 CoAP Server 的架設,將於後文說明。