[gallery columns="1" size="full" ids="3066"]

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)

[gallery columns="1" size="full" ids="3067"]

Step 4: 成功开启 Node-Red 后,可以找到 Particle 相关的 node 模块。目前支持三种类别,event, function 和 variable

[gallery size="full" columns="1" ids="3068"]

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

  1. 从装置上找到两个按钮,并同时按下 RESET  SETUP 按钮

  2. 先放开 RESET 按钮,并持续按压住 SETUP

  3. 当灯号变为闪烁黄灯时,代表装置已进入 DFU mode


$ particle update

[gallery columns="1" size="full" ids="3069"]

更新成功后,可以透过下面指令查询目前版本

$ 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.

[gallery columns="1" size="full" ids="3070"]

Step 8: 列出目前的 Particle 装置,下面图标可以看到刚刚设定完成的 Jarvis-NAS-Photon,后面的2d0xxxxxxxxxxx037是装置id,可以先纪录下来,等会会使用到。

$ particle list

[gallery columns="1" size="full" ids="3072"]

设定好 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);
}
}

 

贴上程序代码后,就可以进行刻录的动作,如下图:

[gallery columns="1" size="full" ids="3073"]

可以顺便注意一下,当刻录过程中,装置的 LED 状态会有黄蓝灯一起亮,然后闪烁并联机,最后转换成呼吸灯,代表刻录成功。

现在已经完成装置上的设定,接下来就是要取得存取相关 API 权限的 access token,之后要放到 Node-Red 使用,如下图:

[gallery columns="1" size="full" ids="3074"]

取得 access token 后,将此 token 放进 Node-Red 提供的 Particle node 里,
首先先建立一个新的 Particle Cloud config,接下来填入相关数据,例如:Name, Device ID, Event

[gallery columns="1" size="full" ids="3075"]

完成后,如下图,填上刚刚设定上去的 Event 名称”ledstatus”,再将输出的 node 与 Particle node 串接起来。

[gallery columns="1" size="full" ids="3076"]

所输出 event 的结果….

[gallery size="full" columns="1" ids="3077"]

Particle 除了透过网页的方式取得装置相关的信息外,也可以透过 REST API 的方式取得目前装置的状态信息

# GET
https://api.particle.io/v1/devices/2d002bxxxxxxxxxx03037?access_token=e2bd9e98axxxxxxxxxxf1970916xxxxxxx

[gallery size="full" columns="1" ids="3078"]

取得 ledstatus variable 状态

# GET
https://api.particle.io/v1/devices/2d002bxxxxxxxxxx03037/ledstatus?access_token=e2bd9e98axxxxxxxxxxf1970916xxxxxxx

[gallery columns="1" size="full" ids="3079"]

取得目前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 的开关.

[gallery columns="1" size="full" ids="3080"]

透过 Node-Red 来控制装置并不难,如果又不想要花钱申请云端平台的话,又刚好 NAS 又支持 docker,其实自己搞一个 IoT 的简易服务也并不难。

之后会针对更多 Particle 相关的应用介绍,包含:
1. 建置自己的 Particle Cloud
2. 整合水质感测装置,打造属于自己的鱼缸监控系统
3. 介绍一下拥有 3G module 的 Particle Electron

同步发表于:I’m RD.




更多QIoT教学文 https://qiot.qnap.com/blog/tw/category/%E6%95%99%E5%AD%B8-tw/

tttt 發表在 痞客邦 留言(0) 人氣()