Particle公司擁有完善的開源物聯網硬體及平台,從2013年開始,就首先推出了基於TI CC3000的CORTEX M3的物聯網開發板。
目前推出的系列有:
- Particle Core
- Particle Photon
- Particle Electron
其中,Particle Electron是基於3G連網為主的開發板,Core 和 Photon 都是使用wifi做為連結的方式。
Particle不管是韌體、軟體甚至硬體部份,目前都是開源的,開發者可以自行下載並客製屬於自己的物聯網硬體及平台:
首先,要讓Photon與QNAP NAS整合,需要先安裝相關的服務:
Step 1: 安裝 Container Station
Step 2: 透過 Container Station 安裝 Node-Red (原生的 Node-Red 預設並不支援 Particle 模組,需要請安裝此版本)
Step 3: 安裝完成後,可直接開啟 Node-Red 管理頁面,如下圖所示 (http://your-nas-ip:1880, 預設port為1880)
Step 4: 成功開啟 Node-Red 後,可以找到 Particle 相關的 node 模組。目前支援三種類別,event, function 和 variable
Step 5: 接下來,開始設置 Particle Photon之前,需要安裝相關的設定環境 (透過command line進行flash,可參考此方式)。
# how to install the particle-cli
$ npm install -g particle-cli
$ particle login
Step 6: 更新 Photon (注意:需要進入DFU mode)
如何進入DFU mode
- 從裝置上找到兩個按鈕,並同時按下 RESET 和 SETUP 按鈕
- 先放開 RESET 按鈕,並持續按壓住 SETUP
- 當燈號變為閃爍"黃燈"時,代表裝置已進入 DFU mode
$ particle update
更新成功後,可以透過下面指令查詢目前版本
$ particle identify
Your device id is 2xx02b000xxxxxxxxx30xx3x
Your system firmware version is 0.5.2
Step 7: 第一次拿 Photon 需要先設定 wifi,並且連到 Particle Cloud (如果需要直接透過手機連結 Photon,可以參考此方式)。
連結 USB 啟動 Photon,第一次使用會持續閃爍"藍燈"
$ particle setup
登入 Particle Cloud → 設定無線網路 → 命名你的 Photon → 成功設定好 Photon
一旦無線網路設定完成,可以發現從原本的閃爍的藍燈,會轉變成呼吸燈,代表已經成功連上 Particle Cloud.
Step 8: 列出目前的 Particle 裝置,下面圖示可以看到剛剛設定完成的 Jarvis-NAS-Photon,後面的2d0xxxxxxxxxxx037是裝置id,可以先紀錄下來,等會會使用到。
$ particle list
設定好 Particle 裝置 以及 NAS後,開始串接裝置與 Node-Red。
首先,登入 Particle Build,這邊需要做兩件事情:
1. 放進測試用的原始碼,測試 event, function 以及 variable.
2. 取得存取相關 API 權限的 access token,之後要放到 Node-Red 使用。
我們先來將下面的測試的原始碼放進剛剛設置好的 Photon,功能主要是能夠透過event發送LED狀態、可透過function取得控制LED狀態以及目前LED狀態為何。
int ledStatus = 0;
int ledPin = D7;
// LED function
int getLedStatus(String cmd);
int setLedStatus(String cmd);
void setup() {
pinMode(ledPin, OUTPUT);
// Set a variable let user can get LED status.
Particle.variable("ledstatus", ledStatus);
// Set function let user can call it.
Particle.function("getLedStatus", getLedStatus);
Particle.function("setLedStatus", setLedStatus);
}
void loop() {
ledStatus = digitalRead(ledPin);
// Publish event to Particle cloud.
Particle.publish("ledstatus", String(ledStatus));
delay(5000);
}
int getLedStatus(String cmd){
ledStatus = digitalRead(ledPin);
return ledStatus;
}
int setLedStatus(String cmd){
if(cmd == "true"){
digitalWrite(ledPin, HIGH);
}else{
digitalWrite(ledPin, LOW);
}
}
貼上程式碼後,就可以進行燒錄的動作,如下圖:
可以順便注意一下,當燒錄過程中,裝置的 LED 狀態會有黃藍燈一起亮,然後閃爍並連線,最後轉換成呼吸燈,代表燒錄成功。
現在已經完成裝置上的設定,接下來就是要取得存取相關 API 權限的 access token,之後要放到 Node-Red 使用,如下圖:
取得 access token 後,將此 token 放進 Node-Red 提供的 Particle node 裡,
首先先建立一個新的 Particle Cloud config,接下來填入相關資料,例如:Name, Device ID, Event
完成後,如下圖,填上剛剛設定上去的 Event 名稱"ledstatus",再將輸出的 node 與 Particle node 串接起來。
所輸出 event 的結果....
Particle 除了透過網頁的方式取得裝置相關的資訊外,也可以透過 REST API 的方式取得目前裝置的狀態資訊
# GET
https://api.particle.io/v1/devices/2d002bxxxxxxxxxx03037?access_token=e2bd9e98axxxxxxxxxxf1970916xxxxxxx
取得 ledstatus variable 狀態
# GET
https://api.particle.io/v1/devices/2d002bxxxxxxxxxx03037/ledstatus?access_token=e2bd9e98axxxxxxxxxxf1970916xxxxxxx
取得目前LED狀態,透過 Particle function
# POST
curl https://api.particle.io/v1/devices/2d002b00xxxxxxxxx53xx037/getLedStatus \
-d access_token=e2bd9e98xxxxxxxxxxxxx19709xxxxxxxxxx6c92c
{
"id": "2d002b000a47353235303037",
"last_app": "",
"connected": true,
"return_value": 1
}
設定 LED 狀態 setLedStatus
# POST, args=true -> LED On; args=false -> LED off
curl https://api.particle.io/v1/devices/2d002b00xxxxxxxxx53xx037/setLedStatus \
-d access_token=e2bd9e98xxxxxxxxxxxxx19709xxxxxxxxxx6c92c \
-d "args=true"
{
"id": "2d002b000a47353235303037",
"last_app": "",
"connected": true,
"return_value": 536959528
}
除了可以透過 REST API 方式取得與控制裝置外,也可以透過 Node-Red 的方式控制,透過 inject node 來控制 LED 的開關.
透過 Node-Red 來控制裝置並不難,如果又不想要花錢申請雲端平台的話,又剛好 NAS 又支援 docker,其實自己搞一個 IoT 的簡易服務也並不難。
之後會針對更多 Particle 相關的應用介紹,包含:
1. 建置自己的 Particle Cloud
2. 整合水質感測裝置,打造屬於自己的魚缸監控系統
3. 介紹一下擁有 3G module 的 Particle Electron
同步發表於:I'm RD.
留言列表