LORA-B1实现点对点通信|lora代码
【LORA-B1实现点对点通信|lora代码】lot物联网小编为你整理了的相关内容,希望能为你解答。
上一节针对lora的驱动移植工作已经完成,而本节就要实现lora-b1开发板的点对点通信。一块儿板子作为发送端,另一块儿作为接收端。上电以后发送端每个500ms发送一次数据,接收端接收到以后进行解析分析如果和发送的数据一样LED进行一次亮灭切换。
开发环境准备:
硬件:
Lora-B1开发板两块(一发一收)DAPLINK(或STLINK、Jlink)调试器软件:
stm32cubemxMDK5基于上节移植好驱动的代码修改Lora参数配置:
Sx1278芯片无线通信支持lora、fsk、ook等通信模式。而我们就只讨论lora模式下的配置,而针对lora模式又有很多参数可以配置。
打开sx1276-lora.c文件,如下图所示地方就是默认的参数配置,这里一共有13个参数,而我们要修改lora模式下通信参数也是在这里修改。
这13个参数从上到下分别表示:
无线通信频率功率带宽扩频因子纠错码CRC校验开关隐藏头部信息开关接收单次模式、连续模式配置跳频模式开关跳频之间的周期长度发送包超时时间接收包超时时间负载信息长度无线通信频率,我们使用的是sx1278芯片,和sx1276芯片在频率上有区别,所以这里我们要配置在sx1278范围内的频率。可参考下图:
扩频因子可能不太好理解,可以简单的先理解为lora的一种提高传输可靠性的技术,其他参数不变的情况下扩频因子越大,传输固定量数据需要的时间越长,抗干扰性越好。相反,扩频因子越小,传输的速度快但抗干扰性会降低。
关于跳频我们本节不会使用,所以把跳频可以关掉。
还有个单次接收和连续接收的配置,我们把他修改为连续接收,也就是一直处于接收状态。在一定时间内没有收到数据也不会产生接收超时。
所以最终我们需要在默认值的基础上修改两个参数,频率改为429000000;RxSingleOn设置为0即为连续接收模式。
编写lora发送接收应用:
一上电初始化完成之后进入while循环,发送端会每500ms发送一包数据,发送完成LED闪烁一次。
接收端接收到数据以后,进行比对,如果和发送端发送的数据一样就让led闪烁一次。
代码如下:
int main(void){ /* USER CODE BEGIN 1 */uint16_t counter=0;uint8_t rbuf[10];uint16_t rlen; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_SPI1_Init(); /* USER CODE BEGIN 2 */tRadioDriver *radio;radio = RadioDriverInit( );radio->Init();radio->StartRx(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) {switch(radio->Process()){case RF_RX_DONE:radio->GetRxPacket(rbuf,&rlen);if(memcmp(rbuf,"12345",rlen)==0){HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);}break;case RF_TX_DONE:radio->StartRx();HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);break;}HAL_Delay(1);counter ;if(counter==500){if(loratx==1){radio->SetTxPacket( "12345", 5);}counter=0;} /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}实验结果:
分别把发送端程序和接收到程序烧录到两块儿LORA-B1开发板。上电可以看到两块儿板上led等都开始闪烁,当按下发送端板子复位按键停止运行时,接收端的LED也不再会闪烁。
以上内容为【LORA-B1实现点对点通信|lora代码】的相关内容,更多相关内容关注lot物联网。