_SKU_TEL0117_LoRa_MESH_Radio_Module 868MHZ - jimaobian/DFRobotWikiCn GitHub Wiki
[[File:产品样图.jpg|产品名称
Update/modify/delete Forbidden, 禁止更改本图,请更改图片名称,避免覆盖上�
]]
LoRa MESH Radio Module-868MHZ这款无线模块采用的是分布式MESH结构,工作频段为868Mhz,具备内部自动扩频计算和前导CRC纠错处理能力。
LoRa MESH Radio Module-868MHZ无线模块采用MESH结构,能够充分利用网络中的路由冗余,具有良好的网络自愈性、稳定性和极佳的数据吞吐量,其组网耗时很短,所有的模块上电即工作,支持7级路由数据传输,网络覆盖范围达到7公里以上。模块本身具有路由中继能力,向目标节点发送自己接收转发的信息,让信息传输的更远。该模块具备LoRa 扩频技术, TTL 接口半双工通讯,空中收 /发转换。以及有8 个辅助信道,自动跳频,有效避免相互间的系统干扰,影响数据的传输。模块具备设置模块的参数,如设置该节点作为主节点还是从节点,串口数据类型、串口波特率、发射功率、节点地址等参数。用户发送的每一帧最大数据长度为128字节,可以满足大多数的信息传输。 模块主要应用在自组网领域如传感网络、无线抄表、智能家居等领域,具有明显的技术优势和价格优势。比如,无线抄表方案,可以仅需要发送一条广播报文就可以在很短时间之内实现全网仪表的集抄,不需要对单个仪表进行一一抄读,大大节省了抄读的时间。
注意事项: 在同一网络中,模块的无线信号参数都应设置为相同参数,避免因模块之间信号参数不一致导致不能通信。
- 工作电压:3.3 - 5.0V
- 供电电压:3.3V~5.0V
- 工作频段:868MHz
- 输出功率:≤20dBm
- 接收灵敏度:-148dBm
- 发射电流:≤100mA
- 待机电流:≤20mA
- 通信接口:TTL串口通信
- 串口速率:1200~115200,9600bps(默认)
- 调制速率:2.4~115.2Kbps
- 收发转发时间:300ms
- 工作温度:-40°C - + 85°C
- 产品尺寸:34.2*18.4 mm
:[[File:WL800T.png|LoRa MESH Radio Module-868MHZ ]] |
标号 | 名称 | 功能描述 |
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-868MHZ模块
- 若干 杜邦线
- 1 x Gravity LCD1602 RGB Backlight Module模块
- 1 x FT232 USB转TTL 串口线
- 2 x USB线
-
软件
- Arduino IDE (根据能够使用的Arduino版本来选择,不要盲目追求最新版本), 点击下载Arduino IDE
- MESH自组网模块配置测试软件,点击下载MESH自组网模块配置测试软件
- 使用USB转TTL 串口线,连接好LoRa MESH Radio Module-868MHZ模块,且将SET引脚拉高。
- 准备好后,打开MESH自组网模块配置测试软件,波特率选择9600bps,读取模块信息,可对模块如上图进行参数选择,设置该模块设备类型为主模块(Master)模式,地址为0007。
- 设置好上一个模块后,重新设置一个未设置的模块,将串口线以及SET引脚连接好后,改变设备类型为从模块(Slave)模式,地址为0006,其它参数与之前设置的模块一致,否则无法通信。
- LoRa MESH Radio Module-868MHZ模块的数据发送可以使用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和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和www.dfrobot.com
注意:
1.如果主模块发送后,主模块和从模块没有收到01以及从设备的arduino板上LED灯未亮,则复位主模块设备和从模块设备。
2.MESH自组网模块配置测试软件能够自动组织命令,只需填写需要发送的数据便可,格式为16进制;使用串口软件,需要自己去搭配指令和数据以及校验位。
[[File:800Nlianjietu.png|LoRa MESH Radio Module-868MHZ使用电路连接图
]]
[https://pan.baidu.com/s/1o7QqV2q/请先下载Gravity LCD1602 RGB Backlight Module库]
|
主模块(Master)代码程序
/*!
* @file Master.ino
* @brief LoRa MESH Radio Module-868MHZ.
* @n [Get the module here]()
* @n This example is a Master of the application.
* @n [Connection and Diagram](http://wiki.dfrobot.com.cn/index.php?title=(SKU:TEL0117)LoRa_MESH_Radio_Module-868MHZ)
*
* @copyright [DFRobot](http://www.dfrobot.com), 2016
* @copyright GNU Lesser General Public License
*
* @author [lijun]([email protected])
* @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-868MHZ.
* @n [Get the module here]()
* @n This example is a Slave of the application.
* @n [Connection and Diagram](http://wiki.dfrobot.com.cn/index.php?title=(SKU:TEL0117)LoRa_MESH_Radio_Module-868MHZ)
*
* @copyright [DFRobot](http://www.dfrobot.com), 2016
* @copyright GNU Lesser General Public License
*
* @author [lijun]([email protected])
* @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和www.dfrobot.com
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |
[Link DFRobot商城购买链接]