1 系统功能介绍

本设计为 基于STM32单片机的温湿度采集循迹避障APP小车,通过传感器采集、蓝牙无线通信、OLED数据显示和电机驱动等多种功能模块的结合,实现了小车的智能化控制与环境数据实时监测。与传统循迹小车不同,本系统不仅具备循迹与避障的基本功能,还融合了 温湿度实时采集、手机APP交互、阈值报警、自动/手动模式切换 等功能,扩展了小车在智能家居和物联网应用中的实际价值。

主要功能如下:

  1. 环境数据采集与显示:小车通过 DHT11 传感器采集环境温湿度数据,STM32 将数据处理后实时显示在 OLED 屏幕上。
  2. 数据传输与报警:采集到的温湿度数据通过 HC-05 蓝牙模块发送到手机 APP,在手机端实时显示;当超过阈值时,自动通过蓝牙向手机报警。
  3. 智能循迹与避障:小车能够在循迹模式下自动沿预设路径运行,同时在遇到障碍物时自动停车,保障运行安全。
  4. 双模式运行:支持自动运行(循迹+避障)和手动模式(通过 APP 控制前后左右移动)。
  5. PID 控制算法:通过 PID 算法对小车电机进行闭环控制,保证小车循迹的稳定性和精度。
  6. 手机 APP 控制与设置:APP 可手动发送指令控制小车移动,并通过指令 temp addtemp downdh adddh down 设置温湿度阈值。

综上所述,该系统不仅仅是一辆普通的循迹小车,更是一个具备 环境感知、远程控制和智能决策能力 的综合性智能平台。


2 系统电路设计

2.1 STM32 最小系统电路

  • 核心芯片:STM32F103C8T6

  • 功能:作为主控核心,负责温湿度采集、数据处理、蓝牙通信、电机控制、OLED 显示等任务。

  • 电路组成

    • 时钟电路:外接 8MHz 晶振与内部 PLL 倍频,保证系统运行速度;
    • 复位电路:上电复位、手动复位电路,保证运行可靠;
    • 电源电路:提供稳定的 3.3V 电源。

2.2 DHT11 温湿度采集电路

  • 传感器:DHT11
  • 接口:单总线通信,与 STM32 的 GPIO 相连。
  • 功能:周期性采集环境温度与湿度,传输给单片机进行显示与蓝牙发送。

2.3 OLED 显示电路

  • 显示屏:0.96 寸 OLED(I2C 接口)。
  • 功能:实时显示当前温湿度、模式状态、电机运行状态等信息。
  • 通信方式:I2C 两线通信,SDA、SCL 接至 STM32。

2.4 蓝牙通信电路

  • 模块:HC-05 蓝牙模块。
  • 功能:实现与手机 APP 的双向通信,支持数据上传(温湿度、报警信息)与指令下发(小车控制、阈值设置)。
  • 接口:通过 USART1 与 STM32 通信。

2.5 电机驱动电路

  • 驱动芯片:L298N
  • 功能:驱动小车两侧直流电机,实现前进、后退、左右转向。
  • 控制方式:PWM 控制电机速度,逻辑引脚控制电机转向。

2.6 循迹与避障传感器电路

  • 循迹传感器:红外反射式传感器,检测黑线位置用于循迹。
  • 避障传感器:超声波模块 HC-SR04,用于检测前方障碍物。
  • 功能:结合 PID 算法调整小车行驶路径,避免碰撞。

2.7 电源电路

  • 电池:7.4V 锂电池。
  • 稳压:DC-DC 降压模块,输出 5V 给 L298N,3.3V 给 STM32、OLED、DHT11、蓝牙模块。

3 程序设计

3.1 温湿度采集程序

#include "dht11.h"

int temperature = 0;
int humidity = 0;

void DHT11_Read(void)
{
    DHT11_ReadData(&temperature, &humidity);
    OLED_ShowString(0,0,"Temp:");
    OLED_ShowNum(40,0,temperature,2,16);
    OLED_ShowString(0,2,"Humi:");
    OLED_ShowNum(40,2,humidity,2,16);
}

该程序负责读取 DHT11 数据,并在 OLED 上实时显示。


3.2 蓝牙通信程序

char rxBuffer[20];
int temp_threshold = 30;
int humi_threshold = 60;

void Bluetooth_Send(char *data)
{
    HAL_UART_Transmit(&huart1,(uint8_t*)data,strlen(data),1000);
}

void Bluetooth_Receive(void)
{
    HAL_UART_Receive(&huart1,(uint8_t*)rxBuffer,20,1000);
    if(strstr(rxBuffer,"temp add")) temp_threshold++;
    if(strstr(rxBuffer,"temp down")) temp_threshold--;
    if(strstr(rxBuffer,"dh add")) humi_threshold++;
    if(strstr(rxBuffer,"dh down")) humi_threshold--;
    if(strstr(rxBuffer,"forward")) Motor_Forward();
    if(strstr(rxBuffer,"backward")) Motor_Backward();
    if(strstr(rxBuffer,"left")) Motor_Left();
    if(strstr(rxBuffer,"right")) Motor_Right();
    if(strstr(rxBuffer,"stop")) Motor_Stop();
}

程序支持双向通信,APP 可发送控制指令与阈值设置,小车将数据与报警上传至手机。


3.3 电机驱动与 PID 控制程序

int error, last_error, pwm_left, pwm_right;
float Kp=1.0, Ki=0.1, Kd=0.5;

void PID_Control(int target, int current)
{
    error = target - current;
    int derivative = error - last_error;
    int output = Kp*error + Ki*error + Kd*derivative;
    pwm_left = 500 + output;
    pwm_right = 500 - output;
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,pwm_left);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,pwm_right);
    last_error = error;
}

利用 PID 算法保证循迹时小车运行平稳。


3.4 循迹与避障程序

void Track_Obstacle(void)
{
    int left = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);
    int right = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1);
    int distance = HCSR04_Read();

    if(distance < 20)
    {
        Motor_Stop(); // 避障
    }
    else if(left==0 && right==1)
    {
        Motor_Left();
    }
    else if(left==1 && right==0)
    {
        Motor_Right();
    }
    else
    {
        Motor_Forward();
    }
}

结合红外循迹传感器与超声波模块,实现循迹与避障功能。


3.5 温湿度阈值报警程序

void Threshold_Alarm(void)
{
    if(temperature > temp_threshold)
        Bluetooth_Send("Temp Alarm!\r\n");
    if(humidity > humi_threshold)
        Bluetooth_Send("Humi Alarm!\r\n");
}

当温湿度超过阈值,系统通过蓝牙向手机报警。


3.6 主程序

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    OLED_Init();
    DHT11_Init();
    Bluetooth_Send("System Start\r\n");

    while(1)
    {
        DHT11_Read();
        Bluetooth_Receive();
        Track_Obstacle();
        Threshold_Alarm();
    }
}

主循环中持续执行数据采集、蓝牙通信、循迹避障和阈值报警任务。


4 总结

本文设计了一种 基于STM32单片机的温湿度采集循迹避障APP小车,其特点与优势总结如下:

  1. 多功能集成:不仅具备循迹与避障功能,还融合了温湿度实时采集与 APP 通信功能。
  2. 智能化控制:通过 PID 算法控制电机,保证循迹过程中的稳定性与灵敏性。
  3. 人机交互友好:通过蓝牙模块与手机 APP 建立通信,用户可以实时查看数据并发送指令控制。
  4. 安全性与扩展性:温湿度报警功能保障了环境监测应用的可用性,同时系统接口丰富,易于扩展更多功能模块。

该系统可作为嵌入式课程设计、智能小车竞赛及物联网应用的综合性实践平台,具有较强的实用价值与推广意义。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐