当前位置: 首页 > news >正文

基于STM32单片机的温湿度采集循迹避障APP小车

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. 安全性与扩展性:温湿度报警功能保障了环境监测应用的可用性,同时系统接口丰富,易于扩展更多功能模块。

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

http://www.lryc.cn/news/626762.html

相关文章:

  • 关于uniappx注意点1 - 鸿蒙app
  • vue:vue中的ref和reactive
  • win10安装最新docker 4.44.2版图文教程(2025版)
  • [TryHackMe](知识学习)Hacking with PowerShell
  • 【React】评论案例列表渲染和删除功能
  • SpringAop源码详解
  • 【AI应用】部署AI向量数据库Milvus
  • 机器学习——数据清洗
  • Java基础语法three
  • 【LeetCode题解】LeetCode 209. 长度最小的子数组
  • 机器学习-数据预处理全指南:从缺失值到特征编码
  • 如何选择汽车ECU的加密方法
  • ROS2核心模块
  • Nik Collection 6.2全新版Nik降噪锐化调色PS/LR插件
  • CreateRef和useRef
  • Java内功修炼(2)——线程安全三剑客:synchronized、volatile与wait/notify
  • Web前端调试与性能优化,Charles抓包工具的高效应用
  • YOLOv11 到 C++ 落地全流程:ONNX 导出、NMS 判别与推理实战
  • Vue透传 Attributes(详细解析)2
  • 极其简单二叉树遍历JAVA版本
  • CMake1:概述
  • 查看磁盘占用情况和目录大小
  • 企业架构及战略价值
  • 如何让FastAPI任务系统在失败时自动告警并自我修复?
  • 从零实现自定义顺序表:万字详解 + 完整源码 + 图文分析
  • 从“怀疑作弊”到“实锤取证”:在线面试智能监考重塑招聘公信力
  • 河南萌新联赛2025第六场 - 郑州大学
  • 数据库优化提速(一)之进销存库存管理—仙盟创梦IDE
  • 开源模型应用落地-安全合规篇-深度合成隐式标识的技术实现(五)
  • 无人机感知系统详解