查看: 2705|回复: 3
打印 上一主题 下一主题

智能小车

[复制链接]
跳转到指定楼层
沙发
发表于 2017-9-25 10:36:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 左耳 于 2017-9-25 10:36 编辑

江西理工大学因仑班

设计报告


项目名称:智能小车












2017年9月21日


  
ESP8266用于Stm32与手机之间进行通信,实现手机对小车进行控制与小车当前状态的返回。HC-SR04超声波模块可测量2cm-400cm的距离,使用三个HC-SR04置于车头,即可判断小车前方物体的位置,实现小车跟随的效果。走简单迷宫无需检测障碍物的距离,只需检测是否有障碍物的存在即可;在小车前左右各安装一个红外避障模块,就可以顺利走出迷宫了。采用PID控制技术,使小车更好得实现各种功能。
关键字:ESP8266,通信,遥控,小车跟随,简单迷宫,PID。




一、系统硬件介绍1.器件总览
器件名称
数量
器件名称
数量
STM32F103核心板
1
HC-SR04
3
自制电源端口扩展板
1
红外避障模块
3
小车底盘
1
L298n
2
ESP8266
1
锂电池
1
表1-1
2.自制电源端口扩展板
STM32F103核心板的电源端口较少,需要对其进行扩展;STM32F103核心板5V供电,而锂电池的电压为12V,需要一个5V稳压电路,所以自制电源端口扩展板上使用排针对12V、5V、3.3V电源进行扩展,焊接一个5V稳压电路和一个ESP8266接线电路。
图1-1 5V稳压电源电路

图1-2 ESP8266接线电路
3.ESP8266
图1-3 ESP8266 PCB图
ESP8266采用串口通信,判断UART成帧时间为20ms,一帧上限值为2k。ESP8266配置顺序如表1-2:
AT+CWMODE=3
AP兼Station模式
AT+CIPMUX=1
多路连接模式
AT+CIPSERVER=1,8080
开启sever模式,端口号8080
AT+CIPSTO=2880
服务器超时时间2880s
1-2
ESP8266发送数据命令:AP+CIPSEND=<id>,<length>;id为需要传输连接的id号,length发送字符的长度。

4.HS-SR04
图1-4 HC-SR04实物图
图1-5 HC-SR04时序图
工作原理:先给rtig发送至少10us的高电平该模块会发出8个40kHz的周期电平并检查回波。一旦检测出回波信号,echo输出回响信号。距离的计算公式:回响信号(高电平)时间/2*音速。

5.红外避障模块
简介:红外线接收管是在LED行业中命名的,是专门用来接收和感应红外线发射管发出的红外线光线的。一般情况下都是与红外线发射管成套运用在产品设备当中。
特征与原理:红外线接收管是将红外线光信号变成电信号的半导体器件,它的核心部件是一个特殊材料的PN结,和普通二极管相比,在结构上采取了大的改变,红外线接收管为了更多更大面积的接受入射光线,PN结面积尽量做的比较大,电极面积尽量减小,而且PN结的结深很浅,一般小于1微米。红外线接收二极管是在反向电压作用之下工作的。没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。当有红外线光照时,携带能量的红外线光子进入PN结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子---空穴对(简称:光生载流子)。它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。这种特性称为“光电导”。红外线接收二极管在一般照度的光线照射下,所产生的电流叫光电流。如果在外电路上接上负载,负载上就获得了电信号,而且这个电信号随着光的变化而相应变化。
分类:红外线接收管有两种,一种是光电二极管,另一种是光电三极管。光电二极管就是将光信号转化为电信号,光电三极管在将光信号转化为电信号的同
时,也把电流放大了。因此,光电三极管也分为两种,分别别是NPN型和PNP型。
图1-6 红外线发射管图                                        1-7 光敏接收管
作用:红外接收管的作用是进行光电转换,在光控、红外线遥控、光探测光纤通信、光电耦合等方面有广泛的应用。如何选择红外线接收管:红外线最重要的参数就是光电信号的放大倍率,一般的有1000-1300 、1300-1800 、1800-2500,这些对灵敏度有决定作用。 红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时候的总称。
本次采用的是红外对管模块:
1-8 红外对管模块




6.L298n
图1-9 L298n实物图
EN1、EN2可通过改变PWM的占空比的大小,来改变电机转速的大小。IN0、IN1电平状态对应电机的状态如表1-3,IN2、IN3操作与IN0、IN1相同。





IN0
IN1
电机状态
1
1
0
正转
2
0
1
反转
3
1
1
制动
4
0
0
制动
1-3
表中正转、反转仅表示电机状态,需要根据现实状态来判断。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

板凳
 楼主| 发表于 2017-9-25 11:19:31 | 只看该作者
本帖最后由 左耳 于 2017-9-25 16:45 编辑

二、小车功能设计1.L298n控制车轮

1)使用TIM3完全重映射引脚PC6、PC7、PC8、PC9输出PWM到L298n的EN使能端控制小车速度。可使用库函数中的TIM_SetCompare1(TIM3, speed_FL)、TIM_SetCompare2(TIM3,speed_FR)、TIM_SetCompare3(TIM3, speed_BL)、TIM_SetCompare4(TIM3, speed_BR)来分别改变各路PWM的占空比。

2)车轮控制引脚如表2-1
  
  
  
引脚
  
  
  
  
引脚
  
  
左前轮
  
  
PC2、PC3
  
  
右前轮
  
  
PC0、PC1
  
  
左后轮
  
  
PC10、PC11
  
  
右后轮
  
  
PC12、PC13
  
表2-1
3)小车方向控制
  小车方向
  
  控制方法
  
  小车方向
  
  控制方法
  
  前进
  
  四个轮子正转
  
  左转
  
  左侧轮子反转,右侧轮子正转
  
  后退
  
  四个轮子反转
  
  右转
  
  左侧轮子正转,右侧轮子反转
  
表2-2 小车方向控制表
注:
轮子正转:从小车右侧看,轮子顺时针旋转。
轮子反转:从小车右侧看,轮子逆时针旋转。

2.遥控小车
1)ESP8266初始化
初始化UART1,向ESP8266按顺序发送表1-2的命令,并且每条命令之间延时30ms。
2)解析ESP8266接收到的信息
  
‘+’
  
  
前导信息
  
  
‘:’
  
  
指令字符
  
  
后续信息
  
表2-3 ESP8266接受到的客户信息
先判断第一字符是否为‘+’,即是否为客户端发送的信息。再逐个字符查找,是否存在‘:’。若存在字符‘:’,则其后续字符为指令字符。后续信息可以忽略。表2-4为指令字符代表的指令。
  指令字符
  
  指令
  
  指令字符
  
  指令
  
  ‘0’
  
  后退
  
  ‘5’
  
  加速
  
  ‘1’
  
  前进
  
  ‘6’
  
  减速
  
  ‘2’
  
  停止
  
  ‘7’
  
  遥控小车模式
  
  ‘3’
  
  左转
  
  ‘8’
  
  跟随小车模式
  
  ‘4’
  
  右转
  
  ‘9’
  
  迷宫小车模式
  
表2-4
3)TCP调试辅助工具
图2-0 Easy-TCP操作界面
3.跟随小车
1)HC-SR04驱动程序
TIM2定时10ms,每次溢出先获取HC-SR04测量的距离,再trig发送一个15us的高电平。
  
7位
  
  
6位
  
  
5~0位
  
  
下降沿状态位
  
  
上升沿状态位
  
  
TIM4溢出次数记录(A1)
  
表2-5 HC-SR04状态变量
TIM4设为捕获模式,不分频,溢出值0xFFFF。当捕获到上升沿时,给对应的HC-SR04的状态变量上升沿状态位置1,记录捕获寄存器的值(C1),设置捕获事件为下降沿;TIM4溢出试,给三个HC-SR04状态变量中的TIM4溢出次数+1,当溢出次数过多,给下降沿状态位置1,结束一次测量,防止一次测量的时间过长的情况;当上升沿状态位为1,并且捕获到下降沿,给下降沿状态位置1,记录捕获寄存器的值(C2),设置捕获事件为上升沿。
当上升沿状态位为1时,才可以计算测量距离。距离计算公式为:d=A1*65535+C2-C1
每次计算完距离,将HC-SR04状态变量清0。
2)HC-SR04安装
将三个HC-SR04安装在车头,并形成一定的角度(可减少三个超声波之间的影响),离地高度为15cm(人走路时,提脚高度10cm)。
图2-1 HC-SR04安装俯视图
图2-2 HC-SR04安装正视图
3)跟随效果
当人车距离在80cm内采用PID算法计算出相应的PWM占空比,使小车快速的到达与人相距40cm的位置,并且保持40cm左右的距离。但是小车只会跟随人的一条腿,当跟随的那条腿提起时,有可能撞到另一条腿,所以设定左右两个HC-SR04中的一个测得距离<15cm时,小车停车。这样就可以在不撞到人的情况下达到很好的跟随效果。
4.迷宫小车
图2-3 红外对管模块安装
1)红外对管路径识别:当有墙时(迷宫使用纸箱片简单拼接而成),红外信号反射,红外接收管导通输出低电平0V;当没有墙时,红外接收管不导通,输出高电平+5V。通过调节滑动变阻器,调节红外发射的功率,从而得到不同距离电平信息。由于迷宫每个格子的宽度在30cm内,小车的宽度有15cm,所以测了20cm据。

图2-4 简单迷宫
数据如下表2:

表2-6 HC-SR04状态变量

从以上数据可以知道,距离一定时,当调节发射功率可以得到所需的电平信
息。出于实际考虑,避障的左前右3对红外对管调节在10cm的发射功率距离上,即距在10cm内有墙,红外接收管导通,输出低电平,当10cm内没有墙,红外接收管不导通,输出高电平。在路口处,由于距离大于10厘米,无法检测到墙,所以接收管关断,输出高电平。左前右3个方向可能出现的情况如下:
000左前右都有墙;001左前有墙,右没墙;010左右有墙,前没墙;011左有墙,前右没墙;100前右有墙,左没墙;101前有墙,左右没墙;110左前没墙,右有墙;111左前右都没墙。通过单片机不断检测这3个传感器的输出,即可得到墙壁的信息,为转弯等提供了支持。
2)直线行驶:从上图可以看到位子时,小车的左边近距红外触发,然后调整小车偏向右行驶。刚开始的的时候,近距红外调节在很短的距离上,使得小车走折线,后来通过调试,发现当把近距红外调大些,把小车固定在很窄的位子上,小车直线行驶效果非常好。
图2-5 直线行驶
3)转向处理:当小车进入到迷宫后,会遇到8中情况,这里只拿其中的一种进行说明,即001的情况。小车的左方跟前方有墙,接收红外导通,输出0,
图2-6 转向行驶
右方没墙,右方接收管关断,输出1,停住后,然后控制电机,使小车右转。在各种情况下,以右转优先,前行次之,然后才是左转,死路则后转。经过测试发现红外的反应良好,在各种路口下,返回对应的电平信息。策略如下表:

表2-7 路况处理
4)调试:理想很丰满,但现实却很骨感。理论上感觉没什么问题,但是在实际行驶的过程中还是遇到了不少的问题。
首先左右两边的红外对管的灵敏程度相差的比较多,导致转向紊乱,不受控制。通过各种方法测试,发现是杜邦线接触不良,刚开始采用的是右遍历的方式,改成左遍历后效果好了很多。
其次,转向也和想象中的不太一样,刚开始转向采用的是一侧的两个轮子前转,另一侧的两个轮子后转,后来实践发现这样转弯位移较小,转过弯车头还未进入通道,也就是三路红外对管都不能检测到障碍,导致原地打转。但同时也发现这是掉头比较好的方式,不需要很宽的轨道就能转向且不碰撞墙壁于是掉头采用的就是这种方式;又试了一下一转向的时候只有一侧的两个轮子转,另一侧的两个轮子不转,发现这样转弯幅度过大,还是无法顺利进入。最后试了一侧两个轮子都转,另一侧只有一个轮子反向转,另一个轮子不转,这样刚好实现恰到好处的转向,效果还不错。


三、项目总结
本次智能小车的设计与制作时间跨度比较久,中间也忙于专业课程的学习及考试,也参加了一些其他竞赛,导致拖了这么长时间才基本完成,非常不好意思。
本次智能小车实现了WIFI遥控,自动寻迹,智能跟随,走迷宫等功能。由于时间有限,视频功能由于本次选用的WIFI模块传输速度受限,只能缓慢的传输图片,所以暂时舍弃了视频功能,等以后有机会再继续完善。而且本作品中的有的功能也做的比较粗糙,算法也不够精准,自己的能力有待提高。
本次设计制作也再网上查阅了大连量资料,感谢那些积极分享知识的大神们,也感谢设计制作过程中汪永庄同学的帮助,最后,感谢因仑公司给我们这么好的机会锻炼自己,提供物力财力上的的支持,衷心的感谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2017-9-25 17:07:43 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表