STM32硬件开发

您所在的位置:网站首页 简述智能小车循迹的原理 STM32硬件开发

STM32硬件开发

2024-07-14 03:13| 来源: 网络整理| 查看: 265

STM32 小车——三路超声波避障+红外循迹+蓝牙遥控 前言(BB Time)硬件一、选型1、开发板2、其他元件 二、原理1、电机2、超声波3、红外4、蓝牙 功能一、车轮滚滚1、原理2、代码3、注意 二、按键切换功能1、原理2、代码 三、通过三路超声波实现避障1、代码 四、通过两个红外模块实现黑线循迹1、原理2、代码3、注意 五、通过手机蓝牙遥控车辆1、代码 总结

🚗🚗🚗🚗🚗 博客就当作学习过程中的笔记 博客提供了几乎所有需要敲的代码 可以借鉴,但不要面向「CSDN 编程」哦 奶奶要努力变强💪

在这里插入图片描述

前言(BB Time)

疫情假期的时候开始学习 STM32 ,因为在家所以疯狂划水,进度落下了很多,所以非常感谢返校后学长还有组内其他小伙伴的协助。 小车自然是嵌入式学习过程中的第一个「大项目」。从看「正点原子」的样例代码,实现相近功能,到自己动手做一辆小车车 着实是不小的跨步。 @万里羊 和 @nidie508 两位学长的博客对我提供了非常大的帮助(哈哈哈,面向 CSDN 编程),也是看了他们的博客让我下定决心认真写博客,记录自己所学,毕竟要对得起资料里的「5年码龄」😂。

👇BB 结束,正片开始👇 硬件 一、选型 1、开发板

小板子 实验室提供的 Mini STM32

开发板图片

寄存器版本 学长说库函数可能相对比较简单(我并没有这么觉得 微笑.jpg),而且后期的话一些功能使用库函数不方便(小声BB,我可能前期就被现实锤爆了根本没有后期 哈哈哈)

2、其他元件

底盘和小车轮 不知名的脏兮兮底盘和两个可爱的小电机

底盘图片

电机驱动模块 TB6612,噗嗤小伙伴焊的时候焊反了,但记住 IO 口就行了,问题不大👌

TB6612 图片

超声波模块 HC-SR04

HC-SR04 图片

红外模块 FC-03

FC-03 图片

蓝牙模块 唔,我找不到了哈哈哈🤦‍♂️

二、原理 1、电机

通过 TB6612FNG 来驱动电机,因为该模块是双驱动,所以只需一个即可驱动一对电机

VM:连接 12V 以内电源VCC:连接 5V 以内电源GND:连接电源负极STBY:该口清零则两组电机全部停转,置1后通过 AIN、BIN 控制正反转PWMA、PWMB:分别连接控制左右电机 PWM 输出的 IO 口AO、BO:1、2分别连接连接电机正负极AIN、BIN: 接口停止正转反转AIN1001AIN2010 接口停止正转反转BIN1001BIN2010 2、超声波 VCC:连接 5V 以内电源GND:连接电源负极TRLG:连接开发板上控制超声波发射的 IO 口ECHO:连接开发板上处理超声波接收信号的 IO 口 3、红外

红外发射端发射光线到地面,红外光线遇到白色被反射,接收端检测到反射光线后输出低电平;遇到黑色被吸收,接收端未检测到反射光线,输出高电平

VCC:连接开发板 5V 电源GND:连接电源负极D0:连接开发板接收红外信号的 IO 口 颜色电平白色0黑色1 4、蓝牙

小伙伴的部分

功能

我和小伙伴合作的小车主要有三个功能,不同的功能通过 STM32 开发板上的按键进行切换。

一、车轮滚滚 1、原理 直行:左轮和右轮同时正转后退:左轮和右轮同时反转停止:左轮和右轮同时停止左转:左轮反转,右轮正转右转:左轮正转,右轮反转 2、代码

wheel.h

#ifndef __WHEEL_H #define __WHEEL_H #include "sys.h" //TB6612连接 #define LEFT PAout(2) #define LIN1 PAout(0) #define LIN2 PAout(1) #define RIGHT PAout(3) #define RIN1 PAout(4) #define RIN2 PAout(5) //#define STBY PBout(0) //因为 STBY 直接连接到 3.3V 电源了,所以不需要使用 IO 口 #define left_PWM TIM2->CCR3//占空比 #define right_PWM TIM2->CCR4//占空比 void Wheel_Init(u16 arr,u16 psc); void GO(void);//执行直行操作 void STOP(void);//执行停止操作 void BACK(void);//执行后退操作 void turnLEFT(void);//执行左转操作 void turnRIGHT(void);//执行右转操作 #endif

wheel.c

#include "wheel.h" #include "delay.h" void Wheel_Init(u16 arr,u16 psc) { RCC->APB1ENR |=1ARR=arr;//自动重装载值 TIM2->PSC=psc;//预分频系数 TIM2->CCMR2|=7ODR|=1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3