arduino lora通讯_智能酒桶-arduino+lora通信

本文介绍了使用Arduino和LoRa模块建立通信的过程,包括模块初始化、接线、编写通信代码以及测试阶段的详细步骤。在测试中发现,100ms时数据可能出现错乱,而500ms时通信较为稳定,有效距离可达1-2KM。接下来计划利用树莓派开发中继器以增强通信范围和稳定性。
摘要由CSDN通过智能技术生成

购买的模块终于到齐了,来个接线图:

第一步:通过官方工具,将lora模块进行初始化,注意一定要选定点传输方式,我一开始不知道在这里搞了好久。第一个模块设置地址为1,这个模块到时接树莓派,第二个模块设置地址为2,接到arduino上。

第二步:接线,这步要注意,lora模块有m0,m1两根针,用来控制模式的,如果不用,一定要接地,这里我也尝试了好久。

第三步:编写通信代码,我要实现一个简单的功能,01模块向02模块发送一个指令,arduino验证指令完整后向01模块响应。多话不说,直接上代码:

#include

SoftwareSerial rolaSerial(2, 3); // 电流表数据通讯TTL RX, TX

String cmdBuffer = ""; // 命令缓存

int loggerLevel = 1; // 日志级别

char szTmp[3]; // 串口读取

unsigned char channel = 0x04; // 信道

void setup() {

Serial.begin(9600);

rolaSerial.begin(9600);

pinMode(LED_BUILTIN, OUTPUT);

}

void loop() {

// 读取串口指令到buffer

if(rolaSerial.available() > 0) {

digitalWrite(LED_BUILTIN, HIGH);

}

while (rolaSerial.available() > 0)

{

sprintf( szTmp, "%02X", (unsigned char) rolaSerial.read() );

cmdBuffer += szTmp;

delay(2);

}

digitalWrite(LED_BUILTIN, LOW);

if(cmdBuffer.length() > 0) {

parseBuffer();

}

}

void parseBuffer() {

// 长度超过2048,清空

if(cmdBuffer.length() > 2048) {

cmdBuffer = "";

logger("size out 2048");

return;

}

// 查找AA333380

int start = cmdBuffer.indexOf("AA333380");

if(start > 0) {

cmdBuffer = cmdBuffer.substring(start);

} else if(start == -1) {

return;

}

// 查找FCFF

String temp = "";

int end = cmdBuffer.indexOf("FCFF");

if(end != -1) {

temp = cmdBuffer.substring(0, end + 4);

cmdBuffer = cmdBuffer.substring(end + 4);

sendReturn();

}

String cmdstr = temp.substring(8, 12);

String data = temp.substring(12, temp.length() - 4);

if(cmdstr.equals("0001")) {

logger(data);

}

}

// 收到信息号响应

void sendReturn() {

unsigned char dest[11] = {0x00, 0x01, channel, 0xBB, 0x66, 0x66, 0x80, 0xFF, 0xFF, 0xFc, 0xFF};

rolaSerial.write(dest, 11);

}

void logger(String str) {

if(loggerLevel) {

Serial.println(str);

}

}

第四步:测试

连通性测试,发送一条,响应一条

压力测试:

定时发送设置为100,200,300,400,在100ms情况下,模块接收到数据错乱。300以后正常,但偶尔发生不回复的情况,500ms较为稳定。

因为lora模块是通过无线电来传输的,首先,传输的数据不能太多。第二,需要一点时间。所

以确定500ms为一次通信较为稳定。

距离与稳定性测试:

官方数据说在3KM之内通信,我测试了在1-2KM,是正常的,再远没测试过了。电梯内也可以正常收发,在电梯运动时会偶尔收发失败。

lora通信基本测试成功,下一步使用树莓派开发中继器

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值