1. 温室大棚监控系统实战解析
去年帮本地草莓种植户老张改造大棚监控系统时,我用了这套基于51单片机的方案。相比市面上的成品控制器,这套系统成本不到百元,但实现了核心的温湿度光照监控功能。最关键的是所有代码和硬件设计完全开源,特别适合农业物联网入门开发。
1.1 系统核心架构
系统采用经典的三层架构:
- 感知层:DHT11+GY-30传感器组合
- 控制层:STC89C52RC单片机(兼容传统8051)
- 交互层:1602液晶+按键+声光报警
硬件选型考虑很实际:DHT11虽然精度一般(温度±2℃,湿度±5%RH),但胜在价格便宜(单价不到5元),且不需要额外ADC电路。光照检测选用GY-30模块而不是光敏电阻,是因为BH1750芯片自带16bit ADC,量程直达65535lux,能直接输出数字信号。
实际部署时发现:DHT11的塑料外壳在高温高湿环境易老化,后来改用环氧树脂封装版本,寿命延长了3倍。
1.2 核心电路设计要点
电源部分采用AMS1117-3.3V和LM7805双路稳压:
- 3.3V供GY-30模块
- 5V供单片机和其他外设
传感器接口设计有讲究:
- DHT11数据线加上拉电阻(4.7KΩ)
- I2C总线预留电平转换焊盘(实际测试5V与3.3V器件可直接通信)
- 蜂鸣器驱动用S8050三极管而非直接IO驱动
PCB布局特别注意:
- 传感器接口集中在一侧便于接线
- 电源走线宽度≥0.5mm
- 晶振靠近单片机且包地处理
2. 关键代码实现解析
2.1 传感器驱动开发
DHT11的时序控制是难点,必须严格遵循手册要求:
c复制void DHT11_Read(uint8_t *buf) {
P1M0 = 0x01; // 设置P1.0为推挽输出
P1M1 = 0x00;
DATA = 0;
delay_ms(18); // 主机拉低≥18ms
DATA = 1;
delay_us(30); // 主机拉高20-40us
P1M0 = 0x00; // 切换为高阻输入
P1M1 = 0x01;
while(DATA); // 等待从机响应
w
