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

发布于:2025-08-19 ⋅ 阅读:(12) ⋅ 点赞:(0)

1 系统功能介绍

本设计为 基于 STM32 单片机的无线 ZigBee 智能大棚土壤湿度光照检测系统,系统由 主机端和从机端 两部分组成,通过 CC2530 ZigBee 模块 实现无线通信。该系统主要应用于农业大棚智能环境监测,能够实时采集温度、光照和土壤湿度信息,并通过无线方式传输到从机端,再通过液晶显示屏进行显示。

系统功能总结如下:

  1. 主机功能

    • 基于 STM32F103C8T6 单片机,负责采集传感器数据。
    • 包含 DS18B20 温度传感器,检测环境温度。
    • 包含 光照传感器,采集光照强度并进行量化(0~100)。
    • 包含 土壤湿度传感器,采集湿度信息并量化(0~100)。
    • 使用 ZigBee 模块 CC2530 将采集数据无线传输到从机。
  2. 从机功能

    • 基于 STM32F103C8T6 单片机,负责接收 ZigBee 数据。
    • 通过 LCD1602 液晶 实时显示温度、光照和土壤湿度。
    • 具备 断链检测,当主机停止发送数据时,从机液晶显示“xx”提示数据无效。

该系统在农业智能化控制中具有广泛的应用价值,能够减少人工检测,提高大棚环境监控的实时性与智能化水平。


2 系统电路设计

2.1 主机电路设计

2.1.1 STM32F103C8T6 单片机最小系统

主机以 STM32F103C8T6 为核心,负责数据采集和 ZigBee 通信。

  • 主要功能

    • 控制各传感器的采样与数据处理。
    • 数据打包并通过串口发送到 ZigBee 模块。
  • 设计要点

    • 采用 8MHz 外部晶振,配合 PLL 提升系统频率至 72MHz。
    • 提供稳定的电源和复位电路,保证系统可靠运行。

2.1.2 温度传感器 DS18B20

  • 原理:单总线数字温度传感器,测量精度高。

  • 设计特点

    • DQ 端口与 STM32 的 GPIO 口相连,并加上拉电阻。
    • 单片机通过时序操作获取温度值。
  • 作用:采集环境温度,结果通过主机发送到从机端显示。

2.1.3 光照传感器模块

  • 原理:采用光敏电阻或光照强度模块,将光照强度转换为电压信号。

  • 设计要点

    • 模拟信号接入 STM32 的 ADC 通道,经过采样转换得到 0~100 的光照等级。
    • 光照阈值可用于辅助环境调节。

2.1.4 土壤湿度传感器模块

  • 原理:通过电导率检测土壤含水量,将其转换为电压信号。

  • 设计要点

    • 模拟信号输入 STM32 的 ADC 通道。
    • 单片机将其换算为 0~100 的湿度等级。

2.1.5 ZigBee 通信模块(CC2530)

  • 功能:主机将采集到的数据通过 UART 串口发送给 ZigBee 模块,ZigBee 以无线方式发送给从机端。

  • 设计要点

    • 波特率匹配 STM32 串口配置。
    • 供电为 3.3V,需要保证电源稳定。

2.2 从机电路设计

2.2.1 STM32F103C8T6 单片机最小系统

从机端同样以 STM32F103C8T6 为核心。

  • 功能

    • 接收 ZigBee 模块发来的串口数据;
    • 对接收到的数据进行解析;
    • 驱动 LCD1602 显示器进行实时刷新;
    • 进行通信检测,若超过一定时间未接收到数据,则显示“xx”。

2.2.2 ZigBee 接收模块

  • 功能:无线接收主机端发来的数据,并通过串口传输给 STM32。
  • 要求:通信稳定、无干扰,波特率匹配。

2.2.3 LCD1602 液晶显示模块

  • 功能:实时显示温度、光照、湿度数据。

  • 设计细节

    • 数据线 D0~D7 与 STM32 I/O 相连,使用 8 位并口模式。

    • 第一行显示系统标题,第二行显示实时数据,例如:

      T:25C L:75 H:60
      
    • 当通信中断时,数据显示为:

      T:xx L:xx H:xx
      

3 程序设计

3.1 主程序框架

#include "stm32f10x.h"
#include "lcd1602.h"
#include "ds18b20.h"
#include "zigbee.h"
#include "adc.h"

float temperature;
uint16_t light, humidity;

int main(void)
{
    SystemInit();
    DS18B20_Init();
    ADC_Config();
    ZigBee_Init();
    
    while(1)
    {
        temperature = DS18B20_Read();
        light = ADC_ReadChannel(0);     // 光照
        humidity = ADC_ReadChannel(1);  // 湿度
        
        ZigBee_SendData(temperature, light, humidity);
        
        Delay_ms(1000); // 每秒发送一次
    }
}

3.2 DS18B20 温度读取程序

float DS18B20_Read(void)
{
    uint16_t temp;
    float value;
    
    DS18B20_Start();
    temp = DS18B20_GetData();
    value = temp * 0.0625;  // 分辨率 0.0625℃
    
    return value;
}

3.3 ADC 模拟量采集程序

uint16_t ADC_ReadChannel(uint8_t channel)
{
    ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_55Cycles5);
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
    return ADC_GetConversionValue(ADC1) / 40;  // 转换为0-100
}

3.4 ZigBee 通信程序

void ZigBee_SendData(float temp, uint16_t light, uint16_t hum)
{
    char buffer[32];
    sprintf(buffer,"T=%.1f;L=%d;H=%d\r\n", temp, light, hum);
    USART_SendString(USART1, buffer);
}

3.5 从机接收与显示程序

#include "stm32f10x.h"
#include "lcd1602.h"
#include "zigbee.h"

float temperature;
uint16_t light, humidity;
uint32_t lastTime;

int main(void)
{
    SystemInit();
    LCD1602_Init();
    ZigBee_Init();
    
    LCD_ShowString(0,0,"Smart Greenhouse");
    
    while(1)
    {
        if(ZigBee_ReceiveData(&temperature, &light, &humidity))
        {
            lastTime = millis();
            LCD_SetCursor(0,1);
            LCD_Printf("T:%.1f L:%d H:%d", temperature, light, humidity);
        }
        else if(millis() - lastTime > 5000) // 5秒未收到数据
        {
            LCD_SetCursor(0,1);
            LCD_ShowString(0,1,"T:xx L:xx H:xx");
        }
    }
}

4 总结

本系统基于 STM32F103C8T6 单片机ZigBee 无线通信技术,实现了智能农业大棚环境参数监测。其主要特点如下:

  1. 多参数采集:温度、光照、湿度数据实时获取。
  2. 无线传输:利用 CC2530 ZigBee 模块实现主机与从机的数据通信。
  3. 实时显示:LCD1602 液晶模块直观显示检测结果。
  4. 链路检测:当主机停止工作或信号丢失时,从机自动显示“xx”,保证用户能及时获知系统状态。

该系统结构清晰、扩展性强,适合在农业物联网应用中推广,为大棚自动化和智慧农业提供有力支持。


网站公告

今日签到

点亮在社区的每一天
去签到