首页 > 编程知识 正文

循迹小车组装教程,制作循迹小车的最小系统板

时间:2023-05-03 17:22:01 阅读:175787 作者:823

基于STM32F103C8T6的跟踪避障购物车完全制作过程本文适合寒冷的芝麻观看

为了本人的小项目,制作基于STM32的避免跟踪购物车前后花了约一个星期。 在这个过程中也参考了很多大神共享的资料,学到了很多东西。 但是,资料很零散,有些东西很难找。 在这里,我想分享一下自己制作购物车的整体过程的记录。 希望能帮上忙。

我自己也很冷。 我以前做过arduino的避免跟踪购物车。 关于stm32也只是看了一点视频,还不是很好。 这次的制作也相当于学习stm32。 因此,本文适合刚入门的同学参考,虚心接受各大神的指导。

如果你一点基础都没有,建议先看下原子哥F1开发板的视频,他们的资料都是开源的,看完你才有基础可以做这个小车。

资料链接:正点原子资料下载。

不用说,我开始做购物车了。 **我的说明流程如下。

//第123点是基本设定第456点是制作跟踪购物车,第789点是制作避障购物车。

1、罗列必要的硬件

2、STM32F103C8T6(程序的创建和写入)的使用方法

3 )如何驱动电机(使车前进后退,转弯) ) ) )。

4 )如何用pwm调节电机转速(调节小车速度) ) ) ) )。

5 ) I )如何设置o端口读取跟踪模块的信号(检测黑线) )。

6 )完成跟踪购物车的创建(创建跟踪主函数) )。

7 )如何使用pwm将舵机旋转至适当角度

8、如何配置定时器使用超声波模块测距

9、完成挡墙小车制作*

我这一周几乎每天都花一点时间逐一解决这些问题,完成了汽车的制作。 果然是轻松的一个人。 制作小车所需的硬件1STM32F103C8T6最小系统主板24个车轮智能小车底板3L298N电机驱动模块4舵机SG90云台和超声波模块HC-SR0452节18650电池6TCRT5000跟踪模块7爸爸ob下载器95v旋转3.3V直流-直流模块100.96英寸iic通信可选的led屏幕以上是我用来制作购物车的硬件。 当然,其他工具就像电烙铁,橡皮枪等都是必需品。 我不说

他们大概是这样的。 (淘宝都搜索得到) :

第二种方法是使用stm32F103C8T6 (程序编写和写入)得到这个最小的系统主板,然后使用MDK编写程序驱动程序。 我也是第一次实践STM32,所以使用这个板的时候也走了一些弯路。 以下说明我遇到的几个问题。 一般解决了这些问题,正常的程序编写和写入就没问题了。

1、用keil4写的项目用MDK5写警告,就是用MDK5打开用旧版本写的项目有这样的提示:

解决方法很简单。 根据上面的提示做就行了。 我直接下载了一个叫Legacy Support的支持包,安装后可以直接用MDK5编程。 具体操作请参考以下博主介绍:

链路: ARM-IDE MDK5与MDK工程不兼容。

2 )看看如何使用SWD模式的下载程序,发现手上的这个F1最小系统主板上有没有被简化为http://www.Sina.com (管脚的名字是http://www.Sina.com) 在SWD模式下下载程序时,只需SWIO、SWCLK两条线即可完成程序的下载,非常方便。

最小系统主板的这4个针脚与对应jlink ob下载器的这4个针脚连接,通过下载器连接电脑,可以在SWIO,SWCLK,3V3,GND下载。

如下连接,将电脑连接到usb端口即可。

MDK需要以下设置:

单击上图中的Settings以转至下图中的选项。

IO,CLK,G,V3

3、将STM32F103C8T6跳线帽设置为FLASH模式将程序下载到FLASH是为了让程序可以在关机后再开机的情况下以儒雅的方式运行。

在MDK5上进行相应的设置

那么,到此为止,应该可以正常地编写和下载程序。 最初编制程序最好拿着从卖方那里得到的测试工序来改写。 因为如果带着别的工序编译的话,可能会出现堆积如山的错误,打击自信。 首先,请尝试编写提高某个IO端口的程序。 请下载到板上,然后用万用表测量该引脚的电平。 如果是这样的话,就可以使用这个主板编写下一个程序了。

例如,这个程序:

intmain(void ) gpio _ inittypedefgpio _ init structure; RCC _ AP B2 periphclockcmd (RCC _ AP B2 per iph _ gpioa,ENABLE ); 支持GPIO的外围时钟gpio _ init structure.gpio _ pin=gpio _ pin _ 1; //选择要使用的GPIO引脚GPIO_Ini

tStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚模式为推免输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置引脚速度为50MHZ GPIO_Init(GPIOA, &GPIO_InitStructure);//调用库函数,初始化GPIOGPIO_SetBits(GPIOA,GPIO_Pin_1); //将GPIOA1拉高}

编译后烧录到板子上,测试A1引脚的电压为3.6V就ok。
我这里上传了卖家给的最小系统板测试资料:
链接: https://download.csdn.net/download/weixin_43924857/11647457.

三,如何使电机动起来(使车子前进后退和转弯)

要想让电机动起来,就需要电机驱动了,如下:

我这里只讲一下这个驱动怎么接线,以及它的工作方式和使用方法等,会用就行,要看更详细的介绍可以看这位博主的博客:链接: https://blog.csdn.net/singular_man/article/details/87285597.

1,这个驱动怎么用呢?

我们只需要做以下操作即可:
1,12v输入和电源地接2节18650供电
2,单片机IO控制输入接最小系统版的4个IO口,待会我们再写程序控制这几个IO口
3,OUT1和OUT2是一对,分别接小车一侧电机两级,至于电机的两级具体该怎么接,等后面我们设置完程序运行后,要使它们转动的方向一直就行了。OUT3和OUT4同理。
4,我们通过IN1,IN2,IN3,IN4分别控制OUT1,OUT2,OUT3,OUT4。其中IN1,IN2,IN3,IN4与单片机连接,设置他们的高低电平即可完成对电机驱动简单的控制。

它的工作方法是这样的:
首先我们将OU1和OUT2分别接电机的两极,这时我们控制单片机使输入端IN1接入高电平,则相应的OUT1端也就变为高电平;将IN2接入低电平后相应的OUT2也就变为低电平,OUT1和OUT2间有了电位差,这样电机就能转起来了,很简单。

2,如何写程序使小车前进后退和转弯呢?

设计思路就是设置4个IO口的高低电平
我的IO口与电机驱动是这样连接的:A1–IN1;A2–IN2;A3–IN3;A4–IN4;
再看下面这个代码,我简单的写了一个前进和一个左转函数

void car_go(void);void car_left(void); int main(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIO的外设时钟 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//选择要用的GPIO引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚模式为推免输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置引脚速度为50MHZ GPIO_Init(GPIOA,&GPIO_InitStructure);//调用库函数,初始化GPIOcar_go();//前进}void car_go(void) //前进{ GPIO_SetBits(GPIOA,GPIO_Pin_1); //控制左边轮胎GPIO_ResetBits(GPIOA,GPIO_Pin_2);GPIO_SetBits(GPIOA,GPIO_Pin_3); //控制右边轮胎GPIO_ResetBits(GPIOA,GPIO_Pin_4);}void car_left(void) //左转{ GPIO_SetBits(GPIOA,GPIO_Pin_1); //控制左边轮胎GPIO_ResetBits(GPIOA,GPIO_Pin_2);GPIO_ResetBits(GPIOA,GPIO_Pin_3); //控制右边轮胎GPIO_SetBits(GPIOA,GPIO_Pin_4); }

由于主函数里调用的是car_go函数,这个代码编译下载后车子就会向前走,如果你的轮子转反了的话,简单的方法就是把电机的正负极换个位置接就行了。

好了,这篇文章已经很长了,今天就先码到这里,整个完整过程会分为上中下三篇,剩下两篇过两天慢慢码完再发。

下面是我所制作的小车成品图,因为模块都是独立的,所以线比较多。

下面是我写的已经测试完成了的工程,主函数里有两个循环,分别是循迹和避障循环,他们是单独工作的,引用掉一个再打开另一个就行。
https://download.csdn.net/download/weixin_43924857/11650617
当然循迹和避障的策略都是我自己为了完成任务写的,比较简单,能够实现循迹避障功能,到后面你已经会操作各个模块后,自己写个更好的循迹避障策略是完全没有问题的,或者是用我的工程,里面的各模块函数也都写好了,直接调用就行。

下面是中篇地址:
基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----中篇(第456点)

工程文件已经放到百度网盘:
链接:https://pan.baidu.com/s/1VSRC418Tz8uLCF8cjrIY1g
提取码:7m9y

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。