毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
迪丽瓦拉
2024-05-29 02:11:21
0

基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测

  • 1、项目简介
    • 1.1 系统构成
    • 1.2 系统功能
  • 2、部分电路设计
    • 2.1 STM32F103C8T6核心系统电路设计
    • 2.2 光敏采集电路设计
    • 2.3 温度采集电路设计
  • 3、部分代码展示
    • 3.1 读取DS18B20温度值
    • 3.2 定时器初始化

1、项目简介

  • 选题指导,项目分享: https://gitee.com/lighter-z/embedded-base/tree/master
  • 点击查看详细资料

1.1 系统构成

  • 本系统由主机和从机组成。主从机通过zigbee模块CC2530实现数据通讯。
  • 主机由STM32F103C8T6单片机、光照采集、DS18B20温度检测、土壤湿度采集、zigbee模块组成。
  • 从机由STM32F103C8T6单片机、LCD1602液晶显示、zigbee模块组成。

1.2 系统功能

  • 1、主机检测温度、光照(0-100)和土壤湿度(0-100),然后通过zigbee模块将数据传输给从机。
  • 2、在从机接收到数据后,在液晶上实时显示温度、光照(0-100)和土壤湿度(0-100)。
  • 3、液晶显示具有实时性,如果主机停止发送数据,从机液晶将显示xx表示数据无效链接断开。

2、部分电路设计

2.1 STM32F103C8T6核心系统电路设计

STM32F103C8T6单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。

单片机最小系统原理图如下图所示:

实物图:

2.2 光敏采集电路设计

其具体电路原理图如下图所示:

实物图如下图所示:

2.3 温度采集电路设计

DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

  • 电路设计
  • 实物图

3、部分代码展示

3.1 读取DS18B20温度值

short DS18B20_Get_Temp(void)
{u8 temp;u8 TL,TH;short tem;DS18B20_Start ();                    // ds1820 start convertDS18B20_Rst();DS18B20_Check();	 DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0xbe);// convert	    TL=DS18B20_Read_Byte(); // LSB   TH=DS18B20_Read_Byte(); // MSB  if(TH>7){TH=~TH;TL=~TL; temp=0;//温度为负  }else temp=1;//温度为正	  	  tem=TH; //获得高八位tem<<=8;    tem+=TL;//获得底八位tem=(float)tem*0.625;//转换     if(temp)return tem; //返回温度值else return -tem;    
} 

3.2 定时器初始化

void TIM3_Int_Init(u16 arr,u16 psc)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值	 计数到5000为500msTIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM_ITConfig(  //使能或者失能指定的TIM中断TIM3, //TIM2TIM_IT_Update ,ENABLE  //使能);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设}

相关内容