51单片机课设—智能小车

  • 一、课设任务
  • 二、硬件设计及相关传感器模块
    • 1、车模
    • 2、51单片机
    • 3、红外循迹模块
    • 4、电机及驱动
    • 5、蓝牙模块
    • 6、硬件搭建
  • 三、程序代码
    • 1、main.c文件
    • 2、motor.c文件
  • 四、我的大学--“造车”史

注:本设计资源可在微信公众号:“Kevin的学习站” 中获取!如有问题,可以加我QQ:643470489一起交流哦!

一、课设任务

使用51单片机设计一台智能小车,可以实现循迹、避障、手机APP控制等功能!

二、硬件设计及相关传感器模块

1、车模

2、51单片机

可以使用最小系统板,也可以使用自己的学习板

3、红外循迹模块


红外循迹的原理:

4、电机及驱动

5、蓝牙模块

6、硬件搭建

原则:硬件搭建的不好,会让我们在调试过程中遇到很多玄学问题,比如:杜邦线接触不良,杜邦线短路等等,为了调试更加舒服,在搭建硬件平台时,接口要做一些处理,比如接口处用热熔胶粘好,防止脱落,布线要尽量整齐一些,如果要参加智能车类的比赛,一个好的布线布局,会让你的对手瞬间感受到压力!

三、程序代码

1、main.c文件

#include "reg52.h"
sbit KEY1 = P3^3;
sbit KEY2 = P3^4;
sbit KEY3 = P3^6;
sbit KEY4 = P3^7;
sbit OUT1 = P2^4;//避障左
sbit OUT2 = P2^5;//循迹左
sbit OUT3 = P2^6;//循迹右
sbit OUT4 = P2^7;//避障左   extern void delay_ms(unsigned int n);
extern void go_stop(void);
extern void go_up(void);
extern void go_back(void);
extern void go_left(void);
extern void go_right(void);
extern void go_upleft(unsigned int n);
extern void go_upright(unsigned int n);
extern void go_backleft(unsigned int n);
extern void go_backright(unsigned int n);
unsigned char recv;void uart_init(void)
{/*波特率设置*/TMOD = 0x20;//设置定时器T1的工作方式-2,即8位自动装填定时器TH1 = 0xFD;//波特率为9600TL1 = 0xFD; TR1 = 1;//打开定时器T1/*串口设置*/SM0 = 0;//设置串口工作方式1SM1 = 1;REN = 1;//使能串口接收允许位ES  = 1;//使能串行中断允许位EA  = 1;//使能中断允许位
}/*把str指向的字符串发送到串口,长度为len个字节*/
void uart_send(unsigned char *str,int len)
{unsigned char i;for(i=0;i<len;i++){SBUF = str[i];//对SBUF进行写操作while(TI == 0);//等待发送完成TI = 0;}
}void remote_control(void)
{while(1){switch(recv){case 0:go_stop();break;case 1:go_up();break;case 2:go_back();break;case 3:go_left();break;case 4:go_right();break;case 5:go_upleft(6);break;case 6:go_upright(6);break;}}
}
//红外循迹
void search_path(void)
{while(1){if(OUT2==0 && OUT3==0)//两个红外探测器没有再黑线中{go_up();}else if(OUT2==1 && OUT3==0)//左边的红外探测器在黑线中{go_left();}else if(OUT2==0 && OUT3==1)//右边的红外探测器在黑线中{go_right();}else if(OUT2==1 && OUT3==1)//到达终点{go_back();}}
}
//红外避障
void auto_avoid(void)
{while(1){if(OUT1==1 && OUT4==1)//没有障碍物{go_up();}else if(OUT1==0 && OUT4==1)//左边有障碍物{go_backleft(4);}else if(OUT1==1 && OUT4==0)//右边有障碍物{go_backright(4);}else if(OUT1==0 && OUT4==0)//前面有障碍物{go_stop();}}
}
void main(void)
{unsigned char ATcmd[]={"AT+NAME=GEC-zhangxueyou\r\n"};uart_init();if(KEY1 == 0)//修改蓝牙设备{uart_send(ATcmd,sizeof(ATcmd));delay_ms(1000);}else if(KEY2 == 0)//手机遥控模式{remote_control();}else if(KEY3 == 0)//循迹模式{search_path();}else if(KEY2 == 0)//自动避障模式{auto_avoid();}}void uart_isr(void)  interrupt  4 //串口中断处理函数
{if(RI == 1)//由接收完成引发中断{RI = 0;recv = SBUF;//对SBUF进行读操作SBUF = recv;while(TI == 0);TI = 0;}
}

2、motor.c文件

#include "reg52.h"sbit La = P2^1;
sbit Lb = P2^0;
sbit Ra = P2^3;
sbit Rb = P2^2;void delay_ms(unsigned int n)//延时
{unsigned char i;while(n--){for(i=0;i<113;i++);}
}
void go_stop(void)//停止
{La = 0;Lb = 0;Ra = 0;Rb = 0;
}void go_up(void)//前进
{La = 1;Lb = 0;Ra = 1;Rb = 0;delay_ms(100);
}void go_back(void)//后退
{La = 0;Lb = 1;Ra = 0;Rb = 1;delay_ms(100);
}void go_left(void)//原地左转
{La = 0;Lb = 1;Ra = 1;Rb = 0;delay_ms(100);
}void go_right(void)//原地右转
{La = 1;Lb = 0;Ra = 0;Rb = 1;delay_ms(100);
}void go_upleft(unsigned int n)//前进左偏
{unsigned int i=30;Ra = 1;Rb = 0;Lb = 0;while(i--){La = 1;delay_ms(n);La = 0;delay_ms(10-n);}
}
void go_upright(unsigned int n)//前进右偏
{unsigned int i=30;La = 1;Lb = 0;Rb = 0;while(i--){Ra = 1;delay_ms(n);Ra = 0;delay_ms(10-n);}
}void go_backleft(unsigned int n)//后退左偏
{unsigned int i=200;Ra = 0;Rb = 1;La = 0;while(i--){Lb = 1;delay_ms(n);Lb = 0;delay_ms(10-n);}
}
void go_backright(unsigned int n)//后退右偏
{unsigned int i=200;La = 0;Lb = 1;Ra = 0;while(i--){Rb = 1;delay_ms(n);Rb = 0;delay_ms(10-n);}
}

四、我的大学–“造车”史

我记得我是从大一上学期开始我的“造车史”的吧,当时是参加学校冬令营培训,使用51单片机完成的人生的第一台智能车,在小组团队比赛中,我的小车的成绩还不错,哈哈哈,后面参加了学校组织的循迹小车竞赛,与相差0.1s的差距拿了个二等奖;造第二台车是大二的第一学期,当时学完STM32想要做点东西练练手,于是使用STM32又做了台车,不过资料都不见了!大二学校冬令营当时我们作为学长又带领了学弟学妹们又做了51小车;到了大二下学期,准备第十五全国大学生智能汽车竞赛,又是造车哈,当时选的题目是AI电磁智能车,这次高大上了哈,用的是NXP-RT1064的MCU,使用深度学习算法+传统PID控制让智能车以最快的速度跑完赛道,赛后的成绩是9秒多吧,唉。。。其实可以更快的,比赛就是这样,有时候需要天时地利人和!综合自己的“造车”史,最后的感悟就是:有时候结果不一定重要,注重过程,把握过程中的每一个细节,把相关的原理都搞懂,然后多练习、多做总结,这才是最大的收获!
顺便在这里提一下,对参加智能车项目的学弟学妹们的一些建议吧:

1、硬件平台一定要搭好,尽量少用杜邦线,它本身信号就不太稳定,智能车相对来说模块比较多了,如果使用杜邦线,硬件出了问题很难查出来,会把你心态搞死!可以考虑用FPC接口,电源接口、电机接口可以用XT60接口。


2、电源要设计好,像使用开关稳压电源时注意下面几点:

①、 要明确电源的输入输出电主电路,把输入输出的元器件进行分离,注意大小电容的放置(先大后小原则);
②、布局要紧凑,采用一字或者L型布局方式;
③、如果系统需要多路开发电源工作时,尽量使相邻电感之间垂直放置,这样可以降低电磁干扰;
④、其他器件采用就近原则放置;
⑤、开关电源内部的信号连接线要加粗,一般采用10mil;
⑥、反馈电路部分,要远离干扰源和大电流的平面,反馈电源要从滤波电路里面取;
⑦、PCB布局时要注意电感下尽量不要布线,电感下要挖铜皮,不要增加电感的出线宽度。

不然效果如下图:


布局布线多参考芯片数据上的Layout。

推荐几家电源管理芯片做的比较好的公司:TI-德州仪器、ADI-亚德诺半导体、安森美、立锜科技。根据需求选择吧,比如方案既需要开关稳压的高效,又需要线性稳压的低纹波,就可以考虑电荷泵电路——优势:消除电感器问题、在更低的输入电压下提供更高效率,以及缩减解决方案尺寸。总之电源一定要设计好!

3、相关外设要做隔离,比如电机、舵机这类的要做隔离,不然容易烧核心板,都是痛苦的教训啊!

4、如果要使用干簧管进行停车,尽量自己设计好PCB,不要嫌麻烦;

5、PCB形状可以根据车模结构去设计,外设接口尽量使用连接性比较好的;

6、自己的车可以适当加点个性的东西哈,比如设计个前灯,尾灯什么的,寓意:快到只能让你看到车尾灯残影!哈哈哈

下面找了几台硬件搭的不错的智能车图片,仅供参考!

接下来的学习生涯里希望自己继续“造车”之路,在这个无人驾驶爆火的时代,补补脑洞,填填坑!
立个flag:做一台无人驾驶小车!等有时间就开始入坑,从主控、电机、电机驱动、电源模块、slam、双目识别、定位、路径规划等方面慢慢入手,我想这才算得上真正的造车吧!

声明:文中有关图片来源于互联网,如有侵权,请联系作者删除,谢谢合作!

想要获取更多资源,可以关注公众号:Kevin的学习站,之前听到过一句很有意思的话:“天下代码都在抄,抄来抄去有提高”,希望此文对您有一定的帮助,整理不易,但您的点赞、关注、收藏就是对我最大的鼓励!

课设-基于51单片机的智能小车(循迹+避障+APP控制)相关推荐

  1. 基于89C51单片机的智能小车——05.摇头避障小车

    开发所需添加的硬件 PWM开发SG90 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模 ...

  2. 基于51单片机的智能小车(寻迹功能)

    题目:基于C52的智能小车设计与制作 1设计目的 通过构建智能小车,培养设计并实现自动控制系统的能力,在实践过程中,熟悉以单片机为核心控制芯片,设计小车的检测,驱动和显示等外围电路,采用智能控制算法实 ...

  3. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

  4. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  5. 基于51单片机的智能小车系统设计

    原理图: 程序运行图: 部分程序: /******************************************************************************* * ...

  6. 基于51单片机的汽车测速仪表红外避障车辆高速测速方案原理图设计

    系统的功能分析 (附文件) 本设计由STC89C52单片机电路+红外避障传感器电路+LCD1602液晶显示电路+蜂鸣器报警电路+电源电路组成. 1.通过2个红外避障传感器检测人体反应的开始和结束,LC ...

  7. stm32的语音识别_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...

    功能描述及设计原理: 小车具有检测里程功能,在金属探测模式,槽型光耦会检测小车车轮的圈数,以此来计算小车行走的里程,并可以通过OLED屏幕显示出来.还可以显示小车的工作模式以及小车距离前方障碍物的距离 ...

  8. 智能车循迹避障磁铁检测比赛

    目录 比赛要求 小初基本任务: 高中基本任务: 任务分析 器材 分析 疑问 知识讲解 电机 舵机 舵机中值的调整 调试电磁传感器 小车测试: 归一化 滤波 PD控制舵机 PID控制电机 超声波检测障碍 ...

  9. 智能循迹避障小车C语言程序编写思路,基于单片机的智能小车红外避障循迹系统设计与制作...

    余秀玲 余秀娟 摘 要:随着科技的高速发展,人们对生活质量的要求越来越高,无人驾驶汽车已经被广为研发和试用,由此智能小车的快速发展也是在情理之中.通过对基于单片机的智能小车的硬件及软件设计分析,实现红 ...

  10. 【资料分享】基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告、基于51单片机和MAX1898的智能手机充电器设计

    1661[毕设课设]基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告 摘 要 随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到.这些技术的 ...

最新文章

  1. pandas dropna
  2. Python学习之For训练
  3. TurboMail邮件服务器荣膺“2012年度中国行业信息化最佳产品奖”
  4. VTK:绕线旋转用法实战
  5. 获取某一日期为当年的第几旬
  6. 《硝烟中的Scrum和XP》书摘(1)
  7. g++: command not found的解决
  8. Hadoop框架:HDFS高可用环境配置
  9. TexStudio编译报错“Critical Package xeCJK Error: The xeCJK package requires XeTeX to function. ..._criti”
  10. vs2010+silverlight4 error
  11. ICT通信运营企业的重建之服务升级(二)----ICT技术及产品种类
  12. 证书与签名(一):数字签名是什么
  13. turn.js 异步请求图片资源,实现电子书翻页效果 报错 ”The page 1 dose not exist”
  14. 今日恐慌与贪婪指数为14,恐慌程度与昨日持平
  15. C++之auto关键字
  16. 如何使用html、css制作一个期末作业网站【羽毛球体育运动主题html网页设计】
  17. cloudflare_如何使用Cloudflare Flan进行连续漏洞扫描
  18. 删除Windows11中设备与驱动器下的多余图标
  19. 爬虫实战-爬取房天下网站全国所有城市的新房和二手房信息(最新)
  20. Zend Studio 9.0.3正式版注册破解

热门文章

  1. 史上最全 MCC(移动国家码)和 MNC(移动网络码)
  2. 白光led 计算机模拟,大动态白光LED光辐射模拟器
  3. 汇编语言,两个数字的想加_8085微处理器中的汇编语言程序将两个16位数字相乘...
  4. UE4 记录 UE4 中贴图
  5. 中职计算机vb听课记录,《高级语言程序设计VB》听课笔记:12
  6. 拳皇97c语言编码,拳皇97金手指代码
  7. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第七节 按钮的创建和点击事件
  8. springboot志愿者管理系统
  9. Ubuntu 21.10 编写 eBPF tc 程序
  10. [ffmpeg][issues] bit_equal_to_one out of range: 0, but must be in [1,1]