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

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

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


1、功能介绍

本系统是一款基于 STM32单片机 的智能小车,集成了 温湿度采集、蓝牙通信、OLED显示、循迹、避障、手机APP远程控制以及阈值报警 等功能。通过 L298N电机驱动模块 控制小车前进、后退、左转、右转;利用 DHT11传感器 实时采集温湿度数据;通过 OLED液晶 显示相关信息;借助 蓝牙模块 将数据上传至手机APP,并接收来自手机端的指令;在软件层面引入 PID控制算法,提升小车运行的稳定性与灵敏度。

系统的主要功能总结如下:

  1. 温湿度检测与显示:STM32通过DHT11采集温湿度数据,并在OLED屏幕上实时显示。
  2. 蓝牙通信:温湿度数据通过蓝牙模块上传至手机APP,实现远程实时监控。
  3. PID小车控制:支持自动和手动两种运行模式,PID算法提升循迹和避障性能。
  4. 循迹与避障:小车可根据红外循迹传感器沿黑线行驶,遇到障碍物自动停车,提升智能性。
  5. 阈值报警:手机APP可设置温湿度阈值,当实际数据超限时,蓝牙发送报警信息至手机端。
  6. APP远程控制:通过蓝牙APP发送指令控制小车的运行方向(前进、后退、左转、右转),并可动态调整阈值。

该系统既是一个 智能小车实验平台,又是一个 环境数据采集与报警系统,可应用于智能家居、安防、教育实验等领域。


2、电路设计

本系统的电路设计主要包括 STM32最小系统、L298N电机驱动电路、DHT11温湿度传感器电路、OLED显示电路、蓝牙通信电路、循迹与避障电路、电源电路

2.1 STM32最小系统电路

STM32F103C8T6作为主控,负责数据采集、运算处理和外设控制。最小系统包括:

  • 电源电路:通过AMS1117-5.0与AMS1117-3.3稳压芯片提供5V与3.3V电源。
  • 时钟电路:采用8MHz晶振与内部PLL倍频,保证系统时钟精度。
  • 复位电路:上电复位与按键复位电路保证程序正常启动。

2.2 L298N电机驱动电路

小车的前进、后退与转向通过 直流电机 实现,采用L298N模块作为驱动:

  • 输入端口 接STM32的GPIO控制方向信号。
  • PWM端口 接STM32的定时器输出,用于调节电机转速。
  • 输出端口 连接电机,实现动力输出。

该模块可驱动双路直流电机,电压范围广,适合小车应用。

2.3 DHT11温湿度传感器电路

DHT11通过单总线协议与STM32通信,定时采集温湿度数据。其特性包括:

  • 温度测量范围:0~50℃,精度±2℃
  • 湿度测量范围:20~90%RH,精度±5%RH
  • 数据线接入STM32的一个GPIO口,通过程序解析温湿度信息。

2.4 OLED显示电路

采用 0.96寸I2C接口OLED屏幕,通过SCL与SDA与STM32通信。主要用于:

  • 实时显示温湿度数据
  • 显示当前阈值
  • 显示小车运行模式(自动/手动)

OLED显示具有低功耗、高对比度的优点,适合小车应用。

2.5 蓝牙通信电路

采用 HC-05蓝牙模块,通过USART接口与STM32通信:

  • STM32发送温湿度数据至手机APP
  • 接收手机指令并解析,实现远程控制与参数设置

波特率一般设置为9600,保证数据稳定传输。

2.6 循迹与避障电路

小车循迹与避障功能依赖于 红外对管与超声波传感器

  • 红外循迹传感器:检测黑白线路,实现循迹控制。
  • 超声波模块HC-SR04:检测障碍物距离,当小于设定阈值时自动停车。

2.7 电源电路

系统电源由 可充电锂电池组 提供,经过稳压模块输出5V与3.3V电压,分别供给电机驱动模块与控制电路。


3、程序设计

程序采用 模块化结构,包含主程序、温湿度采集模块、OLED显示模块、蓝牙通信模块、PID控制模块、循迹与避障模块、电机驱动模块等。

3.1 主程序流程

主程序负责初始化各模块并进入循环运行:

  1. 温湿度采集与显示
  2. 蓝牙通信与指令解析
  3. 循迹与避障判断
  4. PID计算并输出PWM信号
  5. 阈值报警判断
#include "stm32f10x.h"
#include "dht11.h"
#include "oled.h"
#include "bluetooth.h"
#include "motor.h"
#include "pid.h"float temperature, humidity;
float temp_threshold = 30;
float hum_threshold = 70;int main(void) {SystemInit();OLED_Init();DHT11_Init();Bluetooth_Init(9600);Motor_Init();PID_Init();while(1) {// 温湿度采集DHT11_Read(&temperature, &humidity);// 显示OLED_ShowData(temperature, humidity, temp_threshold, hum_threshold);// 蓝牙上传Bluetooth_SendData(temperature, humidity);// 指令解析Bluetooth_CommandProcess(&temp_threshold, &hum_threshold);// 阈值报警if(temperature > temp_threshold || humidity > hum_threshold) {Bluetooth_SendAlarm("Warning: Threshold Exceeded!");}// 循迹与避障Car_AutoRun();}
}

3.2 温湿度采集模块

void DHT11_Read(float *temp, float *hum) {uint8_t data[5] = {0};if(DHT11_GetData(data)) {*hum  = data[0] + data[1] * 0.1;*temp = data[2] + data[3] * 0.1;}
}

3.3 OLED显示模块

void OLED_ShowData(float temp, float hum, float t_set, float h_set) {OLED_Clear();OLED_ShowString(0,0,"Temp:");OLED_ShowNum(40,0,temp,2,16);OLED_ShowString(70,0,"C");OLED_ShowString(0,2,"Humi:");OLED_ShowNum(40,2,hum,2,16);OLED_ShowString(70,2,"%");OLED_ShowString(0,4,"T_Set:");OLED_ShowNum(60,4,t_set,2,16);OLED_ShowString(0,6,"H_Set:");OLED_ShowNum(60,6,h_set,2,16);
}

3.4 蓝牙通信模块

void Bluetooth_CommandProcess(float *t_set, float *h_set) {char cmd[20];if(Bluetooth_Receive(cmd)) {if(strcmp(cmd,"temp add")==0) *t_set += 1;else if(strcmp(cmd,"temp down")==0) *t_set -= 1;else if(strcmp(cmd,"dh add")==0) *h_set += 5;else if(strcmp(cmd,"dh down")==0) *h_set -= 5;else if(strcmp(cmd,"forward")==0) Car_Forward();else if(strcmp(cmd,"back")==0) Car_Back();else if(strcmp(cmd,"left")==0) Car_Left();else if(strcmp(cmd,"right")==0) Car_Right();else if(strcmp(cmd,"stop")==0) Car_Stop();}
}

3.5 PID控制模块

float PID_Control(float target, float current) {static float last_error = 0, integral = 0;float Kp=1.0, Ki=0.1, Kd=0.05;float error = target - current;integral += error;float derivative = error - last_error;last_error = error;return Kp*error + Ki*integral + Kd*derivative;
}

PID算法用于调整左右电机速度差,提高循迹精度与运行稳定性。


3.6 循迹与避障模块

void Car_AutoRun(void) {if(Obstacle_Detected()) {Car_Stop();} else {int track_status = Track_Read();if(track_status == LEFT) Car_Left();else if(track_status == RIGHT) Car_Right();else Car_Forward();}
}

3.7 电机驱动模块

void Car_Forward(void) {Motor_SetSpeed(200,200);
}
void Car_Back(void) {Motor_SetSpeed(-200,-200);
}
void Car_Left(void) {Motor_SetSpeed(-150,150);
}
void Car_Right(void) {Motor_SetSpeed(150,-150);
}
void Car_Stop(void) {Motor_SetSpeed(0,0);
}

4、总结

本系统以 STM32F103单片机 为核心,整合了 温湿度采集、OLED显示、蓝牙通信、PID小车控制、循迹与避障、阈值报警 等功能,实现了一个多功能智能小车平台。系统的特点包括:

  1. 功能全面:不仅能实现小车运动控制,还能完成温湿度采集与报警,兼顾环境监测与运动控制。
  2. 模块化设计:硬件电路与软件程序均采用模块化思路,便于调试和扩展。
  3. 人机交互友好:手机APP作为交互终端,用户可灵活控制小车并实时获取数据。
  4. 控制精度高:PID算法保证了小车循迹与避障过程的稳定性与准确性。
  5. 应用前景广阔:可应用于智能家居、环境监测、智能小车竞赛、教育实验等场景。

通过该设计,不仅展示了 STM32单片机在智能小车控制领域的应用价值,同时也体现了 物联网与嵌入式系统融合的优势,是一款具有教学、科研与实际应用价值的综合性项目。

http://www.dtcms.com/a/407404.html

相关文章:

  • 单片机--概述
  • 文件与内容查找,压缩与解压
  • Emacs折腾日记(三十一)——org mode入门
  • 做网站推广的好处青岛市住房和城乡建设局官方网站
  • 科技网站域名北京顺义网站建设
  • 电子政务建设网站图片十大ppt模板免费下载网站
  • CentOS 7 安装并配置静态网络
  • 如何做网站使用手册济南网站定制策划
  • 什么网站可以做推广的宣传制作清单及价格
  • 龙海网站建设价格商城小程序开发哪家好
  • 厦门汽车充电站建设报备网站深圳浪尖工业设计公司
  • 创意交互设计广东短视频seo搜索哪家好
  • 亚马逊ImageSmith测试:搜索广告从“展示”到“对话”的革命
  • C语言程序设计笔记—scanf、算术运算符的使用案例
  • 旅行社手机网站建设方案wordpress tag 转拼音
  • 网站建设越来越注重用户体验网站开发职业资格证书
  • 基于Rokid平台的AR沉浸式教育导览应用:从构思到实现的全流程研究
  • 网站开发 足球球队信息做静态网站的软件
  • 青岛网站设计公司我国有哪些企业网站
  • 《用AI重构工业设备故障预警系统:从“被动维修”到“主动预判”的协作实践》
  • 建设部考试网站网站开发兼职网站
  • dw建设个人网站步骤wap网站管理系统
  • 出现了oom情况怎么解决
  • JAVA解题——输入年月返回天数(附源代码)
  • 基于仓颉语言BigInt库实现SM2国密算法
  • 安康市城市建设局网站武夷山景区网站建设特点
  • 脑电模型实战系列:进入序列世界-用LSTM处理脑电时序数据
  • 深度学习图像分类
  • 宁晋企业做网站住房城乡建设网站官网入口
  • 百度商桥的代码放到网站里什么是云速建站服务