Skip to content

第14章 实验二:传感器与显示综合实验

14 第 14 章 实验二:传感器与显示综合实验

本实验综合运用超声波传感器、温湿度传感器和 OLED 显示屏,实现一个环境数据采集与显示系统,巩固第 7~8 章的知识。

14.1 实验目的

  1. 掌握 HC-SR04 超声波传感器的定时器输入捕获驱动方法
  2. 掌握 DHT11 温湿度传感器的单总线时序驱动
  3. 掌握 SSD1306 OLED I2C 驱动和多行数据显示
  4. 体验多传感器数据融合与实时显示

14.2 实验环境

本实验在实验一环境基础上,增加以下器件(仿真环境使用 PicSimlab 虚拟外设):

表 14-1 实验器件清单

器件 型号 接口 STM32 引脚
超声波传感器 HC-SR04 Trig(GPIO) + Echo(TIM IC) PB0(Trig) + PB1(Echo/TIM3_CH4)
温湿度传感器 DHT11 单总线 PA1
OLED 显示屏 SSD1306 0.96" I2C PB6(SCL) + PB7(SDA)

14.3 实验内容

14.3.1 任务一:超声波测距

  1. 使用 TIM3_CH4 输入捕获测量 HC-SR04 Echo 脉宽
  2. 计算距离并通过串口输出
  3. 精度要求:±1cm

参考代码框架:

/* 触发 HC-SR04 */
void HCSR04_Trigger(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
    delay_us(15);  /* >10us 触发脉冲 */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
}

/* 在 TIM3 输入捕获回调中计算脉宽 */
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
    /* 上升沿记录起始值,下降沿计算差值 → 脉宽(us) → 距离(cm) */
    /* distance_cm = pulse_us / 58.0f; */
}

14.3.2 任务二:温湿度采集

  1. 驱动 DHT11 读取温度和湿度
  2. 每 2 秒采集一次(DHT11 采样间隔不小于 1 秒)
  3. 串口输出格式:Temp=25.0C Humi=60%

14.3.3 任务三:OLED 综合显示

将超声波距离和温湿度数据整合显示在 OLED 上:

+--------------------+
| Smart Environment  |
| Dist:  35.2 cm     |
| Temp:  25.0 C      |
| Humi:  60 %        |
+--------------------+

显示刷新策略: 每 500ms 刷新一次 OLED,避免频繁写 I2C 造成闪烁。

14.3.4 任务四(拓展):超限报警

  • 温度 > 35°C 或距离 < 10cm 时,LED 快闪报警
  • 通过串口发送报警信息 ALERT: xxxx

14.4 系统接线图

Trig Echo Data STM32F103C8T6 Blue Pill SSD1306 OLED SCL PB6 SDA PB7 PC13 LED HC SR04 DHT11 PB0 PB1 Trig Echo PA1 DHT11 Data PA9 PA10 UART UART TX RX

图 14-1 实验二系统接线示意图。


14.5 实验步骤

  1. CubeMX 配置:新建工程,配置 GPIO(PB0输出, PA1开漏)、TIM3_CH4(输入捕获)、I2C1(PB6/PB7)、USART1
  2. 逐模块调试:分别测试超声波、DHT11、OLED,确认每个模块独立工作正常
  3. 系统集成:在主循环中按时间片调度三个采集任务和显示刷新
  4. 拓展功能:实现报警功能

14.6 评分标准

表 14-2 实验二评分标准

内容 分值 评价标准
超声波测距正确 25% 距离值稳定、精度 ±2cm
DHT11 读取正确 25% 能读取温湿度且数据合理
OLED 显示完整 25% 多行数据布局清晰
拓展功能 15% 报警功能完整实现
代码质量与报告 10% 模块化、注释、报告完整