LoRa点对点通信与控制
Posted 程序小鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LoRa点对点通信与控制相关的知识,希望对你有一定的参考价值。
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)的初始界面代码
- 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);
- 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通讯与控制资源下载
以上是关于LoRa点对点通信与控制的主要内容,如果未能解决你的问题,请参考以下文章