广大的工程师及电子爱好者朋友们,大家好!
在我们“来实战”栏目上线后度过了第一个周末,相信经过这几天,大家更加关注我们进度。别急,我们这是一个比较基础的开源项目,所以我们前期准备了大量的工作,争取让大家都搞懂。无论是没有基础的朋友还是老手,希望看了以后都有所帮助。
关于本次开源项目,我们计划这样来操作:
1.对标摩尔吧中的相关主题智能小车项目(基于恩智浦平台智能汽车),我们这次用基于意法半导体的STM32平台来打造多功能智能小车,最终实物性能如何?基于意法半导体平台的智能小车PK恩智浦智能小车,谁更胜一筹?电路城开源项目组现在开始就通过逐步实操并最终打造出来,最后实物演示操作对比。
2.项目更新进度:每两天在《来实战》栏目上更新设计进度内容,在工程没有实质性进度的时候也可以在论坛发帖分享进行实施困难点、设计技术难点和原理讲解及器件分析等。
3.建立对应项目讨论群。利用现有已建立的技术Q群资源,我们在做每一个不同主题方向的项目时,为方便讨论同时活跃Q群用户,欢迎更多志同道合的小伙伴加进来参加开源项目讨论或给我们提供建议。
4.采购设计工具
(1)工具:电焊台(刀头、尖头)、焊锡丝、吸锡器、助焊膏、烙铁架子带夹子、松香、热熔胶枪、螺丝刀、万用表、剪钳、镊子、钳子、海绵、美工刀、元器件收纳盒、手持钻孔机等等,以后可以慢慢完善。示波器以及信号源、多功能电源。
(2)元器件及材料:采购电子元器件以及打板。
5.我们会定期举办开源项目直播交流,或制作一些项目设计过程中的小视频,在项目交流群中与大家分享,感兴趣的小伙伴马上加入我们吧。
6.建立开源项目贡献者名单荣誉榜,不定期在本开源项目页面更新。项目结束后,对该开源项目贡献突出的小伙伴,我们评选出“开源之星”给予神秘大奖奖励。开源项目贡献者名单会被注明在最终的开源项目方案中。
7.期待更多的志同道合的技术大咖加入我们“开源项目智囊团”,出谋划策,为开源贡献自己应有的力量。
PS:这是一个开源项目,项目已经被全部分享本项目的下载资料,供大家免费下载。
步骤1:设计的要求及技术指标
在该环节,我们将根据项目的流程,从以下四个方面来阐述我们对应的要求和指标:
1. 硬件系统(确定硬件设计思路,完成主要器件选型及相关资料查找);
1)硬件设计思路:我们初步定下来是使用意法半导体的STM32F103系列。可能有的朋友会问了,就做个小车子还用什么STM32,51单片机就能做好了,或者是向我们推荐更好的主控芯片。我们思考了很久,觉得51单片机还是太基础了,市场上应用的太少了,所以选择比较合适的STM32单片机。
2)主要器件的选择及性能要求
(3)时钟、复位和电源管理
(4)低功耗
(5)2个12位模数转换器
(6)DMA直接存储器
(7)快速I/O口
(8)7个定时器
(9)9个通信接口
2. 软件系统
我们的程序编写是一个什么样的框架?这个也是动手写程序之前的一个很好的问题,只有先确定框架,程序才会有条理。我们这个小车要实现循迹、避障、语音识别、通信、电机驱动,后面还有图像处理等等。
我们的遥控板和主控板不同的是重要的还有ADC的采集和数据的处理,这也是非常重要的一个知识点。所以程序在我们确定好硬件使用资源后,就可以制定框架进行程序编写了。
3.设计方案的模块选择
我们的小车设计已经到了实际阶段,基本完成了初步设计,今天我们就来讨论一下我们的具体方案。我们选择的是履带式坦克小车,原因很简单,相比四轮小车感觉要酷一点。另外一点呢对地形要求低,可玩性大大提高。电机采用的是CGM-25-370直流减速电机。电池我们采用大容量锂聚合物电池,INPUT:DC-12.6V,OUTPUT:10.8-12.6V.容量是3000mAh,小车的续航能力有了保证。主控板的电源管理上,我们采用了德州仪器的TPS54531。
我们根据官方资料以及网友提供的设计资料,设计了DC-DC斩波电路及LDO降压模块LDO降压采用了AMS1117-3.3这款常见的线性稳压LDO。大家可能对TPS54531不太熟悉,没关系,不是一定要使用TPS54531,电路城还有很多DC-DC斩波电路。我们的电机驱动采用的是A4950,为什么采用A4950呢?它的优点如下,主要是比L298N电机驱动起来要简单。我们通信采用大家熟悉的NRF24L01,nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。我们采用的是E01-ML01S模块。
整个设计过程中其实就是在思考着几点:第一点追求性价比,哪个参数好、便宜;第二点哪个应用简单,降低设计开发难度;第三点哪种方案更方便大家接受,最好是资料充足的,利于自行学习。最后给大家看一下我们组装的车体,主控板也会尽快和大家见面哟!
步骤2:硬件系统设计
硬件系统各模块功能介绍
红外避障模块主要有一对红外对管以及电压比较器LM393构成,原理如上图所示。
(1)红外模块:该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围 2~30cm,工作电压为 3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
我们给它上电,电源指示灯亮起,进入正常工作状态。当出现障碍物时,输出指示灯亮起,说明输出信号电平已经被拉低。这里测试一定要用白色障碍物,黑色探测距离最小,白色最大。如果是黑色障碍物,基本上是检测不到障碍物的存在,所以根据这个我们也可以使用该模块进行循迹操作。当模块对准黑线时,输出电平没有被拉低。当模块偏离黑线的时候,输出指示灯亮,电平被拉低。由此我们可以验证该模块应用于循迹是可以的。但是单模块还是没有办法很好的执行循迹,容易偏离丢失,推荐使用两个或者多个模块共同用于循迹。假设两对红外对管放在车头,对管A检测到是黑线,电平不改变;对管B检测到非黑线,电平被拉低,这个时候车辆便要往A方向单位移动,这样就可以较好的实现循迹。使用四路的话呢,有两路可以用来防碰撞、防跌落或者避障。
这种红外对管模块用来避障有一个缺点,那便是距离太短,有效距离范围 2~30cm。后面会给大家介绍到超声波模块,探测距离会长一点,可用于避障也可用于测距。
(2)语音模块:LD3320芯片是一款“语音识别”专用芯片,基于ICRoute公司设计生产。该芯片集成了语音识别处理器和部分外设电路,包括麦克风接口、AD、DA转换器、声音输出接口等。本芯片高效与节能,不需要外接任何如Flash、RAM等的存储芯片,直接集成在功能所需的器件即可以实现语音识别/声控/人机对话功能。另外,可以任意动态编辑识别的关键词语列表。首先我们根据资料掌握该模块串口接收使用功能,这里设置要传输的字节,比如我们发送AA BB CC DD。这里总共是13个字节,其中可用字节是10个,后面必须有FF FF FF做结束标志。通过语音触发以后,就开始向串口发送相关信息。使用USB转TTL模块连接电脑,打开串口调试器,做出相应语音控制,便能将对应的数据通过串口发送至串口调试工具。我们可以看到,电脑串口调试工具成功接收到了语音识别模块发送的数据。如果该模块连接的是小车主控板,那么就可以通过串口将所要传输的字节发送给主控板,主控板会经过处理作出相应动作。所以该模块用于简单语音控制是非常便利的,我们可以通过语音来控制小车的简单动作,比如:前进、后退、转圈以及转弯。
那么,同理,在我们小车实现某些动作后也可以将定义好的数据通过串口传输至语音处理模块,播放相应提示词。所以由于这个模块的使用大大方便了我们控制,但是这个并算不上真正意义上的语音控制,没有学习功能,没有数据库,我想这只能算作人工制杖了。
步骤3:软件系统设计
软件系统各模块功能介绍
(1) PWM输出测试:在我们硬件通过测试后就要进行程序的编写了,通过定时器来进行PWM输出。前面也有跟大家提到过,STM32F103CBT6有7个定时器。这3个16位的定时器,每个定时器有多达4个可做PWM输出的通道,所以最多可以有12路PWM输出。前面也有跟大家介绍A4950,可以控制1个电机正反转,需要2个PWM引脚。(如果不需要反转,只需要1个PWM引脚。)使用比L298简单的多,程序编写也比较方便。配置管脚参数,输出比较通道的初始化,定时器的初始化。时间基数单位设置:TIM_TimeBaseStructure.TIM_Period这个是设置计数终止值,假设是7200-1,则在7200个频率后产生一个更新和中断。TIM_TimeBaseStructure.TIM_Prescaler简单说就是从0开始计数。TIM_TimeBaseStructure.TIM_CounterMode简单说就是设置计数方式,定时器分为向上、向下、中心对齐三种计数方式。经过我们上述步骤后就能产生pwm输出了,因为我们要进行电机控制,所以还需要一个pwm输出控制函数,来调节pwm输出。如:这样其实就相当电机控制的接口函数做出来了,通过我们这个函数可以实现完美电机控制,经过测试是可用的。注意,这里我们只使用了TIM2的通道1和通道2;TIM3的通道3和通道4。这个地方有点不明白的同学可以去看一看A4950的控制方式。
(2)程序编写及清单:通过几天的测试程序编写,可以实现对小车的遥控控制。通过NRF24L01实现遥控控制,可控制前进、后退、左转、右转。原理就是遥控ADC采集摇杆电位器的电压通过处理再传给主控板实现对两个电机的控制。这个控制的难点其实就是PWM输出的程序的编写,因为A4950模块通过脉宽调制(PWM)控制两个直流电动机,输入端通过应用外部 PWM 控制信号以控制直流电动机的速度与方向。内部同步整流控制电路用来降低脉宽调制 (PWM) 操作时的功率消耗。其次呢就是NRF24L01无线通信程序的编写,但是网上有很多例程,所以相对来说还比较好解决一点。前面那个控制A4950驱动的程序例程比较少,需要自己摸索。
步骤4:实物测试及项目总结
1.焊接(待元器件集齐,打板完成,进行焊接以及相关结构制作,模型安装等);
2.软件调试;
3.硬件调试(结合软硬件调试,完成程序修改,确保功能实现,验证硬件部分没有问题);
4.设计结果分析(测试功能、验证相关参数,有什么不足以及改正,对做的不好的地方留时间补救);
5.测试过程(完整测试的发表,实测);
6.项目总结
版权声明:本文系电路城原创内容,未经授权禁止转载,侵权必究!