在线时间623 小时
UID3038648
ST金币0
蝴蝶豆287
注册时间2017-5-9
论坛元老
- 最后登录
- 2020-11-20
|
a0a.1 32b0c
本帖最后由 す疯Ⅱ恒す 于 2018-5-1 22:18 编辑
接上篇。【LoRa模块测评】-串口助手实现双机通信
本篇主要完成两个STM32开发板通过LoRa模块进行双向通信,开发板1:STM32F0308-DISCOVERY;开发板2:NULCLEO-F302R8;
主要实现功能:按开发板1上的B1按键,可以向开发板2发送操作命令,控制开发板2上LED灯的开关或闪烁。同样,按开发板2的B1按键亦可控制开发板1上LED灯的开关或闪烁。通过LoRa模块进行双向通信。
由之前的测评我们知道,模块之间实现通信的方式有好几种,这里我们使用点对点的方式,即把地址都设置为0x0000,信道是0x17,即433Mhz,选用模式0透传模式。配置好之后连接到开发板上去。
LoRa模块我们需要用串口通信,同时需要控制M0,M1引脚,直接接到IO即可,暂时没用到LoRa模块唤醒主机的功能,不接即可。最后接上GND与3.3V电源。
硬件连接:
开发板1 STM32F030R8:
M0: PB4 M1: PB5 串口使用usart1,PB6 PB7
按键B1:PA0(按键另一端连接到VDD,所以IO需要配置下来输入) 绿LED:PC9
开发板2 STM32F302R8:
M0: PD2 M1: PC12 串口使用usart3,PC10 PC11
按键B1:PC13(上拉输入) 绿LED:PB13
串口配置为9600波特率,中断接收串口数据。
主要程序(两个开发板的应用程序都是一样的,只是底层不一样):
- void LoRa_Func(void)
- {
- if ( Get_Key())
- {
- SendKeyValue %= 3;
- SendKeyValue ++;
- LoRa_SendData(1, &SendKeyValue);
- }
- if ( *lora.reccnt != 0)
- {
- switch ( lora.buf[0] )
- {
- case 0x01 :
- LedFlag = 0;
- Set_LedGreen();
- break;
-
- case 0x02 :
- LedFlag = 0;
- Reset_LedGreen();
- break;
- case 0x03 :
- LedFlag = 1;
- break;
- default:
- break;
- }
- *lora.reccnt = 0;
- }
- }
复制代码 通过按按键,发命令代码到对面板,命令代码为01-03,轮流发送。开发板收到01打开LED,收到02关闭LED,收到03闪烁LED(500ms一次)。
实验现象:按开发板1的按键一下,开发板2的LED点亮;再按开发板1的按键,开发板2LED灭;再按开发板1的按键,开发板2的LED开始闪烁。同样操作开发板2的按键,开发板1的LED也能得到同样的效果。
至此,STM32通过LoRa模块实现双机通信成功。附上代码。
|
-
-
7.5 MB, 下载次数: 2643, 下载积分: ST金币 -1
-
-
16.27 MB, 下载次数: 452, 下载积分: ST金币 -1
|