TEL0115 LoRa无线通信模块 - 868MHZ

简介

LoRa Radio Module-868MHZ是一款体积小、微功率、低功耗、高性能、远距离的无线数据传输模块。具备内部自动扩频计算和前导 CRC 纠错处理能力。使用时,不改变用户的任何数据和协议,采用半双工通讯,实现串口无线数据收发传输的功能。 模块采用的是基于扩频跳频技术,在稳定性、抗干扰能力以及接收灵敏度上都超越其他类型的模块。模块使用的是低功耗高速处理器,在数据处理能力、运算速度方面均比以往有所提高。模块支持普通透明传输方式,不改变用户数据和协议,便可以使用,所发数据即所收数据;也可以建立一对多的星型网络通讯结构,中心模块通过相应节点模块的地址呼叫节点模块,节点模块通过透传方式作出应答,节点之间不会相互干扰,影响数据传输,非常适合无线水表、气表、传感器测量、监测等低功耗数据传输的应用环境。模块间的通信距离3到5千米,通信范围广,若再加入中继模块提供中继路由,可有效扩大通讯范围,在距离上足可覆盖许多应用网络。用户还可以通过上位机软件或用 AT 命令根据实际需求灵活配置模块的网络ID、工作频率、串口速率、扩频因子、扩频带宽等参数,操作简单,使用方便。模块主要应用在传感网络、无线抄表、智能家居等领域。

注意事项: 在同一网络中,模块的无线信号参数都应设置为相同参数,避免因模块之间信号参数不一致导致不能通信。

技术规格

引脚说明

:LoRa Radio Module-433MHZ
标号 名称 功能描述
1 GND 电源地(与用户设备共地)
2 VCC 2.1~3.6V(电池供电) 或者 4.5~5.5V
3 EN 低电平工作,高电平休眠
4 RXD 数据输入,接用户的 TXD
5 TXD 数据输出,接用户的 RXD
6 AUX 通讯状态指示,可用于唤醒用户设备
7 SET 低电平进入快速通道,在中心-节点模式下有效

表名

EN、RXD、TXD、AUX、SET这几个脚都是 3.3V 电平,如果用户是 5V 的MCU,为了稳定,建议做电平转换,否则容易丢包或者误码率高。

使用教程

此教程实现功能是无线模块调试,步骤如下:

注:下图标号和以下标号相对应。

示例图

准备

配置

主模块(Master)中心模式设置

从模块(Slave)节点模式设置

说明

JXYL-参数配置软件说明

串口软件说明

接线图

LoRa Radio Module-868MHZ使用电路连接图

样例代码

[https://pan.baidu.com/s/1o7QqV2q/请先下载Gravity LCD1602 RGB Backlight Module库]

|


主模块(Master)代码程序

/*!
 * @file Master.ino
 * @brief LoRa Radio Module-868MHZ.
 * @n [Get the module here]()
 * @n This example is a Master of the application.
 * @n [Connection and Diagram](https://wiki.dfrobot.com.cn/index.php?title=(SKU:TEL0115)LoRa_Radio_Module-868MHZ)
 *
 * @copyright  [DFRobot](https://www.dfrobot.com), 2016
 * @copyright GNU Lesser General Public License
 *
 * @author [lijun](ju.li@dfrobot.com)
 * @version  V1.0
 * @date  2017-01-20
 */

#include <Wire.h>
#include "DFRobot_RGBLCD.h"
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
DFRobot_RGBLCD lcd(0x7c >> 1, 0xc0 >> 1, 16, 2); //parameter1:LCD address; parameter2:RGB address; 16 characters and 2 lines of show


const char EN = 4;  //
const char AUX = 5; //


unsigned int buffer_RTT[64] = {}; //


void setup()
{
  pinMode(EN, OUTPUT);
  //pinMode(AUX, INPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
  lcd.init();
  digitalWrite(EN, LOW);    //低电平无线模块工作,高电平模块休�
}

void loop()
{
  while (Serial.available() < 1); //等待PC串口数据
  while (Serial.available() > 0)
  {
    char data;
    data = Serial.read();
    delay(2);
    mySerial.write(data);  //转发串口数据给无线模块
  }
  Serial.flush();
  mySerial.flush();
  while (mySerial.available() < 1);  //等待无线模块数据
  while (mySerial.available() > 0)
  {
    char data;
    for (int i = 0; i < 64; i++)
    {
      data = mySerial.read();
      buffer_RTT[i] = (char)data;  //接收无线模块数据
      Serial.write(data);  //转发无线模块数据给串口
      delay(2);
    }
    mySerial.flush();

  }

  lcd.setCursor(0, 0 );
  for (int i = 0; i < 16; i++) lcd.write(buffer_RTT[i]);  //显示前32个接收的数据
  lcd.setCursor(0, 1 );
  for (int i = 16; i < 32; i++) lcd.write(buffer_RTT[i]);  //
  delay(1000);
}

|}

|


从模块(Slave)代码程序

/*!
 * @file Slave.ino
 * @brief LoRa Radio Module-868MHZ.
 * @n [Get the module here]()
 * @n This example is a Slave of the application.
 * @n [Connection and Diagram](https://wiki.dfrobot.com.cn/index.php?title=(SKU:TEL0115)LoRa_Radio_Module-868MHZ)
 *
 * @copyright  [DFRobot](https://www.dfrobot.com), 2016
 * @copyright GNU Lesser General Public License
 *
 * @author [lijun](ju.li@dfrobot.com)
 * @version  V1.0
 * @date  2017-01-20
 */

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX



const char EN = 4;  //
const char AUX = 5; //
const char LED = 13; //


unsigned int buffer_receive[40] = {};
unsigned int buffer_RTT[40] = {};
int flag = HIGH;

void setup()
{
  pinMode(EN, OUTPUT); //
  pinMode(AUX, INPUT); //
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  mySerial.begin(9600);

}

void loop()
{
  digitalWrite(EN, HIGH);  //低电平无线模块工作,高电平模块休�
  while (digitalRead(AUX) != 0);  //检测是否接收到信息,并输出低电平给单片机,用于唤醒无线模块
  digitalWrite(EN, LOW);  //
  while (mySerial.available() < 1);  //等待接收无线数据
  while (mySerial.available() > 0)
  {
    char data;
    for (int i = 0; i < 40; i++)
    {
      data = mySerial.read();
      buffer_RTT[i] = (char)data;  //接收无线数据
      delay(2);
    }
    mySerial.flush();
  }

  while (buffer_RTT[0] == 0x11 && buffer_RTT[1] == 0x22) //判断数据命令是否符合
  {
    digitalWrite(EN, LOW);  //
    digitalWrite(LED, flag);
    flag = !flag;
    Serial.print('!');  //发送!给PC串口
    delay(2);
    while (Serial.available() < 1);  //等待PC串口数据
    while (Serial.available() > 0)
    {
      char data;
      data = Serial.read();
      delay(2);
      mySerial.write(data);  //转发串口数据给无线模块
    }
    Serial.flush();
    mySerial.flush();
    buffer_RTT[40] = {0};
    break;
  }
}

|}

结果

在LCD1602显示屏和串口上显示 DFRobot和www.dfrobot.com

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png [Link DFRobot商城购买链接]