[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
- 从装置上找到两个按钮,并同时按下 RESET 和 SETUP 按钮
- 先放开 RESET 按钮,并持续按压住 SETUP
- 当灯号变为闪烁”黄灯“时,代表装置已进入 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/
留言列表