前言

小车分为两种模式,自动模式以及手动模式,有小车下位机通过按键可以进行模式的切换,自动模式有三个超声波避障,手动模式可以通过APP连接到小车WIFI进行手动控制,并且会有一个ESP32的图像采集回传给小车

一、视频效果演示

物联网毕设 -- ESP32-CAN+STM32


资源包

 


 

二、底层硬件端

2.1 使用硬件清单

STM32F103RCT6开发板(可以替换为STM32其他系列)

三个超声波测距模块(使用time时钟进行距离的计算)

两个电机驱动板(L2980)---- 使用PWM控制小车的速度

ESP32-CAN模块               ---- 使用串口与STM32经行连接

 2.2原理图


 

 2.3 主函数代码

main.h

#include "stm32f10x.h"
#include "bsp_usart.h"
#include "bsp_SysTick.h"
#include "stm32f10x_it.h"
#include "hc_sr04.h"
#include "./dwt_delay/core_delay.h"
#include "./pwm/user_timer_pwm.h"
#include "L298N.h"
#include "car.h"
#include "timer.h"
#include "usart_openmv.h"
#include "timer.h"
#include "HC_SR04.h"
#include "car.h"
#include "key.h"
//全局变量
//flage=0 状态手动
//flage=1 状态自动
extern int flag;
////局部变量
//float  Distance1 = 0;  //距离
//float  Distance2 = 0;  //距离
//float  Distance3 = 0;  //距离
//定义函数
void Car_run ( void );
void Hc_rs04 ( void );
/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
extern int flage;
//小车初始状态
u8 dir=1;
u16 led0pwmval=0;

int main ( void )
{
	
	/* 初始化 */
	/* 配置SysTick 为1us中断一次 */
	SysTick_Init();

  CPU_TS_TmrInit();                                                     //初始化DWT计数器,用于延时函数
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	USART_Config ();                                                      //初始化串口1
	OpenMV_USART_Config();
	EXTI_Key_Config(); 
	MTR_GPIOInit();
	
	TIM3_PWM_Init(899,0);	 //不分频,PWM频率=72000000/900=80Khz
	//超声波定时器
	HC_SR04_IO1_Init();  //超声波模块GPIO初始化
	TIM2_Init(7199,0);    //以10KHz计数,定时100us
	HC_SR04_IO2_Init();  //超声波模块GPIO初始化
	TIM4_Init(7199,0);    //以10KHz计数,定时100us
	HC_SR04_IO3_Init();  //超声波模块GPIO初始化
	TIM5_Init(7199,0);    //以10KHz计数,定时100us
	Delay_ms(500);   /* 延时500个tick */
	printf("初始化成功\n");
  while ( 1 )
  {
		
	 //Car_run ();

		if(flag==1){
			Avoid_Car();	
		}else MTR_CarBrakeAll();
			
  }
	
}


/**
  * @brief  小车测试
  * @param  无
  * @retval 无
  */
/** 小车状态码:
	*		1 小车处于正常行驶
  *   2 小车处于减速一(距离200)
  *   3 小车处于减速二(距离100)
  *   4 小车处于低速状态(距离50)
  *
  *   1 小车处于避障状态
  *   1 小车处于避障状态
  */
void Car_run ( void )                     
{
		car_speed(1);
		MTR_CarForward();
}

/**
  * @brief  小车超声波测试
  * @param  无
  * @retval 无
  */
/** 小车状态码:

  */
void Hc_rs04 ( void )                     
{

//	Distance1 = (Get_SR04_Distance1() * 331) * 1.0/1000;
//	Delay_ms(5);
//	Distance2 = (Get_SR04_Distance2() * 331) * 1.0/1000;
//	Delay_ms(5);
//	Distance3 = (Get_SR04_Distance3() * 331) * 1.0/1000;
//	Delay_ms(5);	//Get_SR04_Distance()返回单程声波传输时间 us,转换为秒=时间*10^(-6);331m/s等于331000mm/s,
//	 //最终换算为Distance =Get_SR04_Distance()*10^(-6)*331000=(Get_SR04_Distance() * 331) * 1.0/1000;
//	//if(Distance1<1000&&Distance2<1000&&Distance3<1000)
//	printf("%.1f %.1f %.1f\n",Distance1,Distance2,Distance3);
}
/*********************************************END OF FILE**********************/

 


三、APP端

编译平台

APP使用Android studio平台编译


 

四、资源下载

全部资源

APP+STM32程序+ESP32CAN程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840555

STM32程序+ESP32CAN程序

STM32程序+ESP32CAN程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840511

APP程序

APP程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840603

Logo

宁波官方开源宣传和活动阵地,欢迎各位和我们共建开源生态体系!

更多推荐