本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
Bastwan板是一款基于LoRa管理的低功耗工具,除了兼容Arduino IDE之外,其羽毛格式的呈现使其成为项目开发的绝佳选择。
Bastwan板:
RS485 如何工作?
RS485 是业界广泛使用的通信标准,可以在 Bastwan 等处理器中使用它来读取或写入其他设备。
Wing RS485 是 Bastwan 板的屏蔽,有助于与通过 Modbus 协议管理的设备进行通信,这通过其通信引脚(Re、De、Di、Ro)工作。一般配合Modbus通讯协议使用
引脚说明:
什么是Modbus?
Modbus 是一种基于客户端/服务器架构的通信协议,旨在与可编程逻辑控制器 (PLC) 配合使用。
Modbus 允许控制设备网络并将结果传送到计算机。
此协议可与 RS485 或 RS232 配合使用。
C4E Modbus 传感器:
对于该项目,将仅使用引脚 1 (V)、3 (GND)、4 (B) 和 5 (A)。
连接:
将 Wing 安装在 Bastwan 板上,然后识别配置的引脚,并连接传感器;
只需要四个连接:
知道 De 和 Re 必须转到启用它们的数字引脚,剩下的就是安装电路板并记住哪些引脚是要在程序中声明的激活器(在本例中它们是 D10 和 D11)。
发送 C4E 传感器读数的代码
在该项目中,所使用的的库:
#include <SPI.h>
#include <LoRa.h>
#include <AqualaboSensors.h>
如何安装库呢?
(aqualab库)
1、命名要操作的设备类型:aqualaboModbusSensorsClass aqualaboModbusSensors
2、以 9600 波特启动串行端口 1 以读取板上的引脚并等待它打开:
void setup () {
Serial.begin (9600);
Serial1.begin (9600);
while (!Serial);
Serial.println("Modbus Sensor C4E");
3、声明连接到 Wing 的从设备或设备(可以找到传感器的引脚以及传感器的默认 ID)
aqualaboModbusSensors.begin(30, 11, 10, Serial1 );
传感器和 LoRa 参数设置
通过带有 Modbus 扩展板的 Bastwan 卡 (Lora) 读取传感器获取的数据并将其发送到另一个 Bastwan 板。
通过Lora发送信息包
(读取C4E Sensor串口数据)
发射器打印正在发送的数据、电导率和温度
数据的接收代码:
#include <SPI.h>
#include <LoRa.h>
将速度激活为 9600 波特,并将 LoRa 卡的参数声明为接收器:
寻找一个信息包:
读取收到的包并打印包内的数据:
接收器正在通过 LoRa 打印温度、电导率和弹簧系数来获取数据:
将数据发送到物联网
物联网旨在为物联网提供一个开放的通信网络。
在这个网络中,我们可以创建应用程序,注册我们的设备以便能够从网站管理它们,这个平台能够接收和发送模拟 LoRa 工作的通信的数据。
众所周知,数据可以通过 LoRa 技术从一个板块读取到另一个板块,请记住,我们的模块还具有 LaRaWan,能够在 Cayenne LPP 库的帮助下将数据传输到物联网平台。
注册后,我们将可以访问我们的控制台,我们可以在其中找到应用程序和网关。
添加一个应用程序来注册我们的传感器。
启动应用程序时,它会将我们发送到一个部分,我们将在该部分为我们的设备添加一个标识符(小写字母且不带空格)和一个描述。
当我们确定我们的应用程序后,它会向我们显示以下菜单,我们将在其中找到一般描述,没有设备。
将进入“设备”部分,在那里我们将注册我们的 Bastwan 车牌。
将为我们的车牌制作一个标识符并自动生成“设备 EUI”。
在我们的应用程序中注册我们的设备后,将显示以下面板,我们可以在其中看到我们的应用程序密钥、设备密钥和配置。
还有一个工具栏,我们可以在其中选择查看我们设备的描述和状态、观察我们正在接收的数据以及我们的通信设置。
将找到设备的常规设置和本地设置,一般情况下,我们会找到我们设备的标签及其激活方法,我们必须在其中更改为 ABP。
选择 ABP 方法时,将显示一个面板,我们必须在其中生成稍后将使用的密钥。在本节中,保存数据就足够了。
更改激活方法后,我们将获得将设备连接到 The Things 网络所需的密钥。
向物联网发送数据的程序
1、需要以下库:
#include <AqualaboSensors.h>
#include<CayenneLPP.h>
#include <SPI.h>
#include <lorawan.h>
CayenneLPP lpp(51);
2、如何安装cayenne LPP或Beelan库?
要获取库,我们必须在Github上进入我们的平台:我们将在其中选择 master 分支。
选择主分支后,我们将转到“代码”图标并选择下载 ZIP 文件的选项。
下载文件后,我们将其打开并解压缩 Arduino 库文件夹中的文件。
3、将从事物网络或我们之前获得的密钥分配凭据:
const char *devAddr = "26013557";
const char *nwkSKey = "040A022068FB1C137888440CE072ACF0";
const char *appSKey = "3D3E011CBB4CEF72885D12B91C85D680";
4、将在每个发送的信息包之间分配一个时间间隔以及一个计数器,以帮助了解发送了多少个包:
const unsigned long interval = 5000;
unsigned long previousMillis = 0;
unsigned int counter = 0;
char myStr[50];
char outStr[255];
byte recvStatus = 0;
5、声明我们将在 Lora 模块中使用的引脚,并启动传感器
const sRFM_pins RFM_pins = {
.CS = SS,
.RST = RFM_RST,
.DIO0 = RFM_DIO0,
.DIO1 = RFM_DIO1,
.DIO2 = RFM_DIO2,
.DIO5 = RFM_DIO5,
};
aqualaboModbusSensorsClass aqualaboModbusSensors;
6、将启动串行 9600 波特来监控传感器的读数
void setup () {
Serial.begin (9600);
while (! Serial);
7、将开始 Lora 模块
Serial.println("Modbus Sensor C4E");
if(!lora.init()){
Serial.println("RFM95 not detected");
delay(5000);
return;
}
pinMode(RFM_TCX_ON,OUTPUT);
pinMode(RFM_SWITCH,OUTPUT);
pinMode(LED_BUILTIN,OUTPUT);
8、声明将使用的设备类型,在本例中为它的类:
lora.setDeviceClass (CLASS_A);
lora.setDataRate (SF8BW125);
lora.setChannel (MULTI);
9、这将把我们之前定义的 ABP 键
lora.setNwkSKey(nwkSKey);
lora.setAppSKey(appSKey);
lora.setDevAddr(devAddr);
10、将通过 Serial1 发起 Modbus 通信
Serial1.begin(9600);
11、将在其中找到 Modbus 设备的引脚
aqualaboModbusSensors.begin(30, 11, 10, Serial1 );
12、设置传感器的参数
Serial.println("Init sensor");
aqualaboModbusSensors.initSensor();
Serial.println("Ready... ");
}
13、从传感器的读数开始
void loop() {
aqualaboModbusSensors.read();
14、将变量分配给摄氏度
Serial.print("Temperature: ");
Serial.println(aqualaboModbusSensors.sensorC4E.temperature, 2);
15、将电导率变量指定为 μS/cm
Serial.print("Conductivity: ");
Serial.println(aqualaboModbusSensors.sensorC4E.conductivity, 2);
16、将数据发送到物联网
if(millis() - previousMillis > interval) {
previousMillis = millis();
Serial.print("Sending: ");
printVariables();
lora.sendUplink((char *)lpp.getBuffer(), lpp.getSize(), 0, 1);
}
recvStatus = lora.readData(outStr);
if(recvStatus) {
Serial.println("Received: ");
Serial.println(outStr);
}
lora.update();
}
17、在事物网络中打印变量
void printVariables()
{
lpp.reset();
int sensorValue = aqualaboModbusSensors.sensorC4E.conductivity;
Serial.print(F("conductivity="));
Serial.print(sensorValue, 2);
lpp.addBarometricPressure(1, sensorValue);
int temp = aqualaboModbusSensors.sensorC4E.temperature;
Serial.print(F(", Tempetarure="));
Serial.print(temp, 2);
lpp.addTemperature(2, temp);
}
与 Ubidots 的联系
要将我们的设备连接到可视化应用程序,例如 Ubidots,我们需要进入任务栏中的“集成”部分。
添加设备的集成:
开始集成时,将显示一个应用程序列表,我们必须在其中查找 Ubidots 中的应用程序。
选择我们的应用程序时,它会要求我们提供令牌、访问密钥和标识符,用于在 Ubidots 中识别设备。
我们的标识符必须是您的设备或应用程序位于 Ubidots 中的标识符。
访问密钥是默认的
将在 API 凭证部分的 Ubidots 配置文件中找到此令牌
打开此部分时,我们所要做的就是复制我们的令牌编号并将其粘贴到 The Things Network 中。
集成完成后,我们将能够在设备描述中看到 Ubidots 徽标
之后,我们可以在 Ubidots 的设备部分看到我们组件的名称
现在我们将转到数据部分,我们将在其中选择仪表板,在本部分中,我们将能够自定义样本和处理从我们的传感器获得的数据。
添加小部件以查看我们的数据时,它会向我们显示大量选项,以便能够可视化我们设备的行为。
选择小部件后,我们将必须添加变量,在这种情况下,将根据我们选择的通道显示温度和电导率。
选择变量后,我们必须为小部件添加一个名称,在这种情况下,它们已根据变量命名。
保存 Widget 后,我们将能够以完全个性化的方式观察传感器的变化。
只需与我们的串行监视器和丁字裤网络进行比较,即可验证数据是否相同。
基于Arduino的温控风扇
2021-07-06
如何将超声波传感器与 Arduino 连接
2021-07-02
基于esp8266的便携式无线PM2.5检测电路设计
2020-02-07
基于MEMS的惯性测量装置 (IMU) 检测电路设计
2020-02-06
硬实力,游戏机自己做,十个经典游戏机方案合集
2020-08-24
如何将按钮与 Arduino 连接起?
2021-07-13
基于树莓派和Arduino打造的PLC EtherCAT电路设计
2020-02-25
入门指南:TFT彩色显示屏,带Arduino和ESP8266
2020-04-23
Arduino最小系统板设计PCB板及原理图
2020-01-17
带有Arduino和ESP32的实时时钟
2020-04-17
讨论