前言
小車分為兩種模式,自動(dòng)模式以及手動(dòng)模式,有小車下位機(jī)通過按鍵可以進(jìn)行模式的切換,自動(dòng)模式有三個(gè)超聲波避障,手動(dòng)模式可以通過APP連接到小車WIFI進(jìn)行手動(dòng)控制,并且會(huì)有一個(gè)ESP32的圖像采集回傳給小車。
一、視頻效果演示
二、底層硬件端
2.1 使用硬件清單
STM32F103RCT6開發(fā)板(可以替換為STM32其他系列)
三個(gè)超聲波測(cè)距模塊(使用time時(shí)鐘進(jìn)行距離的計(jì)算)
兩個(gè)電機(jī)驅(qū)動(dòng)板(L2980)---- 使用PWM控制小車的速度
ESP32-CAN模塊? ? ? ? ? ? ? ?---- 使用串口與STM32經(jīng)行連接
?2.2原理圖
?2.3 主函數(shù)代碼
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 狀態(tài)手動(dòng)
//flage=1 狀態(tài)自動(dòng)
extern int flag;
局部變量
//float Distance1 = 0; //距離
//float Distance2 = 0; //距離
//float Distance3 = 0; //距離
//定義函數(shù)
void Car_run ( void );
void Hc_rs04 ( void );
/**
* @brief 主函數(shù)
* @param 無(wú)
* @retval 無(wú)
*/
extern int flage;
//小車初始狀態(tài)
u8 dir=1;
u16 led0pwmval=0;
int main ( void )
{
/* 初始化 */
/* 配置SysTick 為1us中斷一次 */
SysTick_Init();
CPU_TS_TmrInit(); //初始化DWT計(jì)數(shù)器,用于延時(shí)函數(shù)
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
//超聲波定時(shí)器
HC_SR04_IO1_Init(); //超聲波模塊GPIO初始化
TIM2_Init(7199,0); //以10KHz計(jì)數(shù),定時(shí)100us
HC_SR04_IO2_Init(); //超聲波模塊GPIO初始化
TIM4_Init(7199,0); //以10KHz計(jì)數(shù),定時(shí)100us
HC_SR04_IO3_Init(); //超聲波模塊GPIO初始化
TIM5_Init(7199,0); //以10KHz計(jì)數(shù),定時(shí)100us
Delay_ms(500); /* 延時(shí)500個(gè)tick */
printf("初始化成功n");
while ( 1 )
{
//Car_run ();
if(flag==1){
Avoid_Car();
}else MTR_CarBrakeAll();
}
}
/**
* @brief 小車測(cè)試
* @param 無(wú)
* @retval 無(wú)
*/
/** 小車狀態(tài)碼:
* 1 小車處于正常行駛
* 2 小車處于減速一(距離200)
* 3 小車處于減速二(距離100)
* 4 小車處于低速狀態(tài)(距離50)
*
* 1 小車處于避障狀態(tài)
* 1 小車處于避障狀態(tài)
*/
void Car_run ( void )
{
car_speed(1);
MTR_CarForward();
}
/**
* @brief 小車超聲波測(cè)試
* @param 無(wú)
* @retval 無(wú)
*/
/** 小車狀態(tài)碼:
*/
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()返回單程聲波傳輸時(shí)間 us,轉(zhuǎn)換為秒=時(shí)間*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 %.1fn",Distance1,Distance2,Distance3);
}
/*********************************************END OF FILE**********************/
三、APP端
編譯平臺(tái)
APP使用Android studio平臺(tái)編譯
四、資源下載
全部資源
APP+STM32程序+ESP32CAN程序https://download.csdn.net/download/herui_2/85840555
STM32程序+ESP32CAN程序
STM32程序+ESP32CAN程序https://download.csdn.net/download/herui_2/85840511
APP程序
APP程序https://download.csdn.net/download/herui_2/85840603
聯(lián)系方式 微信號(hào):13648103287