使用Artik创建物联网项目

时间:2022-05-11
本文章向大家介绍使用Artik创建物联网项目,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Artik IoT平台是一个端到端的物联网平台,可协助我们构建出物联网项目。它是一个开放的平台,对多种不同设备提供云支持。通过Artik IoT,成功连接的设备和传感器可将数据发送至云端。其他应用程序,服务或已连接的设备可按需其使用云端数据。

本教程将说明使用Artik IoT去实现物联网项目的步骤。主要包含:

  • 如何配置设备。
  • 如何在Artik IoT中创建物联网数据模型。
  • 如何编写应用程序发送数据到IoT平台。

Artik IoT概述

Artik IoT平台支持多种数据交换模式,并根据不同的计算机语言提供相应的SDK。

Artik IoT提供的主要功能包括:

  • 数据驱动的开发。
  • 使用WebSockets的实时数据。
  • 不同数据和设备支持。

Artik是一个结构良好的物联网平台,但在使用之前,我建议您阅读本文,了解如何使用物联网平台。此外,Artik是一个文档齐全的平台,里面有许多实用、有趣的例子。您可以点击此链接获得更多信息。比如,平台提供了云API,使外部设备都能够连接到这个平台并交换数据。

在Artik中配置设备

首先,需要有一个帐户用来配置设备,该帐户是免费的。本教程基于Raspberry Pi,但配置过程与设备无关。登录到Samsung Artik IoT界面后,必须点击设备并进行配置:

添加一个唯一的设备名称,用于识别您的设备。像这样!您已经创建了第一个准备发送数据的设备。下一步是使用Manifest配置数据模型。

实现Artik IoT数据模型

完成上一步之后,我们还需要配置项目处理过程中的变量。使用传感器测量的参数会由设备发送到云端,传入到变量之中。

在这个项目中,Raspberry Pi使用两个传感器(为了使项目变得简单)。

第一个传感器DHT11测量温度和湿度,而第二个传感器BMP180测量温度和压力。在后面的文章中,我们会介绍如何将它们连接到Pi。目前,我们首先需要知道Pi发送的三个不同参数:

  • 温度
  • 湿度
  • 压力

这些是需要我们在Artik IoT中配置的变量。图像下方描述了配置具体的说明:

在上图中,我们需要把DHT11传感器上传的不同温度保存在一个温度域中。添加其他参数,可重复相同的步骤。最后,会得到下面的图:

现在你可以激活它了!

如何连接到传感器

配置完成后,下一步是将Raspberry Pi连接到传感器。注意接线,否则可能会对设备或传感器造成损害。Raspberry Pi

和两个传感器之间的连接如下图所示:

使用传感器,需要预先安装wiringPi库。数据到Artik IoT的代码默认是Node.js进行编写的,但您也可以使用其他的计算机语言。在获取传感器值之前,安装以下两个Node.js库:

这两个库可以帮助您轻松读取传感器数据。首先,让我们来导入它们:

var sensor =  require ('node-dht-sensor' );
var RaspiSensors =  require ('raspi-sensors' );

现在,可以读取传感器:

var BMP180 = new RaspiSensors.Sensor({
  type: 'BMP180',
  address: 0x77
 }, 'BMP180');
 BMP180.fetchInterval(function(err, data) {
  if (data.type == 'Temperature') {
    console.log("Temperature ["+data.value+"]");
  }
  else if (data.type == 'Pressure') {
     console.log("Pressure ["+data.value+"]");
     var data = {"Press": data.value };
   }
}, 5);

在阅读DHT11时,你必须编写下面的代码:

setInterval(function() {
  var readout = sensor.read();
  console.log('Temp:' + readout.temperature.toFixed(2)
    + "Hum:" + readout.humidity.toFixed(2));
}, 2000);

连接到传感器部分就是这样。下一步我们需要将数据发送给Artik。

将数据发送到云端

最后一步,我们需要将传感器数据发送到云端。有一点需要特别注意,在发送数据之前设备必须先经过认证。认证需要使用到设备创建时的密令和云平台下发的设备ID。

首先,使用WebSocket进行连接:

var artikUrl=</code><code class="js string">"wss:api.artik.cloud/v1.1/websocket?ack=true";
function connect() {
// connecting
  ws = new WebSocket(artikUrl);
  ws.on('open', function() {
    console.log("Connected...");
    registerDevice();
  });
  ws.on('message', function(data, flags) {
    console.log("Message [" + data + "]");
  });
  ws.on('close', function() {
    console.log("Websocket is closed");
  });
}

连接一旦被建立,接下来就需要进行设备的注册。

// Register the Raspberry device first
function registerDevice() {
 try {
  console.log("Registering device..");
  var message = '{"sdid": "d5f71b368bf148xxx","type": "register",
    "Authorization": "bearer fcf3bf9cbf7d49xxx","cid":"1983274" }';
  console.log("Message: " + message);
  ws.send(message, {mask:true});
  console.log("Device registered");
 }
 catch(e) {
  console.error("Exception while sending data...");
 }
}

最后是发送数据的方法:

function sendMessage(message) {
  console.log("Sending data to artik...");
  try {
   var payload = '{"sdid": "d5f71b368bf148c9xxxxx", "ts":"' + Date.now().toString() + '","data":'
                  + JSON.stringify(message) + '}';
   console.log("Message: " + payload);
   ws.send(payload, {mask:true});
   console.log("Message sent");
  }
  catch(e) {
    console.error("Exception while sending data...");
    console.log(e.toString());
  }
}

代码中“sdid”是所使用的设备ID,“data”是来自传感器的值。他满意JSON的格式进行消息传输。

最后需要创建消息。从传感器迅速获取到数据。以温度为例:

var data = {"Temp": readout.temperature.toFixed(2), 
               "Hum": readout.humidity.toFixed(2)};

压力参数也非常类似。

var data = {"Press": data.value };

启动Node.js应用程序,它就会开始向Artik发送数据。访问Artik IoT界面,您可以验证数据并创建图表:

基本配置都已经完成!现在,相信您对如何使用Artik IoT开发完整的物联网项目已经有一个总体的认识了。