TEL0115 LoRa无线通信模块 - 868MHZ

简介

LoRa Radio Module-433MHZ是一款体积小、微功率、低功耗、高性能、远距离的LoRa扩频跳频无线通讯模块。具备内部自动扩频计算和前导 CRC 纠错处理能力。使用时,不改变用户的任何数据和协议,采用半双工通讯,实现串口无线数据收发传输的功能。 模块采用的是基于扩频跳频技术,在稳定性、抗干扰能力以及接收灵敏度上都超越其他类型的模块。

模块采用高性能M4内核ARM处理器,在数据处理能力、运算速度方面均比以往有所提高。模块支持普通透明传输方式,不改变用户数据和协议,便可以使用,所发数据即所收数据;也可以建立一对多的星型网络通讯结构,中心模块通过相应节点模块的地址呼叫节点模块,节点模块通过透传方式作出应答,节点之间不会相互干扰,影响数据传输,非常适合无线水表、气表、传感器测量、监测等低功耗数据传输的应用环境。模块间的通信距离3到5千米,通信范围广,若再加入中继模块提供中继路由,可有效扩大通讯范围,在距离上足可覆盖许多应用网络。用户还可以通过上位机软件或用 AT 命令根据实际需求灵活配置模块的网络ID、工作频率、串口速率、扩频因子、扩频带宽等参数,操作简单,使用方便。模块主要应用在传感网络、无线抄表、智能家居等领域。

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

  • 调制方式:LoRa 扩频
  • 工作频段:868MHz
  • 发射功率:22dBm(150mW/7级可调)
  • 接收灵敏度:-138dBm
  • 串口速率:1200~115200bps,9600bps(默认)
  • 串口校验:8E1、8O1、8N1 (默认8N1)
  • 工作电压:2.1~5.5V
  • 发射电流:≤125mA(发射功率22dBm)
  • 接收电流:≤12mA
  • 休眠电流:≤2.0uA
  • 唤醒时间:即时唤醒
  • 扩频因子:5-32/6-64/7-128/8-256/9-512/10-1024/11-2048/12-4096
  • 信号带宽:125KHz/250KHz/500KHz
  • 休眠时间:0.25-25S
  • 呼吸时间:2ms、4ms、8ms、16ms、32ms、64ms
  • 工作温度:-40℃~+85℃(工业级)
  • 工作湿度:10%~90%相对湿度,无冷凝

注意事项

工作电压建议在3.3V~5.5V使用,在2.1~3.2V时,模块可正常运行,但射频功率会有一定降低,影响传输距离。

尺寸信息(JX-660T)

引脚说明(YL-800T)

: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,为了稳定,建议做电平转换,否则容易丢包或者误码率高。

引脚说明(JX-660T )

序号 管脚名称 管脚定义 功能说明
1 GND 输入 电源地,与外设电源地相连
2 VCC 输入 电源VCC,2.1~5.5V
3 EN 输入 模块休眠状态唤醒,低电平有效
4 RX 输入 3.3V TTL串口数据输入,接用户TXD
5 TX 输出 3.3V TTL串口数据输出,接用户RXD
6 AUX 输出 唤醒外设,低电平有效
7 SET 输入 快速通道模式,低电平有效

使用教程

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

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

  • ①通过电脑主机向主模块发送数据;
  • ②通过主模块向从模块发送数据;
  • ③从模块接收到数据后,并上传指示数据给连接从模块的电脑;
  • ④当电脑接收到的数据后,从模块端电脑通过串口软件给从模块发送一组数据;
  • ⑤从模块将接收到的数据传输给无线主模块;
  • ⑥主模块接收到数据后,将数据显示在1602显示屏上。

示例图

  • 主模块(Master):连接有Gravity LCD1602 RGB Backlight Module模块的系统
  • 从模块(Slave):未连接有Gravity LCD1602 RGB Backlight Module模块的系统

准备

  • 硬件
    • 2 x Arduino UNO控制板
    • 2 x LoRa Radio Module-868MHZ模块
    • 2 x USB线
    • 若干 杜邦线
    • 1 x Gravity LCD1602 RGB Backlight Module模块
    • 1 x FT232 USB转TTL 串口线
  • 软件

配置(YL-800T)

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

  • 使用USB转TTL 串口线,与LoRa Radio Module-868MHZ模块连接好,且将EN引脚拉低。
  • 准备好后,打开JXYL-参数配置软件,波特率选择9600bps打开串口,点击Read All,读取模块信息。
  • 可对模块如上图进行参数选择,设置该模块RF_Mode为Central模式即中心模式,为主模块(Master),地址为0001。(示例程序配置)

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

  • 设置好上一个模块后,重新设置一个未设置的模块,将串口线以及EN引脚连接好
  • 改变模块RF_Mode为Node模式即节点模式,为从模块(Slave),地址为0010,其它参数与之前设置的模块一致,否则无法通信。(示例程序配置)

配置(JX-660T)

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

  • 使用USB转TTL 串口线,与LoRa Radio Module-433MHZ模块连接好,且将EN引脚拉低。
  • 准备好后,打开JX-660T参数配置软件,波特率选择9600bps打开串口,点击Read All,读取模块信息。
  • 可对模块如上图进行参数选择,设置该模块RF_Mode为Central模式即中心模式,为主模块(Master),地址为0001。(示例程序配置)

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

  • 设置好上一个模块后,重新设置一个未设置的模块,将串口线以及EN引脚连接好
  • 改变模块RF_Mode为Node模式即节点模式,为从模块(Slave),地址为0010,其它参数与之前设置的模块一致,否则无法通信。(示例程序配置)

配置快速验证

配置成功后,使用串口助手,主模块给从模块发送信息,能接收信息证明配置成功,否则请检查参数配置是否争取

串口软件说明

  • 上述设置完成后,根据电路连接图,连接电路,且分别下载样例代码,有LCD1602显示屏的下载主模块(Master)代码程序;另一个下载从模块(Slave)代码程序。
  • 主模块发送数据00 0A 11 22 33,其中00 0A是从节点的地址,在之后的数据为用户需要发送的数据,11 22是自定义命令,33在此处无用,(此处16进制发送)
  • 从模块收到数据后,判断前两位是否11 22,若是,向pc串口发送'!',此时可从串口发送任意数据,上述示例发送“ DFRobot www.dfrobot.com ”
  • 主模块接收到从模块的数据后,分别显示在LCD1602显示屏和串口上
  • 注:在标准—节点这种模式下,主模块在选择从模块发送数据时是需要带地址的,发送地址时需要使用十六进制,否则从模块无法接收

接线图

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商城购买链接]