简介
LoRa MESH Radio 是一款分布式无线通信模块,支持MESH组网,工作在433M免费频段,采用最新的扩频跳频技术,内部进行自动扩频计算和前导CRC纠错处理。标准发射功率最大为100mW(20dBm),发射电流瞬间<120mA,接收电流为<18mA,工作电压范围 3.3v~5v;模块的射频芯片基于扩频跳频技术,在稳定性、抗干扰能力以及接收灵敏度上都超越现有的GFSK模块。
MESH 是分布式的对等网状网络,能够充分利用网络中的路由冗余,具有优异的网络自愈性、稳定性和极佳的数据吞吐量,其组网耗时很短,所有的设备上电即工作,支持7级路由,网络覆盖范围达到7公里以上。物理层采用了很多先进的无线通信技术如跳频、自适应速率、安全可靠的全网自组网技术、交织纠错编码等;链路层采用智能的碰撞避免算法,具有优异的抗干扰能力。
模块主要应用在自组网领域如传感网络、无线抄表、智能家居等领域,具有明显的技术优势和价格优势。比如,无线抄表方案,可以仅需要发送一条广播报文就可以在很短时间之内实现全网仪表的集抄,不需要对单个仪表进行一一抄读,大大节省了抄读的时间。
注意事项:在同一网络中,模块的无线信号参数都应设置为相同参数,避免因模块之间信号参数不一致导致不能通信的情况出现。
技术规格
- 工作电压:3.3 - 5.0V
- 载波频段:410~480MHz,433MHz(典型值)
- 输出功率:≤20dBm
- 通信距离:1500~2500米(开阔空旷地带)
- 接收灵敏度:-148dBm,-132dBm(典型值)
- 发射电流:≤100mA
- 待机电流:≤20mA,18mA(典型值)
- 调制速率:2.4~115.2 Kbps
- 通信接口:TTL串口通信
- 串口速率:1200~115200,9600bps(默认)
- 工作温度:-40°C - + 85°C
- 产品尺寸:34.2*18.4 mm /1.35*0.72 inches
引脚说明
:[[File:WL800T.png|LoRa MESH Radio Module-433MHZ ]] |
标号 | 名称 | 功能描述 |
1 | GND | 电源地(与用户设备共地) |
2 | VCC | 3.3~5V |
3 | EN | 无需连接 |
4 | RXD | UART 输入,3.3TTL |
5 | TXD | UART 输出,3.3TTL |
6 | AUX | 无需连接 |
7 | SET | 高电平时,修改的参数有效,掉电不恢复;低电平时,参数掉电恢复 |
引脚说明
使用教程
此教程实现功能是无线模块调试,步骤如下:
注:下图标号和以下标号相对应。
- ①通过电脑主机向主模块发送数据;
- ②通过主模块向从模块发送数据;
- ③从模块接收到数据后,并上传指示数据给连接从模块的电脑;
- ④当电脑接收到的数据后,从模块端电脑通过串口软件给从模块发送一组数据;
- ⑤从模块将接收到的数据传输给无线主模块;
- ⑥主模块接收到数据后,将数据显示在1602显示屏上。
- 主模块(Master):连接有Gravity LCD1602 RGB Backlight Module模块的系统
- 从模块(Slave):未连接有Gravity LCD1602 RGB Backlight Module模块的系统
准备
- 硬件
- 2 x Arduino UNO控制板
- 2 x LoRa MESH Radio Module-433MHZ模块
- 若干 杜邦线
- 1 x Gravity LCD1602 RGB Backlight Module模块
- 1 x FT232 USB转TTL 串口线
- 2 x USB线
- 软件
- Arduino IDE, 点击下载Arduino IDE
- MESH自组网模块配置测试软件,点击下载MESH自组网模块配置测试软件
配置
- 使用USB转TTL 串口线,连接好LoRa MESH Radio Module-433MHZ模块,且将SET引脚拉高。
- 准备好后,打开MESH自组网模块配置测试软件,波特率选择9600bps,读取模块信息,可对模块如上图进行参数选择,设置该模块设备类型为主模块(Master)模式,地址为0007。
- 设置好上一个模块后,重新设置一个未设置的模块,将串口线以及SET引脚连接好后,改变设备类型为从模块(Slave)模式,地址为0006,其它参数与之前设置的模块一致,否则无法通信。
- LoRa MESH Radio Module-433MHZ模块的数据发送可以使用MESH自组网模块配置测试软件,图中的目标地址填写自己设置的地址,示例使用的是主模块(Master)0007,从模块(Slave)0006。数据长度下方的框中填写要发送的数据。
说明
- 上述设置完成后,根据电路连接图,连接电路,且分别下载样例代码,有LCD1602显示屏的下载主模块(Master)代码程序;另一个下载从模块(Slave)代码程序。
- 使用MESH自组网模块配置测试软件,上电后,打开两个串口软件,分别对应主模块(Master)和从模块(Slave)
主模块(Master):在目标地址填写0006,发送数据框中填写22 11
从模块(Slave):在目标地址填写0007,发送数据框中填写20 20 20 20 20 44 46 52 6f 62 6f 74 20 20 20 20 77 77 77 2E 64 66 72 6f 62 6f 74 2E 63 6F 6D 20
主模块串口软件端点击发送,从模块收到数据后01,从模块串口软件端点击发送,LCD1602屏上会显示显示DFRobot和https://www.dfrobot.com
- 使用串口软件,上电后,打开两个串口软件,分别对应主模块(Master)和从模块(Slave),发送和显示都选择16进制,发送下列数据指令
通过主模块(Master)串口软件端发送指令:05 00 01 08 06 00 00 07 01 02 22 11 3d
从模块(Slave)串口软件端接收到16进制的 01 数据后,通过串口软件从模块(Slave)端发送指令:05 00 01 26 07 00 00 07 01 20 20 20 20 20 20 44 46 52 6f 62 6f 74 20 20 20 20 77 77 77 2e 64 66 72 6f 62 6f 74 2e 63 6f 6d 20 35
LCD1602屏上会显示显示DFRobot和https://www.dfrobot.com
注意:
1.如果主模块发送后,主模块和从模块没有收到01以及从设备的arduino板上LED灯未亮,则复位主模块设备和从模块设备。
2.MESH自组网模块配置测试软件能够自动组织命令,只需填写需要发送的数据便可,格式为16进制;使用串口软件,需要自己去搭配指令和数据以及校验位。
接线图
[[[File:800Nlianjietu.png|LoRa](File:800Nlianjietu.png%7CLoRa) MESH Radio Module-433MHZ使用电路连接图
]]
样例代码
[https://pan.baidu.com/s/1o7QqV2q/请先下载Gravity LCD1602 RGB Backlight Module库]
|
主模块(Master)代码程序
/*!
* @file Master.ino
* @brief LoRa MESH Radio Module-433MHZ.
* @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:TEL0114)LoRa_MESH_Radio_Module-433MHZ)
*
* @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-17
*/
#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 SET = 6; //改变参数时置高
const char led = 13;
unsigned char buffer_RTT[64] = {}; //接收无线数据
unsigned char buffer_RVC[64] = {0}; //接收串口数据
int k = 0;
void setup()
{
Serial.begin(9600); //打开PC端串口
mySerial.begin(9600);//打开与无线模块连接串口
lcd.init();
pinMode(led, OUTPUT);
pinMode(SET, OUTPUT); //改变参数时需要置高才能保存改变的参数
}
void loop()
{
k = 0;
while (Serial.available() < 1); //等待串口指令
while (Serial.available() > 0)
{
char data;
data = Serial.read();
delay(2);
buffer_RVC[k] = (char)data;
k++;
Serial.flush();
}
//for (int i = 0; i < k; i++) Serial.write(buffer_RVC[i]); //
while ( buffer_RVC[0] == 0x05 && buffer_RVC[2] == 0x01 ) //判断接收的指令是否为发送指令
{
for (int i = 0; i < k; i++) mySerial.write(buffer_RVC[i]); //无线主模块发送数据(即无线主模块向从模块发送数据)
digitalWrite(led, HIGH); //led灯亮
while (mySerial.available() < 1); //等待无线主模块返回应答
while (mySerial.available() > 0)
{
char data;
for (int j = 0; j < 64; j++)
{
data = mySerial.read();
buffer_RTT[j] = (char)data;
delay(2);
}
mySerial.flush();
while (mySerial.available() < 1); //等待其它从模块应答的数据
while (mySerial.available() > 0)
{
char data;
for (int j = 0; j < 64; j++)
{
data = mySerial.read();
buffer_RTT[j] = (char)data;
delay(2);
}
mySerial.flush();
}
}
break;
}
digitalWrite(led, LOW);//led灭
lcd.setCursor(0, 0 );
for (int j = 8; j < 24; j++) lcd.write(buffer_RTT[j]); //显示接收的到的数据(LCD1602只能显示32个数据)
lcd.setCursor(0, 1 );
for (int j = 24; j < 40; j++) lcd.write(buffer_RTT[j]); //显示接收的到的数据(LCD1602只能显示32个数据)
delay(1000);
}
|}
|
从模块(Slave)代码程序
/*!
* @file Slave.ino
* @brief LoRa MESH Radio Module-433MHZ.
* @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:TEL0114)LoRa_MESH_Radio_Module-433MHZ)
*
* @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-17
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
const char SET = 6; //
const char led = 13;
int flag = HIGH;
unsigned char buffer_RTT[64] = {}; //接收无线数据
void setup()
{
Serial.begin(9600);//打开PC端串口
mySerial.begin(9600); //打开与无线模块连接串口
pinMode(led, OUTPUT);
pinMode(SET, OUTPUT);//改变参数时需要置高才能保存改变的参数
}
void loop()
{
while (mySerial.available() < 1); //等待接收主模块发送的数据
while (mySerial.available() > 0)
{
char data;
for (int j = 0; j < 64; j++)
{
data = mySerial.read();
delay(1);
buffer_RTT[j] = (char)data;
}
mySerial.flush();
}
while ( buffer_RTT[8] == 0x22 && buffer_RTT[9] == 0x11 ) //判断数据中的命令
{
digitalWrite(led, HIGH);
Serial.write(0x01); //向PC串口发送01
delay(1);
while (Serial.available() < 1); //等待PC串口发送数据
while (Serial.available() > 0)
{
char data;
data = Serial.read();
//delay(10);
mySerial.write(data); //向无线从模块发送数据(即从模块向主模块发送数据)
}
Serial.flush();
mySerial.flush();
digitalWrite(led, LOW);
buffer_RTT[64] = {0};
break;
}
}
|}
结果
- 在Gravity LCD1602 RGB Backlight Module屏上显示DFRobot和https://www.dfrobot.com
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |
更多
[Link DFRobot商城购买链接]