探索一种适合 Maximo 的互联资产的架构(2)
 
- UID
- 1066743
|

探索一种适合 Maximo 的互联资产的架构(2)
加载设备和传感器的库
每种类型的传感器可能都有特定的库。例如,数字传感器通常有一个数据引脚,用于发送需要由一个库解释的编码数据。对于我们的示例应用程序,需要加载以下库:
- ESP8266 库,用于我们的 NodeMCU 电路板(确认已为我们的电路板加载此库)
- DHT 传感器库,用于我们的温度传感器
- PubSubClient 库,用来与 Bluemix 云平台进行通信
要加载这些库,需要对上述每个库完成以下步骤:
- 在 Arduino 软件中,选择 Sketch > Include Library > Manage Libraries。
- 在搜索栏,搜索该库。
- 在搜索结果中,选择要安装的库。
4
将 Watson IoT Platform 代码加载到您的 Arduino 软件中
我们现在已准备好将第一段代码载入 Arduino 软件中。暂时不要执行该程序,因为我们需要根据您的 IoT 设置和 WiFi 设置来修改一些参数。
- 在 Arduino 软件中,创建一个新草图(sketch)。草图(sketch) 是一个上传到 Arduino 电路板并运行的程序或代码单元。
- 将以下代码行复制并粘贴到此草图中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| /** Sensor for Maximo IoT Nov 2016
*
* Author: IBM
* License: Apache License v2
*/
#include <ESP8266WiFi.h>
#include < ubSubClient.h> //
#include <DHT.h>
#define DHT11_PIN D1
#define DHTTYPE DHT22
//-------- Customize these values -----------
const char* ssid = "YOUR SSID";
const char* password = "YOUR PASSWORD";
#define ORG "YOUR ORGID"
#define DEVICE_TYPE "YOUR DEVICE TYPE"
#define DEVICE_ID "YOUR DEVICE ID"
#define TOKEN "YOUR TOKEN"
//-------- Customize the above values --------
DHT dht(DHT11_PIN, DHTTYPE);
char server[] = ORG ".messaging.internetofthings.ibmcloud.com";
char topic[] = "iot-2/evt/status/fmt/json";
char authMethod[] = "use-token-auth";
char token[] = TOKEN;
char clientId[] = "d:" ORG ":" DEVICE_TYPE ":" DEVICE_ID;
WiFiClient wifiClient;
PubSubClient client(server, 1883, NULL, wifiClient);
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("Connecting to "); Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected, IP address: "); Serial.println(WiFi.localIP());
}
void loop() {
if (!!!client.connected()) {
Serial.print("Reconnecting client to ");
Serial.println(server);
while (!!!client.connect(clientId, authMethod, token)) {
Serial.print(".");
Serial.println();
}
}
// in the string below, where you see quotation marks followed by a backslash, this means the
quotation marks should be included in the final payload.
String payload = "{\"d\":{\"SensorXX\":\"Usage\""; //Name this anything you like. Just
make sure to keep the quotation marks in place.
payload += ",\"Temperature\":";
payload += dht.readTemperature();
payload += ",\"Humidity\":";
payload += dht.readHumidity();
payload += "}}";
Serial.print("Sending payload: ");
Serial.println(payload);
if (client.publish(topic, (char*) payload.c_str())) {
Serial.println(" ublish ok");
} else {
Serial.println(" ublish failed");
}
delay(20000);
}
|
- 修改 12 - 13 行中的值来配置您的 WiFi 网络。对于 SSID 和密码,请指定您的无线网络的凭证。在本教程后面,我们将在 14 - 17 行中配置 Watson IoT Platform 值(ORG、device_type、device_ID 和 token)。
此草图仅发送来自 DHT22 传感器的温度和湿度值。可以使用此代码作为示例,了解如何扩展此草图来添加更多传感器,比如光线传感器或流量传感器。
5
将 DHT22 传感器连接到 NodeMCU 电路板
如果想知道此引脚分配的细节,可以查阅此 Arduino GitHub 存储库中的这部分帮助信息:
在普通的 Arduino 草图中,分配的引脚布局始终使用特定编号来引用。在 NodeMCU 上,也可以使用 D1 名称(表示 Digital 1)进行更明确地指定。nodeMCU 的普通草图中的引脚 1 不同于 D1。(否则就太容易了!)所以,请始终使用 Dx 引脚分配命名约定,这样就不会出错。不是所有兼容 Arduino 的电路板都会使用此方法,但该方法适用于 NodeMCU 系列。如果使用具有不同芯片的其他任何类型的电路板,可能需要研究该电路板的文档,以便了解它们的引脚布局,以及该布局与草图中的引脚布局的关系。
- 在草图的第 10 行上,提供了 DHT22 传感器连接到的数据引脚的定义。选择 D1 或 D2(不是所有 D 引脚均可用,因为一些引脚有共享的功能)。
 - DHT22 传感器有 3 个引脚。因为不同的传感器有不同的引脚布局,所以在将传感器连接到电路板时需要小心。如果将连接混淆,可能损坏传感器或电路板,或者将二者都损坏(最多损失 6 美元)。将 PLUS 引脚连接到 NodeMCU 电路板上的 3.3 V 引脚。然后,将 MINUS 引脚连接到 NodeMCU 电路板上的 GND。
- 如果您还购买了一个电路试验板或母板,请确保 NodeMCU 电路板的放置方向是正确的,将母板上的 WiFi 符号与 NodeMCU 电路板上的 WiFi 对齐。然后,就可以使用与前一步中相同的引脚,但这一次是在母板上。
 在本教程的后面,我们将使用 microUSB 数据线给电路板供电。如果选择使用一个单独的电源,可以将任何 5 V 电源连接到 Vin 引脚,或者将任何 3.3 V 电源连接到 microUSB 端口附近的 3.3 V 输入。如果使用母板或电路试验板,它可能提供 12 V 电源。 |
|
|
|
|
|