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

1、系统功能介绍

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

2、演示视频

3、系统电路介绍

3.1、STM32单片机最小系统设计

  • STM32的最小系统的硬件组成主要有:电源电路、复位电路、时钟电路、调试接口电路、启动电路。
  • 电源 : 一般是3.3V输入作为STM32芯片的工作电压,实际中很多采用LDO将5V转换为3.3V进行供电,另外电路上还要加多个0.01uf去耦电容对输入电压进行滤波,稳定输入电压。
  • 复位:STM32中有三种复位方式,分别为:上电复位、手动复位、程序自动复位。上电复位是指芯片根据外部搭建的复位电路,在上电的时候进行的复位;手动复位是指通过外部的复位电路自己手动进行复位;程序复位是在软件中通过代码对STM32芯片进行的复位。
  • 单片机最小系统电路图如下图所示
  • 实物图:

3.2、CC2530 zigbee无线发射接收模块(DL-20)电路设计

  • ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。

  • DL-20无线串口透传模块是一款基于UART接口的全双工无线透明传输模块,可以工作在2400MHZZ-2450MHZ公用频段。该模块采用TI的CC2530芯片,具体型号为CC2530F256RHAR。符合IEEE802.15.4协议,通过该模块可以使传统的串口设备实现无线传输,替换掉复杂的布线工作。用于点对点通信、广播通信。即插即用,免开发,使用简单。

  • 电路原理图

  • 实物图

3.3、DS18B20温度传感器模块电路设计

  • DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。

  • DS18B20温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统。试验证明DS18B20温度传感器满足本设计要求。

  • 矩阵键盘按键电路设计如下图所示:

  • 实物图:

3.4、LCD1602液晶显示模块电路设计

  • LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。
  • 与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。
  • 电路原理图:
  • 实物图:
    在这里插入图片描述

4、程序设计

4.1、获取土壤湿度

u16 Get_Adc(u8 ch)   
{
  	//设置指定ADC的规则组通道,一个序列,采样时间
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采样时间为239.5周期	  			    
  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的软件转换启动功能	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1规则组的转换结果
}

4.2、按键初始化

void KEY_Init(void) //IO初始化
{
 	GPIO_InitTypeDef GPIO_InitStructure;

 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

 	GPIO_Init(GPIOA, &GPIO_InitStructure);		 

}

4.3、读取DS18b20温度

//从ds18b20得到温度值
//精度:0.1C
//返回值:温度值 (-550~1250) 
short DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
	short tem;
    DS18B20_Start ();                    // ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();	 
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_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;    
} 
  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于STM32单片机的无线Zigbee光照强度检测源码主要包括硬件设计和软件编程两个方面。 硬件设计方面,我们需要使用STM32单片机作为主控制器,并与光敏电阻、无线模块等外围器件进行连接。光敏电阻用于感知周围环境的光照强度,通过模拟转换电路将其输出转换为数字信号,然后通过STM32的ADC模块将其读取到单片机中。无线模块则负责与其他设备进行通信,以实现无线传输功能。我们需要将其与STM32的串口或SPI接口相连,通过程序控制进行数据的发送和接收。 软件编程方面,我们可以使用C语言和STM32的开发环境进行编程。首先,我们需要进行初始化设置,包括配置ADC模块、串口或SPI接口等,并设置相应的引脚为输入或输出。接着,在主程序中,我们可以使用定时器中断来实现定时采集光敏电阻的数据,将其转换为光照强度值,并将其发送给无线模块。在接收端,我们可以使用相应的无线模块接收数据,然后通过串口或SPI接口将其传输给其他设备或显示在屏幕上。 总结来说,基于STM32单片机的无线Zigbee光照强度检测源码需要包括硬件设计和软件编程两个部分。硬件设计方面需要连接光敏电阻和无线模块,软件编程方面需要进行初始化设置以及采集、转换和传输数据等操作。通过这样的源码设计,我们可以实现无线传输光照强度数据的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值