15-基于STM32的蓝牙音响避障、超声波测距、温湿度检测小车(OLED、距离报警、DHT11、HCSR04)proteus、源代码、仿真工程

15-基于STM32的蓝牙音响避障、超声波测距、温湿度检测小车(OLED、距离报警、DHT11、HCSR04)proteus、源代码、仿真工程

功能描述:

使用STM32F103系列单片机对蓝牙小车进行模拟,实现了温度、湿度、距离的环境参数监测并显示在OLED显示器中。通过串口模拟出将参数传输至手机APP中的功能,也可以模拟其他串口设备。设置距离检测报警阈值,当超过设定阈值则红色LED灯亮起,反之不亮起。可以手动调节报警阈值,更加人性化。 通过按键模拟避障光电传感器检测到的电平信号。可以实现小车前进、后退、左避障、右避障、停止的功能。

1、小车前进、后退、左避障、右避障、停止
2、串口传输(可模拟蓝牙、WIFI、RS485)
3、温湿度检测
4、超声波距离检测
5、OLED环境参数显示
6、距离报警
7、自定义距离报警阈值调节

有哪些资料:

1、源代码KEIL4
2、仿真工程文件
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

#include "stm32f10x.h"                  // Device header

#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "OLED.h"
#include "PWM.h"
#include "Motor.h"
#include "Car.h"
#include "Usart.h"
#include "bsp_dht11.h"
#include "TIM2.h"
#include "UltrasonicWave.h"

uint8_t KeyNum;
uint8_t RxData;
uint16_t temp_dat;//温度变量
uint16_t hum_dat;//湿度变量

int main(void)
{
	
	DHT11_Data_TypeDef DHT11_Data;
	RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
	//Serial_Init();
	uart_init(9600);        //串口初始化为115200
	OLED_Init();
	Key_Init();
	Car_Init();

	SysTick_Init();
	LED_Init();
	DHT11_Init();
	TIM2_Configuration();
	UltrasonicWave_Configuration();
	dht11_delay_ms(100);
	OLED_ShowNum(1,1,10,3);
	OLED_ShowString(1,1,"Distance:");
	
	OLED_ShowString(2,1,"temp:   C");
	OLED_ShowString(3,1,"humi:   %");
	//UltrasonicWave_StartMeasure();
//	OLED_ShowNum(2,6,23,2);
//	OLED_ShowNum(2,13,20,2);
	int a = 10;
	int ul;

	while (1)
	{
		ul = UltrasonicWave_StartMeasure();
		
		
			//调用DHT11_Read_TempAndHumidity读取温湿度,若成功则输出该信息
			if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)
			{
			
				printf("\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n",DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
			}			
			else
			{
				printf("Read DHT11 ERROR!\r\n");
			}
			Delay_ms(100);	

				dht11_delay_ms(100);
		
		OLED_ShowNum(2, 6, DHT11_Data.temp_int , 2);
		OLED_ShowNum(3, 6, DHT11_Data.humi_int , 2);
			
//		if (Serial_GetRxFlag() == 1)
//		{
//			RxData = Serial_GetRxData();
//		//	Serial_SendByte(RxData);
//			OLED_ShowNum(1, 1, RxData, 2);
//		}
//		int a=2;
//		Serial_Printf("%d",a);     //打印函数
//		
		
		KeyNum=Key_GetNum();
		if(KeyNum == 1)
		{
			Go_Ahead();
			printf("前方无障碍物,前进!\r\n");
			
		}
		if(KeyNum == 2)
		{
			Go_Back();
			printf("前方有障碍物,后退!\r\n");
		}
		if(KeyNum == 3)
		{
			Turn_Left();
			printf("开始左转!\r\n");
		}
		if(KeyNum == 4)
		{
			Turn_Right();
			printf("开始右转!\r\n");
		}
		if(KeyNum == 5)
		{
			Car_Stop();
			printf("车辆停止!\r\n");	
		}
		if(KeyNum == 6)
		{
			a++;
			printf("距离阈值为:%d\r\n" ,a);	
		}
		if(KeyNum == 7)
		{
			a--;
				printf("距离阈值为:%d\r\n" ,a);	
		}
		
		if(ul<a)
		{
			LED_ON();
			Delay_ms(100);
		}
		if(ul>=a)
		{
			LED_OFF();
		}

	}
}

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我Eric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值