基于野火stm32f103mini开发板的Lora模块通信

            ############在其它地方引用或转载请标明本文网址出处########

1.硬件:

野火f103mini开发板

lora模块(正点原子ATK-LORA-V3.0)两个

USB转ttl线一条

dht11温度湿度传感器一个

ps:由于野火的mini开发板和正点原子的略有不同,移植时原子的例程程序是无法使用的,原子的例程里使用了lcd屏因此还需要附带设置flash,sd卡等。由于

lcd是引脚大户而野火和原子的stm32的lcd所接的引脚不同,修改起来工作量很大。便删除了液晶屏以及相关程序,使用串口来输出显示发送和接收的内容。

2.硬件接线:

1.连接开发板的lora:MD0接PB8,AUX接PB9,RXD接PB10,TXD接PB11,gnd接地,vcc接5v

2.连接ttl的lora:MD0接地,AUX接地,RXD接usb转ttl线的TXD,TXD接usb转ttl线的RXD,gnd接地,vcc接5v。

3.dht11与板子的连接方式看下图

3.执行过程图片以及视频

 1.单电脑双usb口。单片机上的lora和usb转ttl的lora分别插在电脑上的两个不同的usb口,一个lora发送一个lora接受

测试时可以看见com5和com3两个口都接收到了传输的温度湿度数据

完整视频见https://www.bilibili.com/video/BV1E54y117RG?p=1

2.双电脑。单片机上的lora和usb转ttl的lora分别插在不同的两台电脑上

可以看见两台不同的电脑的串口助手上都显示出了测得的温湿度。

 完整视频见https://www.bilibili.com/video/BV1bp4y1e7kd?p=2

LoRa的是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。

传输距离:城镇可达2-5 Km , 郊区可达15 Km 。一个LoRa网关可以连接上千上万个LoRa节点。

程序简要介绍:

int main(void)
 { 
     DHT11_Data_TypeDef DHT11_Data;
     
     unsigned char temp1[2]={0};
   unsigned char hum1[2]={0};
     u8 temperature=0;          
      u8 humidity=0;
     SystemInit();                                                                           
     SysTick_Init();                                     //系统时钟初始化
     delay_init();                                             //延时函数初始化  
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);       //中断优先级分组2                             
     LED_Init();                                                   //ledgpio初始化
     KEY_Init();                                           //按键gpio初始化
 DHT11_Init ();                                            //温湿度传感器初始化
  uart1config();                                           //usart1串口初始化
     LoRa_Init();                                          //LoRa模块初始化
     usart3_init(115200);                                     //usart3串口初始化 
     LoRa_Set();                                           //进行Lora配置,地址,信道,速率等参数
    
     delay_ms(1000);                                       //延时1s
    
    while(1)
    {
        if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)            //读取温湿度传感器成功时,DHT11_Data.humi_int存放湿度的整数部分DHT11_Data.temp_deci存放温度的小数部分
            {                                                                 //DHT11_Data.humi_deci存放湿度的小数部分DHT11_Data.temp_int存放温度的整数部分
                printf("\r\n读取DHT11成功,湿度为%d.%dRH,温度为%d.%d℃\r\n",
                DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
                temp1[0]=DHT11_Data.temp_int;
                hum1[0]=DHT11_Data.humi_int;
                hum1[1]=DHT11_Data.humi_deci;
                temp1[1]=DHT11_Data.temp_deci;
                u8 sendbuff[20];
    LORA_MD0=0;
    sprintf((char*)sendbuff,"\r\n读取DHT11成功,湿度为%d.%dRH,温度为%d.%d℃\r\n",
        DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);      //将温湿度等数据写入sendbuff并发送
    lorasend(sendbuff);
    delay_ms(20000); 
            }            
            else
            {
                printf("Read DHT11 ERROR!\r\n");
                    
            }
}

}

 完整程序文件下载地址:

Bothie-Zhang/My_lora_test (github.com)

 

posted @ 2020-09-12 21:36  克莱比-Kirby  阅读(1811)  评论(0)    收藏  举报