0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何快速搭建一个LoRa®无线环境监测系统?WisBlock + RUI3 一键实现!

瑞科慧联(RAK) 2022-09-19 14:21 次阅读

环境监测对于人类来说至关重要,空气质量、土壤构成、环境噪音、温湿度等对我们的农业发展、城市建设、日常生活都会造成影响。以温湿度为例:温湿度高低会影响农作物的生长、影响工程建设进度、影响设备运作,如果我们能够精确地监测温湿度数据、及时作出调整,就能促进整个行业的高效运行。

基于这样的需求考虑,“如何搭建一个良好的环境监测系统”成为了我们需要思考的核心问题。

通常来说,搭建一个良好的环境监测系统,最关键的是要建立实时的环境监测预警系统,并保存完整的历史数据。以产品测试行业为例,当环境不利于产品测试时,只有及时预警,才能采取有效措施调节室内环境,从而避免监测系统损坏。同时也可以根据保存下来的实时数据进行具体分析。

由此可以知道,我们需要的是一套传输距离远、功耗低、还能实时保存数据的环境监测系统。

基于瑞科慧联(RAK)的模块化产品 WisBlock 以及软件平台 RUI 3 搭建出来的 LoRaWAN®无线环境监测预警系统,恰好符合这一点。WisBlock + RUI3 的环境监测预警系统可以做到全天 24 小时全面准确地进行环境监测。该系统也被广泛地应用在实验室温湿度环境监测、办公区环境监测、商超冰柜温度监测、农场大棚温湿度检测等多个领域。

今天我就带大家一起学习快速地搭建这套 LoRa®无线温湿度监测系统。

搭建前的准备

硬件准备

  • WisBlock Base(本示例使用 RAK5005-O)
  • WisBlock Core(本示例使用 RAK4631)
  • WisBlock Sensor(本示例使用 RAK1906)
  • LoRa®天线(本示例使用 CN470频段)
  • 网关(本示例使用 RAK7268网关)

注意:要保持网关与传感器所属的频段相同,本案例我使用的频段均为 CN470。

软件准备

  • Arduino IDE
  • RAK4631 BSP
  • Adafruit BME680 库
  • SX126x-Arduino 库
  • 注册好 Gateway的 TTN账户
  • DataCake账户

硬件安装

  1. 将 LoRa®天线接口对准并放置在 RAK4631 模块的 LoRa®天线接口搭接处,轻轻按压 LoRa®天线接口,完成安装。
  2. 将 RAK4631 模块上的连接器插头对准 RAK5005-O CUP 插槽上的连接器插座。保持连接器间平行,并将其轻放在插座连接器相应的搭接处。
  3. 将传感器模块 RAK1906 上的连接器插头对准 RAK5005-O 插槽的连接器插座。保持连接器间平行,将其轻放在插座连接器相应的搭接处。
  4. 组装过程示意图如下:

pYYBAGMgLQSAToJFAAUGj2TrJag743.pngpoYBAGMgJ32AYyOtAAYFT621vPU955.png

pYYBAGMgJ4yAa433AACFLmmwFEs496.pngpYYBAGMgJ5KAe1YfAABWHBWhR5g352.png

软件配置

在 Arduino IDE中添加 RAK4631-R 开发板

1、打开 Arduino IDE,进入“文件 > 首选项”

pYYBAGMgJ6uAB2azAABWya5p9Kw502.png

打开 Arduino IDE

2、单击图中图标,修改“附加开发板管理器网址”选项,将 RAK4631-R WisBlock Core 添加中 Arduino 开发板管理器中。

poYBAGMgJ7uAZC0wAACMG3hqEbo791.png

在 Arduino IDE上修改“附加开发板管理器网址”

3、现在复制下方 URL并粘贴至下图所示区域。如果已存在其他链接,将上述链接粘贴至新的一行。完成后,单击“好”。

https://raw.githubusercontent.com/RAKWireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless.com_rui_index.json 

poYBAGMgJ8-AfEvhAACCCQgtfWQ691.png

在Arduino IDE上粘贴复制好的URL

4、重启 Arduino IDE。进入“工具 > 开发板:“RAK4631” > 开发板管理器”。

pYYBAGMgJ92AIL0GAABiWTkso2U254.png

重启Arduino IDE并执行操作

5、在搜索框中输入“RAK”,窗口会自动出现可用的 RAKwireless WisBlock Core Boards,选择“RAKwireless RUI nRF Boards”并安装。

pYYBAGMgJ-2Ab9l4AABS3825nXA261.png

选择并安装 RAKwireless RUI nRF Boards

6、BSP 安装完成后,根据图中路径选择 RAKwireless WisBlock Core模块。

poYBAGMgJ_yAct_TAABtlrDI45Q838.png

选择 RAKwireless WisBlock Core 模块

7、代码烧录

/**
   @file Environment_Monitoring ino
   @author rakwireless com
   @brief This sketch demonstrate how to get environment data from BME680
      and send the data to lora gateway 
   @version 0 1
   @date 2020-07-28
   @copyright Copyright (c) 2020
**/
#include 
#include 
#include  // Click to install library: http://librarymanager/All#Adafruit_BME680

Adafruit_BME680 bme;
/*************************************

   LoRaWAN band setting:
     RAK_REGION_EU433
     RAK_REGION_CN470
     RAK_REGION_RU864
     RAK_REGION_IN865
     RAK_REGION_EU868
     RAK_REGION_US915
     RAK_REGION_AU915
     RAK_REGION_KR920
     RAK_REGION_AS923

 *************************************/
#define OTAA_BAND     (RAK_REGION_CN470)
#define OTAA_DEVEUI   {0x20, 0x17, 0x06, 0x15, 0x0E, 0x00, 0x00, 0x15}
#define OTAA_APPEUI   {0x20, 0x17, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00}
#define OTAA_APPKEY   {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}


// Might need adjustments
#define SEALEVELPRESSURE_HPA (1010.0)
uint8_t buffer[13]="";

void bme680_get()
{
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" C");

  Serial.print("Pressure = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");

  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");

  Serial.println();


  uint16_t t = bme.temperature * 100;
  uint32_t pre = bme.pressure / 100.0 * 100;
  uint16_t h = bme.humidity * 100;
  uint32_t gas = bme.gas_resistance;
  
  uint32_t i = 0;
  //result: T=28.25C, RH=50.00%, P=958.57hPa, G=100406 Ohms
   buffer[i++] = 0x01;
   buffer[i++] = (uint8_t)(t >> 8);
   buffer[i++] = (uint8_t)t;
   buffer[i++] = (uint8_t)(h >> 8);
   buffer[i++] = (uint8_t)h;
   buffer[i++] = (uint8_t)((pre & 0xFF000000) >> 24);
   buffer[i++] = (uint8_t)((pre & 0x00FF0000) >> 16);
   buffer[i++] = (uint8_t)((pre & 0x0000FF00) >> 8);
   buffer[i++] = (uint8_t)(pre & 0x000000FF);
   buffer[i++] = (uint8_t)((gas & 0xFF000000) >> 24);
   buffer[i++] = (uint8_t)((gas & 0x00FF0000) >> 16);
   buffer[i++] = (uint8_t)((gas & 0x0000FF00) >> 8);
   buffer[i++] = (uint8_t)(gas & 0x000000FF);
    /** Send the data package */
  if (api.lorawan.send(sizeof(buffer), (uint8_t *)buffer, 2, true, 1))
  {
    Serial.println("Sending is requested");
  } 
  else 
  {
    Serial.println("Sending failed");
  }
}
void init_bme680()
{
  Wire.begin();

  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    return;
  }

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}
void lora_init()
{
  // OTAA Device EUI MSB first
  uint8_t node_device_eui[8] = OTAA_DEVEUI;
  // OTAA Application EUI MSB first
  uint8_t node_app_eui[8] = OTAA_APPEUI;
  // OTAA Application Key MSB first
  uint8_t node_app_key[16] = OTAA_APPKEY;
  
  if (!api.lorawan.appeui.set(node_app_eui, 8)) {
    Serial.printf("LoRaWan OTAA - set application EUI is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.appkey.set(node_app_key, 16)) {
    Serial.printf("LoRaWan OTAA - set application key is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.deui.set(node_device_eui, 8)) {
    Serial.printf("LoRaWan OTAA - set device EUI is incorrect! \r\n");
    return;
  }
  
  if (!api.lorawan.band.set(OTAA_BAND)) {
    Serial.printf("LoRaWan OTAA - set band is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.deviceClass.set(RAK_LORA_CLASS_A)) {
    Serial.printf("LoRaWan OTAA - set device class is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.njm.set(RAK_LORA_OTAA))  // Set the network join mode to OTAA
  {
    Serial.printf
  ("LoRaWan OTAA - set network join mode is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.join())  // Join to Gateway
  {
    Serial.printf("LoRaWan OTAA - join fail! \r\n");
    return;
  }
  
  /** Wait for Join success */
  while (api.lorawan.njs.get() == 0) {
    Serial.print("Wait for LoRaWAN join...");
    api.lorawan.join();
    delay(10000);
  }
  
  if (!api.lorawan.adr.set(true)) {
    Serial.printf
  ("LoRaWan OTAA - set adaptive data rate is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.rety.set(1)) {
    Serial.printf("LoRaWan OTAA - set retry times is incorrect! \r\n");
    return;
  }
  if (!api.lorawan.cfm.set(1)) {
    Serial.printf("LoRaWan OTAA - set confirm mode is incorrect! \r\n");
    return;
  }
  
  /** Check LoRaWan Status*/
  Serial.printf("Duty cycle is %s\r\n", api.lorawan.dcs.get()? "ON" : "OFF"); // Check Duty Cycle status
  Serial.printf("Packet is %s\r\n", api.lorawan.cfm.get()? "CONFIRMED" : "UNCONFIRMED");  // Check Confirm status
  uint8_t assigned_dev_addr[4] = { 0 };
  api.lorawan.daddr.get(assigned_dev_addr, 4);
  Serial.printf("Device Address is %02X%02X%02X%02X\r\n", assigned_dev_addr[0], assigned_dev_addr[1], assigned_dev_addr[2], assigned_dev_addr[3]);  // Check Device Address
  Serial.println("");

}


void setup()
{
  //Initialize the built in LED
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  // Initialize Serial for debug output
  Serial.begin(115200);
  time_t serial_timeout = millis();
  while (!Serial)
  {
    if ((millis() - serial_timeout) < 5000)
    {
      delay(100);
      digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }
    else
    {
      break;
    }
  }
  delay(1000);
  Serial.println("=====================================");
  Serial.println("Welcome to RAK4630 LoRaWan!!!");
  lora_init();
  init_bme680();

} 



void loop()
{
  if (! bme.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }
  bme680_get();
  delay(10000);
}

连接传感器节点至 TTN

本节为将传感器节点连接至 TTN(The Things Network)平台的操作过程。

登录到 TTN 平台

登录TTN网站,将会看到以下页面:

pYYBAGMgKCKAU6r1AAC0iyN2dsk407.png

TTN 网站的控制台页面

创建新的应用程序

进入添加 Application 界面,注册相关信息后,单击页面底部的“Create application”。

poYBAGMgKDqAfF9GAAB_2ArJJdc971.png

添加应用

进入应用程序概述页面,单击右下角“Add end devices”,在 TTN平台注册新设备。

poYBAGMgKEeAWJWLAACkMu5FMRE929.png

应用程序概述页面

注册新设备

在“Register end device”页面中,单击“Manually”页签。

配置 Frequency plan、LoRaWAN version、Regional Parameters version,并添加设备 DevEUI、AppEUI、AppKey。

poYBAGMgKFqAS37VAAFg53ZQqEY222.png

注册设备

设备频段应与网关频段相同。

DevEUI、AppEUI、AppKey请在传感器示例代码中获取,切记需要删除各个数字前的“0x”以及“,”。

poYBAGMgKHKAa_QRAAHPLkE-5mw255.png

获取 DevEUI、AppEUI、AppKey

单击"Register and device",完成设备注册,注册结果将汇总如下图所示。

poYBAGMgKIeAA6e6AAG5Tv0o3nU932.png

设备信息

重启设备后,设备自动入网并定时向服务器传输实时监测数据。单击See all activity→,查看传输数据。

pYYBAGMgKWKAQNBWAAETAiTiX9I791.png

环境监测数据获取

添加 Datacake集成到 TTN

具体可参考:https://docs.datacake.de/lorawan/lns/thethingsindustries

poYBAGMgKXGAbtTxAABAqmU8N8s214.png

在 Datacake中配置设备

在这里,我假设已经设置 Datacake帐户,创建好了应用程序,并准备添加设备。如果大家没有创建好账户,可以通过Datacake 文档了解创建步骤

在 Datacake 应用程序中,单击“设备”以查看设备的概述。单击“添加设备”按钮开始。

pYYBAGMgKYOAIROHAAEjYsowrSw280.png

在下一个屏幕中,选择LoRaWAN New device并点击“Next”

poYBAGMgKZKAUEG2AACziGNVVO4957.png

选择New product并写入Product Name

pYYBAGMgKaGAZ1eRAAEHpZaSzis741.png

然后,向下滚动窗口,直到看到该部分。在此处选择“TTN V3”,选择它,然后单击“下一步”按钮。

poYBAGMgKdWAbg5cAADRjVbE22Q364.png

在下一步中,我们必须输入节点的 Dev EUI 和名称。Dev EUI 必须与之前在 TTN V3应用程序中选择的节点匹配。输入信息后,再次点击“下一步”按钮。

pYYBAGMgKeCAG4w9AADmmSBkpvU042.png

根据我们在 Datacake上的帐户,以及已经注册的设备数量,在不同的支付选项之间进行选择。完成此处选择后,按“添加1个设备”按钮。

poYBAGMgKfCAPJymAAC4lH871rs098.png

现在,可以在 Datacake的概述屏幕中看到新设备。

pYYBAGMgKfqAYC_pAAFIxnJPg3E433.png

在 Datacake 中为传感器节点创建数据解析器和数据字段

要完成设备的配置,请在概述中单击它。在下一个窗口中,选择 。Configuration

pYYBAGMgKkKAPLdGAAFlphpN9zo791.png

在配置中,向下滚动,直到看到该部分。在这里,必须要输入我们的自定义有效负载解码器才能获取到达的数据。正如图中所示,解码器返回一个嵌套的 JSON 数组,其中每个 JSON 条目都有两个字段。之后会转发到可视化界面,就能让传感器进行数据传输了。Payload Decoderfieldvaluefieldvalue

poYBAGMgKkuAOnjxAADGmVpyO3U234.png

为了使事情变得更容易,我准备了一个有效负载解码器,它将会与此示例配合使用,而且它也可以轻松扩展与我们其他的WisBlock 解决方案一起使用

为了节省时间,我将代码放在这里。使用以下内容覆盖示例负载解码器:

function Decoder(payload, port) {
if(payload[0] === 0x01) {
return [
{
field: "TEMPERATURE",
value: (payload[1] << 8 | payload[2]) / 100
},
{
field: "HUMIDITY",
value: (payload[3] << 8 | + payload[4]) / 100
},
{
field: "PRESSURE",
value: (payload[8] | (payload[7] << 8) | (payload[6] << 16) | (payload[5] << 24)) / 100
},
{
field: "GAS",
value: payload[12] | (payload[11] << 8) | (payload[10] << 16) | (payload[9] << 24)
},
];
}
}

pYYBAGMgKl2AWtRLAADxeCr-pI8941.png

现在,我们检查解码器是否正常工作。向下滚动并点击“保存”按钮以更新解码器。

poYBAGMgKmWAAWyKAABcoHcbe0U384.png

然后,一直向上滚动并选择选项卡。如果此时设备处于联机状态并且已发送数据,那么就可以 .DebugDebug Log。

poYBAGMgKnKAdVpEAADx1u8aG1o163.png

如果这有效,接下来就要做更多的工作了。Datacake 使用字段为可视化查找正确的数据,但必须要先定义所有字段。

返回到配置选项卡并向下滚动,直到看到该部分。到达那里后,单击添加字段按钮。Fields

poYBAGMgKnuAOUIFAABS8LZ56o8900.png

在窗口中,选择数据类型、字段名称和单位。Add Field

注意:这里必须与负载解码器中分配的字段名称匹配。因此,对于“温度”,正确的字段名称是“温度”。Identifier。

输入所有信息后,点击“添加字段”按钮。

poYBAGMgKoiABrsCAADKtZixm9M934.png

必须重复此步骤,直到定义了将包含传感器数据的所有四个字段。最后,应该如下所示:Fields

pYYBAGMgKpWAeQ-xAACjbtovr2g795.png

到这里,我们就完成所有的准备工作。现在,我们用一些漂亮的图表来显示数据。

设置仪表板以可视化传入的传感器数据

返回设备概述并打开选项卡。目前,它是空的。需要添加新的微件,单击右侧的小编辑图标。Dashboard

poYBAGMgKqWASVXfAABAd1yRjtk603.png

现在,我们会看到一个添加小部件按钮。单击它开始。

pYYBAGMgKseAMHdsAAAvaPIbmEM604.png

在下一个屏幕中,会看到一系列不同的可视化选项。我选择了这里。Chart

pYYBAGMgKtOAA0HBAADne9hDM9U551.png

下一个窗口有四个选项卡。从选项卡开始。就可以在此处输入图表标题。Basic

pYYBAGMgKt2AWkknAABxL_Zhyiw284.png

Field选项卡中,选择Temperature

pYYBAGMgKuWAZGRVAABjRUkRNiI825.png

现在,它将显示带有温度数据的第一个小部件。我们可以使用微件右下角的小箭头调整大小。

pYYBAGMgKvKAAn4kAAAo5K16eoo751.png

对其他字段重复这些步骤后,就可以看到包含接收数据的图表。主要要单击旁边的黄色图标保存你的操作,然后返回主仪表板视图。HumidityPressureAir QualityUnsaved changes

poYBAGMgKvuAJgI0AAGctfJ2Zns179.png

现在,来自环境传感器的数据以一个很好的可视化效果呈现出来了,我们可以从任何地方访问和查看。

添加Rules

这里我们可以对由设备测量值引起的事件执行操作。它们允许设置不同的触发器和警报,例如:

1、通过电子邮件或短信发送通知消息

2、通过网络挂钩调用外部服务

3、将下行链路发送到 LoRa®设备

pYYBAGMgKwmAM6xyAAD1WqqiA1c461.png

这里可以从工作区的侧边栏菜单创建和访问规则。与设备相关的规则(一个或多个条件引用设备)还会显示在设备的“规则”选项卡中。

通过单击右上角的“添加规则”按钮创建第一个规则。

poYBAGMgKxCAN1z9AAB3lu8qmNk303.png

我们在这里通过设置温度的告警值通过邮件的方式提醒

poYBAGMgKxuAMGBNAAGcWGcbIxA852.png

当温度高于 26℃ 时,Datacake将会通过邮件的方式通知,而且显示当前的温度

poYBAGMgKyWAYxI0AAAk9x-NuVo986.png

希望这个教程能够对大家有所帮助,如果大家有任何问题,也可以留言告诉我们。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 环境监测系统

    关注

    0

    文章

    40

    浏览量

    9984
  • LoRa
    +关注

    关注

    349

    文章

    1689

    浏览量

    231938
收藏 人收藏

    评论

    相关推荐

    LORA无线温湿度监测系统

    LORA无线温湿度监测系统,作为现代环境监测技术的重要组成部分,正日益受到各行各业的广泛关注和应用。 L
    的头像 发表于 11-07 16:57 327次阅读

    如何用LORA模块进行环境监测

    随着物联网技术的发展,环境监测变得越来越智能化和自动化。LORA(Long Range)模块作为种新兴的无线通信技术,因其长距离传输和低功耗特性,在
    的头像 发表于 11-01 09:17 351次阅读

    LoRa无线一键报警安防建设系统

    及就医人员安全,必须有套完善的医疗安防系统。 • 适用于重大紧急事件的LoRa无线一键报警安防建设已成为构建安全就医
    发表于 09-25 17:08

    一键断电开关的种类有哪些

    一键断电开关的种类主要可以从其功能和实现方式上进行分类。以下是些常见的一键断电开关种类: 1. 继电器式一键断电开关 定义 :这种开关通过
    的头像 发表于 09-13 16:45 999次阅读

    变电站一键顺控系统和开关柜一键顺控有区别吗?

    变电站一键顺控系统和开关柜一键顺控技术虽然都涉及到“一键顺控”的概念,但它们在应用范围和具体实现上有所不同,因此变电站
    的头像 发表于 07-31 13:34 572次阅读
    变电站<b class='flag-5'>一键</b>顺控<b class='flag-5'>系统</b>和开关柜<b class='flag-5'>一键</b>顺控有区别吗?

    智能开关柜能如何实现“可视化一键顺控”?

    智能开关柜能如何实现“可视化一键顺控”和“开关柜健康状态管理”?蜀瑞创新推出智能开关柜一键顺控测解决方案。建设主要包括柜内无线温度监测、断路
    的头像 发表于 07-08 09:45 492次阅读
    智能开关柜能如何<b class='flag-5'>实现</b>“可视化<b class='flag-5'>一键</b>顺控”?

    致远新LoRa终端如何实现一键组网?

    GLCOM-NODE-100是新代的高性能LoRa终端采集器,支持5KM超远距离传输,低功耗指定节点唤醒,快速自组网和一键组网功能,本期文章将带大家了解这款终端的
    的头像 发表于 06-18 08:25 559次阅读
    致远新<b class='flag-5'>一</b>代<b class='flag-5'>LoRa</b>终端如何<b class='flag-5'>实现</b><b class='flag-5'>一键</b>组网?

    工业园区环境监测系统方案

    环境监测系统种综合性的环境管理手段,将外部传感器、电脑网络技术和无线通讯技术结合起来,将采集到的各种数据进行实时处理,通过采集、传输、处
    的头像 发表于 05-16 16:54 666次阅读

    环境监测的革新者:UWB模块在环境监测系统中的应用研究

    的核心组成部分,在环境监测系统中具有重要作用,可以实现环境参数(如温度、湿度、气体浓度等)的高精度监测和实时数据传输,为
    的头像 发表于 04-12 15:03 421次阅读

    景区环境监测方案监测参数与功能

    和集中管理的应用需求,利用物联网技术、数据通讯技术、地理信息技术等。针对景区环境监测设计搭建套或多套在景区生态区域环境观测大气、水体等方面数据的
    的头像 发表于 04-11 17:24 463次阅读

    智慧旅游景区环境监测系统应用

    ,提升游客体验。 为了更好地满足环境监测的需求,智慧旅游景区环境监测系统应运而生。该系统集数据采集、存储、传输、管理于体的
    的头像 发表于 04-09 15:57 460次阅读

    LoRa模块在环境监测中的角色:可持续发展的支持者

    随着全球对环境可持续发展的关注日益增加,环境监测变得尤为重要。LoRa(低功耗广域网)模块以其出色的通信能力和低功耗特性,为环境监测提供了强大的支持。本文将探讨
    的头像 发表于 03-20 10:43 486次阅读

    LoRa ZWS云应用(5)-环境监测系统组态篇

    云端平台的实时数据流,实现业务流闭环,需要依赖于IoT平台、数据分析平台、应用系统整套的数字化设施做支撑,大部分的中小型环境监测企业无力承担
    的头像 发表于 02-19 12:10 676次阅读
    <b class='flag-5'>LoRa</b> ZWS云应用(5)-<b class='flag-5'>环境监测</b><b class='flag-5'>系统</b>组态篇

    LoRa ZWS云应用(4)-环境监测设备接入篇

    环境监测系统中,要将监测设备接入物联网云平台,才能进行对环境数据实现实时监测、统计分析等操作。
    的头像 发表于 01-26 08:25 759次阅读
    <b class='flag-5'>LoRa</b>  ZWS云应用(4)-<b class='flag-5'>环境监测</b>设备接入篇

    基于树莓派的环境监测系统

    作为环境监测系统的核心 树莓派是款低成本的单片机计算机,支持各种操作系统,如Linux等。它具有强大的处理能力和丰富的输入输出接口,使得它成为
    的头像 发表于 01-04 15:15 2653次阅读