LoRa点对点通信与控制

Posted 程序小鹿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LoRa点对点通信与控制相关的知识,希望对你有一定的参考价值。

一、LoRa点对点通信与控制实现效果

LoRa通信与控制

二、LoRa通信与控制的要求

  • (1)根据竞赛提供的频率信息配置LoRa频率;
  • (2)设备上电,默认情况下两个LoRa模块上的LED1和LED2灯都是熄灭的,且显示如下图
  • (3)每按一次Key2键可以控制LoRa(A)屏幕中的小箭头以LED1开 --> LED2关
    –> LED2关 --> LED2开 --> LED1开这样的顺序循环切换小箭头指示。每按一次Key3键可以控制LoRa(A)屏幕中的小箭头以LED1开 --> LED1关 --> LED1开 --> LED2关 --> LED1开这样的顺序循环切换小箭头指示。效果如下图所示:
  • (4)当LoRa(A)中选中某个灯开或者关时,点击Key4键,可以控制LoRa(B)中对应LED1或者LED2的常亮或者熄灭。
  • (5)LoRa(B)要根据自己模块中LED1灯或LED2灯的亮起或熄灭使用不同的图片或动画来表示。

三、重点代码剖析

1、配置频率与初始化LoRa模块

#define RF_PING_PONG_FREQUENCY                      433300000 //载波频率,建议433MHz附近频率最佳

//初始化LoRa模块
NS_RadioInit( (uint32_t) RF_PING_PONG_FREQUENCY, (int8_t) TX_OUTPUT_POWER, (uint32_t) TX_TIMEOUT_VALUE, (uint32_t) RX_TIMEOUT_VALUE);

2、设备上电,LoRa(A)和LoRa(B)的初始界面代码

  1. LoRa(A)模块的代码
/**********************************************************************************************
*函数:void OLED_InitView()
*功能:Lora液晶初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void OLED_InitView(void)

  OLED_Clear();
  OLED_ShowString(0,0, (uint8_t *)" LED1:");
  OLED_ShowCHineseArray( 64, 0, kai);		//通过取模工具对“开”、“关”取模
  OLED_ShowCHineseArray( 96, 0, guan);
  OLED_ShowString(0,4, (uint8_t *)" LED2:");
  OLED_ShowCHineseArray( 64, 4, kai);
  OLED_ShowCHineseArray( 96, 4, guan);
  1. LoRa(B)模块的代码
/**********************************************************************************************
*函数:void OLED_InitView()
*功能:Lora液晶初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void OLED_InitView(void)

  OLED_Clear();
  OLED_DrawBMP(16,1,40,40,mie);
  OLED_DrawBMP(64,1,40,40,mie);
  OLED_ShowString(16,6, (uint8_t *)" LED1");
  OLED_ShowString(64,6, (uint8_t *)" LED2");
  

3、对LoRa(A)模块按键进行设计算法

-(1)Key2的按键算法:

  • (2)Key3的按键算法:

4、LoRa(A)模块的主函数参考

int main( void )

  Init();
  //初始化需要的外设
  OLED_Init();
  OLED_Clear();
  OLED_InitView();//OLED屏幕初始化信息
  keys_init();
  //LoRa模块初始化
  NS_RadioInit( (uint32_t) RF_PING_PONG_FREQUENCY, (int8_t) TX_OUTPUT_POWER, (uint32_t) TX_TIMEOUT_VALUE, (uint32_t) RX_TIMEOUT_VALUE);
    while( 1 )
    
   	key2Show();	//点击Key2键的算法
   	key3Show();	//点击Key3键的算法
   	LoRa_sendCmd();	//点击Key4键向LoRa(B)发送命令
    

5、LoRa(B)模块的主函数参考

/**
 * Main application entry point.
 */
int main( void )

    Init();
 
  //初始化需要的外设
  OLED_Init();
  OLED_Clear();
  OLED_InitView();//OLED屏幕初始化信息
  USART1_Init(115200);//串口1初始化
  uint8_t RxBuffer[16];
  //LoRa模块初始化
  NS_RadioInit( (uint32_t) RF_PING_PONG_FREQUENCY, (int8_t) TX_OUTPUT_POWER, (uint32_t) TX_TIMEOUT_VALUE, (uint32_t) RX_TIMEOUT_VALUE);
    while( 1 )
    
   	LoRa_readCmd(RxBuffer);  //接收LoRa发送的命令,并控制LED1和LED2的亮灭,控制OLED的状态显示
    

四、实验总结和重点

1、按要求配置LoRa的频率,一般在在433MHz左右;

2、汉字和小箭头的取模以及在在OLED屏特定位置的显示;

3、按下按键Key2、Key3小箭头切换选项的算法实现;

4、按下Key2和Key3不会互相影响,并实现箭头当前位置的传递;

5、LoRa(A)和LoRa(B)通信消息的加密传递,并确定LoRa(B)接收到的是LoRa(A)无线传输的信息,需进行验证(高级);

五、实现源码获取方式

以上是关于LoRa点对点通信与控制的主要内容,如果未能解决你的问题,请参考以下文章

基于HaaS100实现LoRa点对点通信

无线通信模块定点传输-点对点的具体传输应用

基于LORA的无线广域物联网应用系统设计

Objective C 和点对点通信

移动应用程序和电脑浏览器之间的点对点通信

各位,请问有没有支持CC2530的点对点通信的zigbee例程呢? 谢谢