LoRa模块一对多通信

实验简介

基于sx1268芯片封装的lora模块,实现一个模块发送,其他模块接收的功能,用stm32单片机发送数据,电脑的串口调试助手显示接收的数据。

实验框图

硬件环境

  1. 3个LoRa模块
  2. 2个USB转TTL模块
  3. 2台上位机
  4. 视情况准备胶棒天线
  5. 1台stm32单片机
  6. 若干杜邦线

软件环境

  1. 串口调试助手
  2. LoRa模块厂家提供的配置软件
  3. CH340驱动

模块简介(具体参考厂家提供的开发手册)

本次实验我所使用的LoRa模块是成都亿佰特电子科技有限公司提供的E22-400T30D,理想情况下最远通信距离可达10km。

模块引脚图
引脚序号引脚名称引脚方向引脚用途
1M0输入(极弱上拉)和M1配合,决定模块的4种工作模式
2M1输入(极弱上拉)和M0配合,决定模块的4种工作模式
3RXD输入TTL串口输入,连接到外部TXD输出引脚
4TXD输出TTL串口输出,连接到外部RXD输出引脚
5AUX输出用于指示模块工作状态,用户唤醒外部MCU,上电自检初始化期间输出低电平
6VCC输入模块电压正参考,电压范围3.3V~5.5V DC
7GND输入模块接地
引脚功能表

模块功能

定点发送
广播发送

定点发送需要地址和信道相匹配时接收模块才能接收到数据,广播发送只需要信道匹配就能接收到数据。

实验步骤

  1.安装CH340驱动
    网上有很多教程
  2.确定LoRa模块的工作模式

模式(0-3)M0M1模式介绍备注
0 传输模式00串口打开,无线打开,透明传输支持特殊指令空中配置
1 WOR模式01可以定义为WOR发送方和WOR接收方支持空中唤醒
2 配置模式10用户可通过串口对寄存器进行访问,从而控制模块工作状态
3 深度休眠11模块进入休眠
工作模式表

    本实验所有模块都用广播地址0xFFFF,模块处于广播地址时同时也作监听功能,也就是模块发送时作广播,接收时作监听,这样就能实现一个模块发送其他模块都能接收到数据的功能

  3.配置LoRa模块
    (1)硬件连接
    用厂家提供的LoRa模块测试套件,将左上角的跳线帽取下可进入配置模式


    或者使用CH340转TTL模块


    M0、M1悬空状态下为高电平,因此配置模式中M1脚悬空,只需将M0接低电平。

    (2)软件配置




    第三步的模块地址需要注意,填写的时候是写入十进制的数字,广播地址为0xFFFF,转换为十进制为65535,频率信道类似。

  4.通信测试
    实验中stm32作发送端,两台上位机作接收端。由于lora模块输出的是ttl电平的串口数据,可以不经过电平转换模块直接和stm32 uart的引脚通信。

LoRa模块与stm32连接图

    我所使用的stm32开发板是正点原子的战舰V3,厂商提供了usart1的printf函数,也就是串口发送数据的函数。
    可以稍微修改《实验3 按键输入》中main.c的代码,将不同按键改为发送不同的字符。

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "beep.h"
#include "usart.h"
 
/************************************************
 ALIENTEK战舰STM32开发板实验3
 按键输入实验  
 技术支持:www.openedv.com
 淘宝店铺:http://eboard.taobao.com 
 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
 广州市星翼电子科技有限公司  
 作者:正点原子 @ALIENTEK
************************************************/


 int main(void)
 {
 	vu8 key=0;	
	delay_init();	    	 //延时函数初始化	  
 	LED_Init();			     //LED端口初始化
	KEY_Init();              //初始化与按键连接的硬件接口
	BEEP_Init();         	//初始化蜂鸣器端口
	uart_init(9600);		//初始化串口波特率为9600
	LED0=0;					//先点亮红灯
	while(1)
	{
 		key=KEY_Scan(0);	//得到键值
	   	if(key)
		{						   
			switch(key)
			{				 
				case WKUP_PRES:	//控制蜂鸣器
					BEEP=!BEEP;
					break;
				case KEY2_PRES:
					printf("Thank you very much!\r\n");
					break;
				case KEY1_PRES:
					printf("How are you Indian Mi fans\r\n");
					break;
				case KEY0_PRES: 
					printf("Thank you!Are you ok?\r\n");
					break;
			}
		}else delay_ms(10); 
	}	 
}

    此外再打开两台上位机,提前安好CH340驱动,需要先控制LoRa模块M0和M1引脚的电平,确定工作在传输模式。


    重新将跳线帽插上,或者在M1和GND之间再接一条线。


    将连好LoRa模块的USB转TTL模块插入上位机USB接口,打开串口调试助手,波特率设置为9600。


实验结果

在单片机上依次按下key0,key1,key2,得到的结果如下


两台上位机准确显示发送的数据。
  • 16
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫卡的小星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值