智能小车_智能小车循迹 - CSDN
智能小车 订阅
智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、准确定位停车,远程传输图像等功能。智能小车可以分为三部分——传感器部分、控制器部分、执行器部分。控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。 展开全文
智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、准确定位停车,远程传输图像等功能。智能小车可以分为三部分——传感器部分、控制器部分、执行器部分。控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。
信息
发展背景
汽车工业的迅速发展
外文名
intelligent car
组成部分
传感器部分、控制器部分等
中文名
智能小车
特    色
显示时间、速度、里程等
智能小车发展背景简介
51智能小车 智能小车 随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。在智能小车现今发展最好的当是 飞思卡尔 举行的比赛,采用先进的摄像头采集黑线线路,此时要求芯片的运算速度是非常高的。
收起全文
精华内容
参与话题
  • 智能小车的设计与制作

    千次阅读 2017-09-20 17:49:31
    智能电动小车》 摘要:本课题组设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位);检测路面...

    《智能电动小车》

    摘要:本课题组设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位);检测路面所放置的铁片的个数的功能;计算并显示所走的路程和行走的时间,并可发声发光。作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的应用实例。
        作品以两电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元AT89S52单片机,处理数据后完成相应动作,以达到自身控制。电机驱动电路采用高电压,高电流,四通道驱动集成芯片L293D。其中避障采用红外线收发来完成;铁片检测部分采用电感式接近开关LJ18A3-8-Z/BX检测;黑带检测采用红外线接收二极管完成;趋光部分通过3路光敏二极管对光源信号的采集,再经过ADC0809转化为数字信号送单片机处理判别方向。由控制单元处理数据后完成相应动作,实现了无人控制即可完成一系列动作,相当于简易机器人。
    关键字:智能控制   蔽障 红外线收发  寻迹行驶 趋光行驶
    1.总体方案论证与比较
         方案一:采用各类数字电路来组成小车的控制系统,对外围避障信号,黑带检测信号,铁片检测信号,各路趋光信号进行处理。本方案电路复杂,灵活性不高,效率低,不利于小车智能化的扩展,对各路信号处理比较困难。
         方案二:采用ATM89S52单片机来作为整机的控制单元。红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,黑带采用光敏二极管对光源信号采集,再经过ADC0809转化为数字信号送到单片机系统处理。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求。
         比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。方案二的基本原理如图1所示。


    避障部分采用红外线发射和接受原理。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,产生的高低电平信号经过处理后,完成相应的记录数目,驱动蜂鸣器发声。黑带寻迹依*安装在车底部左右两个光敏二极管对管来对地面反射光感应。寻光设计在小车前端安装3路(左、中、右)光敏电阻对光源信号采集,模拟信号经过ADC0809转化为数字信号送到MCU处理。记程通过在车轮上安装小磁块,再用霍尔管感应产生计数脉冲。记时由软件实现,显示采用普通七段LED。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现。

    2
    .模块电路设计与比较
    1)
    避障方案选择
         
    方案一:采用超声波避障,超声波受环境影响较大,电路复杂,而且地面对超声波的反射,会影响系统对障碍物的判断。
        
    方案二:采用红外线避障,利用单片机来产生38KHz信号对红外线发射管进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。外界对红外信号的干扰比较小,且易于实现,价格也比较便宜,故采用方案二。
        
    红外线发射接受电路原理图如图2所示。
         
    采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此用250Hz的信号对38KHz的载波进行调制,这样减少外界的一些干扰。 接收管输出TTL电平,有利于单片机对信号的处理。采用红外线发射与接收原理。利用单片机产生38KHz信号对红外线发射管进行调制发射,发射距离远近由RW调节,本设计调节为10CM左右。发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。利用单片机的中断系统,在遇障碍物时控制电机并使小车转弯。由于只采用了一组红外线收发对管,在避障转弯方向上,程序采用遇障碍物往左拐方式。如果要求小车正确判断左转还是右转,需在小车侧边加多一组对管。外界对红外信号的干扰比较小,性价比高。 。调试时主要是调制发射频率为接收头能接收的频率,采用单片机程序解决。发射信号强弱的调节,由可调精密电阻调节。


    2)检测铁片方案选择
         方案一:采用电涡流原理自制的传感器,取才方便,但难以调试,输出信号也不可*,成功率比较低,难以准确输出传感信息。
         方案二:采用市面易购的电感式接近开关,本系统采用市面比较通用LJ18A3-8-Z/BX来完成铁片检测的任务。虽然电感式接近开关占的体积大,对本是可以接受,且输出信号较可*,稳定性好,受外界的干扰小,故采用方案二。
         检测铁片电路原理图如图3所示。


    3)声音提示
        
    方案一:采用单片机产生不同的频率信号来完成声音提示,此方案能完成声音提示功能,给人以提示的可懂性比较差,但在一定程度上能满足要求,而且易于实现,成本也不高,我们出自经费方面考虑,采用方案一。
        
    方案二:采用DS1420可分段录放音模块,能够给人以直观的提示,但DS1420录放音模块价格比较高,也可以采用此方案来处理,但方案二性价比不如方案一。
    4)
    黑带检测方案选择
        
    方案一:采用发光二极管发光,用光敏二极管接收。由于光敏二极管受可见光的影响较大,稳定性差。
        
    方案二:利用红外线发射管发射红外线,红外线二极管进行接收。采用红外线发射,外面可见光对接收信号的影响较小,再用射极输出器对信号进行隔离。本方案也易于实现,比较可*,因此采用方案二。黑带检测电路图如图4所示。
        
    输出信号进入74LS02。稳定性能得到提升。当小车低部的某边红外线收发对管遇到黑带时输入电平为高电平,反之为低电平。结合中断查询方式,通过程序控制小车往哪个方向行走。电路中的可调电阻可调节灵敏度,以满足小车在不同光度的环境光中能够寻迹。由于接收对管装在车底,发射距离的远近较难控制,调节可调电阻,发现灵敏度总是不尽人意,最后采用在对管上套一塑料管,屏蔽外界光的影响,灵敏度大幅提升。再是转弯的时间延迟短长控制。


    3)计量路程方案
        
    方案一:利用红外线对射方式,在小车的车轮开一些透光孔来计量车轮转过圈数,从而间接地测量路程。
         
    方案二:利用霍尔元件来对转过的车轮圈数来计程,在车轮子上装小磁片,霍尔元件*近磁片一次计程为车轮周长。此方案传感的信号强, 电路简单,但精度不高。
        
    如果想达到一定的计量精度,用霍尔传感元件比较难以实现,因为在车轮上装一定量的小磁片会相互影响,而利用红外线对射方式不会影响各自的脉冲,可达到厘米的精度,因此采用方案一来实现。计量路程示意图见图5
         
    通过计算车轮的转数间接测量距离,利用了霍尔元件感应磁块产生脉冲的原理,再对脉冲进行计数。另可采用红外线原理提高记程精度,其方法为在车轮均匀打上透光小孔,当车轮转动时,红外光透射过去,不断地输出脉冲,通过单片机对脉冲计数,再经过一个数据的处理过程,这样就可把小车走过的距离计算出来,小孔越多,计数越精密。


    3)智能车驱动电路
        
    方案一:采用分立元件组成的平衡式驱动电路,这种电路可以由单片机直接对其进行*作,但由于分立元件占用的空间比较大,还要配上两个继电器,考虑到小车的空间问题,此方案不够理想。
         
    方案二:因为小车电机装有减速齿轮组,考虑不需调速功能,采用市面易购的电机驱动芯片L293D,该芯片是利用TTL电平进行控制,对电机的*作方便,通过改变芯片控制端的输入电平,即可以对电机进行正反转*作,很方便单片机的*作,亦能满足直流减速电机的要求。智能车驱动电路实现如图6所示。


    小车电机为直流减速电机,带有齿轮组,考虑不需调速功能,采用电机驱动芯片L293D。L293D是著名的SGS公司的产品。为单块集成电路,高电压,高电流,四通道驱动,设计用来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达),和开关电源晶体管。内部包含4通道逻辑驱动电路。其额定工作电流为1A,最大可达1.5A,Vss电压最小4.5V,最大可达36V;Vs电压最大值也是36V,经过实验,Vs电压应该比Vss电压高,否则有时会出现失控现象。表1是其使能、输入引脚和输出引脚的逻辑关系。
                                                   表1 引脚和输出引脚的逻辑关系

         L293D可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的*作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,能够实现对应的动作,调试通过。
    3) 寻找光源功能
         方案一:在小车前面装上几个光电开关,通过不同方向射来的光使光电开关工作,从而对小车行驶方向进行控制,根据光电开关特性,只有当光达到一定强度时才能够导通,因此带有一定的局限性。
         方案二:在小车前面装上参数一致的光敏二极管或者光敏电阻,再通过A/D转换电路转换成数字量送入单片机,单片机再对读入的几路数据进行存储、比较,然后发出命令对外围进*作。对方案一、二进行比较,方案二硬件稍为复杂,但能够对不同强度的光进行采集以及比较,*作灵活,所以采用方案二。
         寻找光源电路图如图7所示。


    3)显示部分
         
    方案一:采用LCD显示,用单片机可实现显示数据,但显示亮度和字体大小在演示时不尽人意,价格也比较昂贵。                
         
    方案二:采用LED七段数码管,采用经典电路译码和驱动,电路结构简单,并且可以实现单片机I/O口的并用,显示效果直观,明亮,调试容易。故采用LED数码管显示。
    4)
    显示电路如图8所示。


    3. 系统原理及理论分析
    1) 单片机最小系统组成
          单片机系统是整个智能系统的核心部分,它对各路传感信号的采集、处理、分析及对各部分整体调整。主要是组成是:单片机AT89S52、模数转换芯片ADC0809、小车驱动系统芯片L293D、数码管显示的译码芯片74LS47、74LS138及各路的传感器件。
    2)避障原理
         采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此用250Hz的信号对38KHz的载波进行调制,这样减少外界的一些干扰。 接收管输出TTL电平,有利于单片机对信号的处理。
    3)计程原理
         通过计算车轮的转数间接测量距离,在车轮均匀打上透光小孔,当车轮转动时,红外光透射过去,不断地输出脉冲,通过单片机对脉冲计数,再经过一个数据的处理过程,这样就可把小车走过的距离计算出来。
    4)黑带检测原理
         利用光的反射原理,当光线照射在白纸上,反射量比较大,反之,照在黑色物体上,由于黑色对光的吸收,反射回去的量比较少,这样就可以判断黑带轨道的走向。由于各路传感器会对单片机产生一定的干扰,使信号发生错误。因此,采用一级射极输出方式对信号进行隔离,这样系统对信号的判断就比较准确。
    4. 系统程序设计
         用单片机定时器T0产生38KHz的方波,再用定时器T1产生250Hz的方波对38KHz方波进行调制。为了提高小车反应灵敏度,对红外线接收信号及黑带检测信号都采用中断法来处理。用定时方法对铁片检测、计量路程、倒车、拐弯及数码管动态扫描进行处理。
         主程序流程图见图9,各子程序图见图10、图11、图12。





    6.调试及性能分析
         整机焊接完毕,首先对硬件进行检查联线有无错误,再逐步对各模块进行调试。首先写入电机控制小程序,控制其正反转,停机均正常。加入避障子程序,小车运转正常,调整灵敏度达最佳效果。加入显示时间子程序,显示正常。铁片检测依*接近开关,对检测信号进行处理并实时显示和发出声光信息,无异常状况。路程显示部分是对霍尔管脉冲进行计数,为了尽量达到精确,车轮加装小磁片。接着对黑带检测模块调试,发现有时小车会跑出黑带,经判断是因为红外线收发对管灵敏度不高,调整灵敏度后仍然达不到满意效果,疑是受环境光影响,利用塑料套包围红外线收发后问题解决。趋光电路主要由三个光敏电阻构成,调整三个光敏电阻的角度同时测试软件,以最佳效果完成趋光功能。
         整机综合调试,上电后对系统进行初始化,接着控制电机使小车向前行驶,突然发现系统即刻进入外部中断1,重复多次测试,结果都是自动进入该中断。推断是由刚上电时电机起动所引起,为了避免上电瞬间的影响,在启动小车后延时几毫秒,再开外部中断,结果问题解决。允许的话应采用双电源供电,即电机和电路应分开供电,L293D与单片机之间采用隔离信号控制。这样就不会出现小车启动时程序出错和数码管显示闪动的问题。在计程精度上,可用红外线原理获得较高精度。
    7.结论
        通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化,智能小车能够完成各项功能到达车库。
    8.参考文献
      《单片机应用技术》 
      《周立功单片机》
      《单片机原理与应用》
      《8051单片机程序设计与实例》
      《MCS-51单片机实验指导》 


    展开全文
  • 自己动手做个智能小车(1)

    万次阅读 2014-06-02 22:17:28
    自己动手做个智能小车(1) ——介绍及工具材料准备     目前物联网发展很迅速,软硬结合也越来越流行。对硬件有些兴趣的我,也想来做点业余玩具。   这是个业余小作品,可以学习一些基本硬件、单片机,底层...

    自己动手做个智能小车(1)


    ——介绍及工具材料准备


     CSDN上图不好发,移至:http://www.cnblogs.com/zjfstudio/p/3764332.html 


     


    目前物联网发展很迅速,软硬结合也越来越流行。对硬件有些兴趣的我,也想来做点业余玩具。


     


    这是个业余小作品,可以学习一些基本硬件、单片机,底层软件,Android编程等知识,同时不失趣味性。


     


    直接上图:




    怎么每张图有个手机?—— 哈哈那是遥控器。


     


    介绍:


    这个小车是一个三轮车,为啥采用三轮:方便、灵活、控制简单,比如要转个弯,只需要把这边的轮子速度降下来,就转过去了;还可以原地旋转,两个轮子速度相同,方向相反即可,这是四轮车办不到的。


    问,边上的手机做啥,遥控器呗。为啥选手机,不自己做一个?手机具有灵活的扩展性,手机有重力感应,可以利用重办感应来操作小车,当成方向盘,而不是简单的按键。


    这个小车硬件复杂否?不复杂,硬件电路只有控制轮子转动,以及与手机通讯,总控制程序在手机中,所以软件扩展性很强。如果按个支架,手机放在小车上,那这手机就是小车的大脑,这可是无人驾驶车的发展方向啊:)开个玩笑,得很深入的研究了。


    扩展性,可以看出,在软件上的延伸还是很大的。比如:架个支架,把手机放上去, 手机再连接个wifi,然后用笔记本再与手机socket通讯,好了一台可移动的旋转式摄像头产生了,手机本身有个摄像头,可以利用,小车可以走,可以360度旋转。可以把小车放在家里,在上班地方,也可以远程看看家里的情况。 如果小车上再按个红外线发射器, 那就可以远程把家里的控调也开一开。这扩展性还是很有意思的。


    其实利用手机上的一些设备进一步扩展,还是很方便的,那在接下来的改造中,只需要调调软件即可。比如手机中有重力感应,距离感应,光感应,那都可以利用起来。


     


    制作思想:


    网上有很多智能小车的做法,以及现成的电路板,接接即可运行。但是发现拿回来,也仅仅是一个高档的电子玩具而已,对自己其本没有什么长进。还是动手做一个吧。


    拿着网上很多比赛用的小车一看,发现电路程序特别复杂。电路中各种传感器,各种底层控制协议,太复杂了。于是想到这一些我们的智能手机中占了很大一部份,而且编程方便,基于IOS或Android,所以硬件部门就可以大大简化。


    控制芯片,为了方便当然还是选用单片机咯,写点小程序即可。


    与手机通讯部份,这一块比较让我纠结,最开始想到采用USB连接,usb有主从设备之分,手机一般是从设备,所以小车只能是主设备,最后,小车的主设备程序运行成功,可以手上鼠标之类,但是Android为作从设备的编程一直没有成功。所以暂时这一块放弃,采用了蓝牙通讯模块与手机交互,这块开发也简单。至于USB方式,放到第二期吧,后面来研究。


    有了单片机,当然离不了编程,编程器当然也得动手做一个咯:



    最后,小车上接了一块屏,一来可以显示点信息,二来在开发时可以显示点调试信息。


     


    材料信息:


    车子底盘:



    当然这一块就不能自己动手做了,网上买个现成了的,一般电机、轮子都会带上的。


       

    数量

     

    89C52

    1

    单片机选STC,主要是编程器方便,串口即可写入。

    100x150MM万能板

    1

    智能小车的主要底板

    53x100MM万能板

    1

    做编程器的底板

    3节5号电池盒

    1

    电源供应

    当然肯定还得有3节电咯,材料中就不列了。建议用可充电电池。

    晶振

    11.0592m

    1

    单片机用

    瓷片电容30PF

    2

    单片机用

    独石电容0.1uF(104)

    4

    电机电路用

    PC817 DIP4 光电耦合

    6

    将控制电路与电机电路分开

    DC-DC升压模块(0.9V~5V)升5V 600MA

    1

    采用3.6v电源,但单片机要5v,升压

    A1SHB MOS场效应管

    4

    电机控制电路

    A2SHB MOS

    4

    电机控制电路

    72V0.5A自恢复保险丝

    1

    电源入口

    3MM发光二极管

    1

    示意灯

    74HC04N

    2

    与门电路

    LCD显示屏1602A-5v 蓝底白字

    1

    调试用

    单排母2.54mm

    1

    显示器接插件

    IC40

    1

    插单片机

    IC14DIP

    4

    与门芯片及其他用

    单头六角柱M3*10mm+6 配母

    4

    车底座撑起主板用

    三极管9013

    8

    电阻类可以直接买个整合包

    电阻47k

    8

    电阻10k

    4

    电阻47k

    4

    电阻470

    6

    电阻1k

    6

    变阻器10K

    3386

    1

    显示屏调节亮度用

    杜邦线

    若干

     

    自锁开关

    1个

    电源

    蓝牙模块

    1

     

    9串口母头 焊板式

    1

     

    MAX232CPE

    1

     

    电解电容50V/1uF

    4

    串口烧写器用

    USB转串口线

    1

    编程器连接电脑

    接插件40PIN2mm单排针

    若干

    电机接主板,编程线连接。 一般可插上杜邦线

    细导线

    电路中有不少飞线,得接。

    可以买,也可以找一下连接线,比如USB线之类的,一拆就有不少细导线了

    若干

     


     


     


    工具:


    有了零件,得有工具才能组装起来



    电烙铁: 这个少不了,我们用的不是直接接插,而是都要焊接的。


     



    焊锡、焊宝:焊接时用的咯。


     



    这个不说了,不至于所有的弯动的都拿手吧。


     



    斜口钳:买回零件脚都比较长,焊在板子上后,还会长,用这个很方便就可以夹断。



    万用表:调试时用,总不至于出现bug后,肉眼看吧。


     


    好了,准备工作完成,可以开始做,下回分解。

    
    
    展开全文
  • 51单片机智能小车的通俗易懂讲解

    千次阅读 多人点赞 2020-09-07 10:13:14
    从上面导航图,我们可以看到,智能小车,共分为三步 外部检测,控制中心,轮子输出控制。 等于人的 眼睛,大脑,手脚。 . . 因为控制中心和轮子输出控制是一样的,只有前面的外部检测,换个模块工作而已。 . . . . ...

    在这里插入图片描述
    .
    .
    从上面导航图,我们可以看到,智能小车,共分为三步

    外部检测,控制中心,轮子输出控制。

    等于人的

    在这里插入图片描述

    .
    .
    因为单片机控制中心和轮子输出控制是一样的,只有前面的外部检测,换个模块工作而已。
    .
    .

    在这里插入图片描述

    .
    .
    .

    .

    我们以一个循迹小车为例子讲解,当你明白这个后,其它的实验你就明白了。
    先来讲解一下公共的控制中心,和轮子输出的组装。
    .
    .

    在这里插入图片描述.
    .

    组装小车,只需要三样东西。
    1 车模。
    2 控制中心板。
    3 轮子电机驱动模块。
    .
    .

    1车模。
    对于新手来说你需要一个车模,当然也可以自己制作一个模型,下面这个是两个电机的智能小车。
    .
    .

    在这里插入图片描述
    .
    .

    上面这个车模包含有,1个车模底板,2个减速电机,2个轮子,1个万向轮(上面图片,电池盒下面那个),1个电池盒。
    这种车模很多地方都有,你只要按照说明书组装成功就可以了。
    .
    .

    2 主控板
    另外你还需要一个单片机最小系统作为控制中心
    .
    .

    在这里插入图片描述
    .
    .

    这个主控板的单片机型号是,STC89C52RC,你也可以选择更高级类型的51单片机
    .
    .
    3 轮子电机驱动模块。
    .
    .

    在这里插入图片描述
    .
    .

    这个电机驱动系统的模块是L298N(上面图片,最大黑色那个)
    .
    这种驱动模块是可以同时驱动两个电机的,完全可以满足你小车的驱动动力,为什么要驱动呢?因为主控板的电流太弱了,不够功率让电机运行,所以才会有电机驱动模块的产生。
    .
    .

    但是,不论外部检测是什么,上面的小车基础配置是公用的
    .
    .

    在这里插入图片描述
    .
    .
    .
    下面是外部检测讲解。

    现在我们既然讲解的是循迹小车,那么你还需要循迹传感器
    .
    .

    在这里插入图片描述
    .
    .

    循迹模块安装位置,如下图所示

    .
    .

    在这里插入图片描述

    .
    .
    就是这么简单,我们的循迹小车,配置模块就是这么多,
    .
    .

    在这里插入图片描述
    .
    .
    再通过程序的编写。我们的循迹小车,就可以循黑色线走了,非常简单。

    .
    .
    智能小车小资料:点我下载

    希望同学们喜欢了

    展开全文
  • 六种智能小车制作教程(补全)_201902281428521,学习智能小车必备资料!
  • 单片机智能小车

    千次阅读 2019-06-06 18:03:06
    单片机智能小车: 基于单片机控制的自主寻迹电动小车的设计: 摘 要:针对小车在行驶过程中的寻迹要求,设计了以AT89C51单片机为核心的控制电路,采用模块化的设计方案,运用色标传感器、金属探测传感器、...
    单片机智能小车:

    none.gifnone.gif


    基于单片机控制的自主寻迹电动小车的设计:

    摘 要:针对小车在行驶过程中的寻迹要求,设计了以AT89C51单片机为核心的控制电路,采用模块化的设计方案,运用色标传感器、金属探测传感器、超声波传感器、霍尔传感器组成不同的检测电路,实现小车在行驶中轨迹、探测预埋金属铁片、躲避障碍物、测量车速等问题检测,并对设计的电路进行了理论分析和实际测试。结果表明,该智能小车具有很好的识别与检测的能力,具有定位精度、运行稳定可靠的特点。
        关键词:自主寻迹;单片机;电动小车;传感器
    0 引 言
        自主寻迹电动小车是一个运用传感器、单片机、信号处理、电机驱动及自动控制等技术来实现环境感知和自动行驶为一体的高新技术综合体,它在军事、民用和科学研究等方面已获得了应用。本文研究的电动小车是在给定的区域内沿着轨迹完成对各个目标点的访问,主要指标有行驶距离、时间、探测物计数、障碍物躲避等。本文采用AT89C51单片机作控制,针对小车在行驶过程中的不同要求,采用模块化设计方案,进行了各部分电路的设计。
    1 智能小车控制的基本要求    小车必须沿规定路线行驶,控制部分设计不能采用无线遥控,具体控制要求如下:
        (1)电动车从起跑线出发,沿规定引导直线行驶到达B点。在“直道区”下沿引导线埋有1一3块宽度为15cm、长度不等的薄铁片。电动车在行驶中检测到薄
    铁片时需立即发出声光指示信息,并实时存储、显示在“直道区”检测到的薄铁片数目。电动车在“直道区”行驶过程中,存储并显示每个薄铁片(中心线)至起跑
    线间的距离;
        (2)电动车到达B点以后进人“弯道区”,沿圆 弧引导线到达C点。C点下埋有边长为 15cm的正方形薄铁片,要求电动车到达C点检测到薄铁片后在C点处停车5秒,停车期间发出断续的声光信息;
        (3)电动车在光源的引导下,通过障碍区进人停车区并到达车库。电动车必须在两个障碍物之间通过且不得与其接触;
        (4)电动车完成上述任务后应立即停车。停车后,能准确显示电动车全程行驶时间。
    2 方案的选择与实现
    2.1 系统方案的确定
        根据题目要求,将控制对象及检测目标划分为不同模块,即障碍物检测、路面铁片检测、路面轨迹检测、光源检测、速度路程检测等模块。针对不同模块的控制要求分别采用不同的设计方案实现。系统组成及原理框图如图1所示。其中色标传感器用来检测小车的运行轨迹,金属探测传感器用来检测路迹下薄铁片的数目,超声波传感器用来检测小车前进方向的障碍物,霍尔传感器用于检测小车行驶的速度及距离。


    完整内容下载附件查看.


    代码:

     
    1. //========================================================
    2. //  工程名称:        Car_Demo
    3. //  功能描述:        实现DIY竞赛小车的语音控制
    4. //  涉及的库:        CMacro1016.lib
    5. //                    bsrv222SDL.lib
    6. //                                sacmv26e.lib
    7. //  组成文件:        main.c
    8. //                                Flash.asm, hardware.asm,ISR.asm
    9. //                             hardware.h,s480.h, hardware.inc
    10. //        硬件连接:        IOA0-----KEY1
    11. //                                IOA1-----KEY2
    12. //                                IOA2-----KEY3
    13. //                                IOB10----MOTOR1A
    14. //                                IOB11----MOTOR1B
    15. //                                IOB12----MOTOR2A
    16. //                                IOB13----MOTOR2B
    17. //        维护记录:        2007-06  v1.0
    18. //  本代码在原凌阳小车代码上修改而成,版权原作者所有!-61mcu
    19. //  更多资料请察看:www.61mcu.com
    20. //========================================================
    21.  
    22. #include "s480.h"
    23. #include "bsrsd.h"
    24.  
    25. #define        P_IOA_Data                         (volatile unsigned int *)0x7000   
    26. #define P_IOA_Dir                         (volatile unsigned int *)0x7002
    27. #define P_IOA_Attrib                 (volatile unsigned int *)0x7003
    28. #define P_IOB_Data                        (volatile unsigned int *)0x7005  
    29. #define P_IOB_Dir                        (volatile unsigned int *)0x7007   
    30. #define P_IOB_Attrib                (volatile unsigned int *)0x7008   
    31. #define P_TimerA_Data                (volatile unsigned int *)0x700A   
    32. #define P_TimerA_Ctrl                (volatile unsigned int *)0x700B   
    33. #define P_TimerB_Data                (volatile unsigned int *)0x700C   
    34. #define P_TimerB_Ctrl                (volatile unsigned int *)0x700D   
    35. #define P_Watchdog_Clear        (volatile unsigned int *)0x7012   
    36. #define P_INT_Mask                        (volatile unsigned int *)0x702D   
    37. #define P_INT_Clear                        (volatile unsigned int *)0x7011   
    38.  
    39. #define NAME_ID                         0x100
    40. #define COMMAND_GO_ID                 0x101
    41. #define COMMAND_BACK_ID         0x102
    42. #define COMMAND_LEFT_ID         0x103
    43. #define COMMAND_RIGHT_ID         0x104
    44.  
    45. #define S_NAME                                0                                                        //给我取个名字吧
    46. #define S_ACT1                                1                                                        //前进
    47. #define S_ACT2                                2                                                        //倒车,请注意
    48. #define S_ACT3                                3                                                        //左拐
    49. #define S_ACT4                                4                                                        //右拐       
    50. #define S_RDY                                5                                                        //Yeah
    51. #define S_AGAIN                                6                                                        //请再说一遍
    52. #define S_NOVOICE                        7                                                        //没有听到任何声音
    53. #define S_CMDDIFF                        8                                                        //说什么暗语呀
    54. #define S_NOISY                                8                                                        //说什么暗语呀
    55. #define S_START                                9                                                        //准备就绪,开始辨识       
    56. #define S_GJG                                10                                                        //拐就拐
    57. #define S_DCZY                                11                                                        //倒车,请注意
    58.  
    59. extern  unsigned int BSR_SDModel[100];                                        //外部变量BSR_SDModel[100],辨识器自带
    60. extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);
    61. extern void F_FlashErase(unsigned int sector);
    62. unsigned int uiTimeset = 3;                                                                //运行时间定时,调整该参数控制运行时间
    63. unsigned int uiTimecont;                                                                 //运行时间计时
    64.  
    65. //=============================================================
    66. // 语法格式:        void Delay();
    67. // 实现功能:        延时
    68. // 参数:                无
    69. // 返回值:                无
    70. //=============================================================
    71. void Delay()                                                       
    72. {
    73.         unsigned int i;
    74.         for(i=0;i<0x3Fff;i++)
    75.         {
    76.                 *P_Watchdog_Clear=0x0001;
    77.         }
    78. }
    79.  
    80. //=============================================================
    81. // 语法格式:        void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);
    82. // 实现功能:        语音播放函数
    83. // 参数:                SndIndex-播放语音资源索引号
    84. //                                DAC_Channel-播放声道选择
    85. // 返回值:                无
    86. //=============================================================
    87. void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)
    88. {
    89.         BSR_StopRecognizer();                                                                //停止识别器
    90.         SACM_S480_Initial(1);                                                                //初始化为自动播放
    91.         SACM_S480_Play(SndIndex, DAC_Channel, 3);                        //开始播放一段语音
    92.         while((SACM_S480_Status()&0x0001)!= 0)                                //是否播放完毕?
    93.         {
    94.                 SACM_S480_ServiceLoop();                                                //解码并填充队列
    95.                 *P_Watchdog_Clear=0x0001;                                                //清看门狗
    96.         }
    97.         SACM_S480_Stop();                                                                        //停止播放
    98.         BSR_InitRecognizer(BSR_MIC);                                                //初始化识别器
    99. }
    100.  
    101. //=============================================================
    102. // 语法格式:        int TrainWord(int WordID,int SndID);
    103. // 实现功能:        训练一条指令
    104. // 参数:                WordID-指令编码
    105. //                                SndID-指令提示音索引号
    106. // 返回值:                无
    107. //=============================================================
    108. int TrainWord(unsigned int WordID,unsigned int SndID)
    109. {
    110.         int Result;
    111.         PlaySnd(SndID,3);                                                                        //引导训练,播放指令对应动作
    112.         while(1)
    113.         {
    114.                 Result = BSR_Train(WordID,BSR_TRAIN_TWICE);                //训练两次,获得训练结果
    115.                                                                                
    116.                 if(Result==0)break;
    117.                 switch(Result)
    118.                 {
    119.                 case -1:                                                                                //没有检测出声音
    120.                         PlaySnd(S_NOVOICE,3);
    121.                         return -1;
    122.                 case -2:                                                                                 //需要训练第二次
    123.                         PlaySnd(S_AGAIN,3);
    124.                         break;
    125.                 case -3:                                                                                //环境太吵
    126.                         PlaySnd(S_NOISY,3);
    127.                         return -3;       
    128.                 case -4:                                                                                //数据库满
    129.                          return -4;       
    130.                 case -5:                                                                     //检测出声音不同
    131.                         PlaySnd(S_CMDDIFF,3);
    132.                         return -5;
    133.                 case -6:                                                                     //序号错误
    134.                         return -6;
    135.                 default:
    136.                         break;
    137.                 }
    138.         }
    139.         return 0;
    140. }
    141.  
    142. //=============================================================
    143. // 语法格式:        void TrainSD();
    144. // 实现功能:        训练函数
    145. // 参数:                无
    146. // 返回值:                无
    147. //=============================================================
    148. void TrainSD()
    149. {
    150.         while(TrainWord(NAME_ID,S_NAME) != 0) ;                          //训练名称
    151.         while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ;                  //训练第1个动作
    152.         while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ;          //训练第2个动作
    153.         while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ;          //训练第3个动作
    154.         while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ;        //训练第4个动作
    155. }
    156.  
    157. //=============================================================
    158. // 语法格式:        void StoreSD();
    159. // 实现功能:        存储语音模型函数
    160. // 参数:                无
    161. // 返回值:                无
    162. //=============================================================
    163. void StoreSD()                                                  
    164. {        unsigned int ulAddr,i,commandID,g_Ret;
    165.         F_FlashWrite1Word(0xef00,0xaaaa);
    166.         F_FlashErase(0xe000);
    167.            F_FlashErase(0xe100);
    168.            F_FlashErase(0xe200);
    169.            ulAddr=0xe000;//********
    170.         for(commandID=0x100;commandID<0x105;commandID++)
    171.         {
    172.                 g_Ret=BSR_ExportSDWord(commandID);                       
    173.                 while(g_Ret!=0)                                                                        //模型导出成功?
    174.                 g_Ret=BSR_ExportSDWord(commandID);               
    175.                 for(i=0;i<100;i++)                                                                //保存语音模型SD1(0xe000---0xe063)
    176.                 {
    177.                     F_FlashWrite1Word(ulAddr,BSR_SDModel[i]);
    178.                         ulAddr+=1;                                                                                               
    179.                 }
    180.         }
    181. }
    182.  
    183. //=============================================================
    184. // 语法格式:        void StoreSD();
    185. // 实现功能:        装载语音模型函数
    186. // 参数:                无
    187. // 返回值:                无
    188. //=============================================================
    189. void LoadSD()                                                  
    190. {        unsigned int *p,k,jk,Ret,g_Ret;
    191.         p=(int *)0xe000;                                                                                                                                                                       
    192.         for(jk=0;jk<5;jk++)
    193.         {
    194.                 for(k=0;k<100;k++)
    195.                 {
    196.                         Ret=*p;                                                       
    197.                         BSR_SDModel[k]=Ret;                                        //装载语音模型                       
    198.                         p+=1;                                                                                                       
    199.                 }                                       
    200.                 g_Ret=BSR_ImportSDWord();                               
    201.                 while(g_Ret!=0)                                                        //模型装载成功?
    202.                 g_Ret=BSR_ImportSDWord();                                                               
    203.         }
    204. }
    205.  
    206. //=============================================================
    207. // 语法格式:        void GoAhead();
    208. // 实现功能:        前进子函数
    209. // 参数:                无
    210. // 返回值:                无
    211. //=============================================================
    212. void GoAhead()                                                     //前进
    213. {  
    214.         PlaySnd(S_ACT1,3);                                                        //提示
    215.         *P_IOB_Data=0x1400;                                                        //前进
    216.         *P_INT_Mask |= 0x0004;                                                //以下为中断定时操作
    217.         __asm("int fiq,irq");
    218.         uiTimecont = 0;
    219. }
    220. //=============================================================
    221. // 语法格式:        void BackUp();
    222. // 实现功能:        后退子函数
    223. // 参数:                无
    224. // 返回值:                无
    225. //=============================================================
    226. void BackUp()                                                //倒退
    227. {       
    228.         PlaySnd(S_DCZY,3);                                                        //提示
    229.         *P_IOB_Data=0x2800;                                                        //倒退
    230.         *P_INT_Mask |= 0x0004;                                                //以下为中断定时操作
    231.         __asm("int fiq,irq");
    232.         uiTimecont = 0;
    233. }
    234.  
    235. //=============================================================
    236. // 语法格式:        void TurnLeft();
    237. // 实现功能:        左转子函数
    238. // 参数:                无
    239. // 返回值:                无
    240. //=============================================================
    241. void TurnRight()                                           //右转
    242. {
    243.         PlaySnd(S_GJG,3);       
    244.         *P_IOB_Data=0x1800;                                                        //右转
    245.         Delay();                                                                        //延时
    246.         *P_IOB_Data=0x2400;                                                        //左转
    247.         *P_INT_Mask |= 0x0004;                                                //以下为中断定时操作
    248.         __asm("int fiq,irq");
    249.         uiTimecont = 0;
    250. }
    251. //=============================================================
    252. // 语法格式:        void TurnRight();
    253. // 实现功能:        右转子函数
    254. // 参数:                无
    255. // 返回值:                无
    256. //=============================================================
    257. void TurnLeft()                                               //左转
    258. {
    259.         PlaySnd(S_GJG,3);                                                        //语音提示
    260.     *P_IOB_Data=0x2400;                                                        //左转
    261.         Delay();                                                                        //延时
    262.         *P_IOB_Data=0x1800;                                                        //右转       
    263.         *P_INT_Mask |= 0x0004;                                                //以下为中断定时操作
    264.         __asm("int fiq,irq");
    265.         uiTimecont = 0;
    266. }
    267.  
    268. //=============================================================
    269. // 语法格式:        void Stop();
    270. // 实现功能:        停车子函数
    271. // 参数:                无
    272. // 返回值:                无
    273. //=============================================================
    274. void Stop()                                                   //停车
    275. {
    276.         *P_IOB_Data=0x0000;                                                        //停车
    277.         PlaySnd(S_RDY,3);                                                        //语音提示
    278. }
    279.  
    280. //=============================================================
    281. // 语法格式:        void BSR(void);
    282. // 实现功能:        辨识子函数
    283. // 参数:                无
    284. // 返回值:                无
    285. //=============================================================
    286. void BSR(void)
    287. {       
    288.         int Result;                                                                        //辨识结果寄存
    289.         Result = BSR_GetResult();                                        //获得识别结果
    290.  
    291.         if(Result>0)                                                                //有语音触发?
    292.         {       
    293.                 *P_IOB_Data=0x0000;                                                //临时停车
    294.                 switch(Result)
    295.                 {
    296.                 case NAME_ID:                                                        //识别出名称命令
    297.                         Stop();                                                                //停车待命
    298.                         break;
    299.                 case COMMAND_GO_ID:                                                //识别出第一条命令
    300.                         GoAhead();                                                        //执行动作一:直走
    301.                         break;
    302.                 case COMMAND_BACK_ID:                                        //识别出第二条命令
    303.                         BackUp();                                                        //执行动作二:倒车
    304.                         break;
    305.                 case COMMAND_LEFT_ID:                                        //识别出第三条命令
    306.                         TurnLeft();                                                        //执行动作三:左转
    307.                         break;
    308.                 case COMMAND_RIGHT_ID:                                        //识别出第四条命令
    309.                         TurnRight();                                                //执行动作四:右转
    310.                         break;
    311.                 default:
    312.                         break;
    313.                 }
    314.         }
    315. }
    316. //=============================================================
    317. // 语法格式:        void IRQ5(void);
    318. // 实现功能:        中断服务子函数
    319. // 参数:                无
    320. // 返回值:                无
    321. //=============================================================
    322. void IRQ5(void)__attribute__((ISR));                        //运动定时控制
    323. void IRQ5(void)
    324. {
    325.         if(uiTimecont++ == uiTimeset)
    326.         {
    327.                 *P_IOB_Data = 0x0000;
    328.         }
    329.         *P_INT_Clear = 0x0004;
    330. }
    331.  
    332. //=============================================================
    333. // 语法格式:        int main(void);
    334. // 实现功能:        主函数
    335. // 参数:                无
    336. // 返回值:                无
    337. //=============================================================
    338. int main(void)
    339. {        unsigned int BS_Flag;                                                //Train标志位
    340.        
    341.         *P_IOA_Dir=0xff00;                                                        //初始化IOA,IOA0~7下拉输入
    342.         *P_IOA_Attrib=0xff00;
    343.         *P_IOA_Data=0x0000;
    344.        
    345.         *P_IOB_Dir=0x0f00;                                                        //初始化IOB,IOB8~11同向输出
    346.         *P_IOB_Attrib=0x0f00;
    347.         *P_IOB_Data=0x0000;
    348.        
    349.         BSR_DeleteSDGroup(0);                                                //初始化存储器RAM
    350.         BS_Flag=*(unsigned int *)0xe000;                        //读存储单元0xe000
    351.         if(BS_Flag==0xffff)                                                        //没有经过训练(0xe000内容为0xffff)
    352.         {
    353.                 TrainSD();                                                                //训练
    354.                 StoreSD();                                                                //存储训练结果(语音模型)
    355.         }
    356.         else                                                                                 //经过训练(0xe000内容为0x0055)
    357.         {
    358.                 LoadSD();                                                                //语音模型载入识别器
    359.         }
    360.        
    361.         PlaySnd(S_START,3);                                                        //开始识别提示
    362.         BSR_InitRecognizer(BSR_MIC);                                //初始化识别器
    363.        
    364.         while(1)
    365.         {       
    366.                 BSR();
    367.                 if((*P_IOA_Data)&0x0004)                                //是否重新训练
    368.                 {       
    369.                         F_FlashErase(0xe000);
    370.                         while(1);
    371.                 }
    372.         }
    373. }
    374.  
    375.  
    复制代码


     

    文件到原文下载,原文出自:https://bbs.usoftchina.com/thread-208666-1-1.html

    展开全文
  • 智能寻迹小车的代码

    千次阅读 多人点赞 2016-09-14 19:20:03
    /*-------------------------...-----------------------小车运行主程序------------------- --------------------------------------------------------     简介:@模块组成:红外对管检测模块----五组对管,五
  • 智能小车-----寻迹的代码

    万次阅读 多人点赞 2016-10-13 23:11:11
    注:使用的是l298的还有rpr220的芯片和扫描做的。     #include #include"./delay/delay.h" sbit IN1 = P1^0; sbit IN2 = P1^1; sbit ENA = P1^2; sbit IN3 = P1^3;...sbit left1 = P0^0
  • Arduino智能小车——拼装篇

    万次阅读 多人点赞 2020-05-19 10:53:11
    Arduino智能小车——拼装篇简介Arduino是一款便捷灵活、方便上手的开源电子原型平台,比较适合刚接触硬件的入门级开发者学习。在我身边有很多初学者都陷入了这么一种困境,已经将Arduino官网的教程全部跑完,然而...
  • Arduino智能小车——测试篇

    万次阅读 多人点赞 2020-05-19 10:50:29
    Arduino智能小车——测试篇 上一章讲解了智能小车的拼装,但是还没有让小车动起来,这章我们将继续拼装,使得小车可以动起来。 驱动模块安装 可能有些朋友会问到,驱动是干嘛的,为什么要驱动,小时候玩四...
  • 智能小车制作入门篇

    千次阅读 2016-09-05 22:17:11
    最近接触了很多机器人爱好者,很多人都对机器人技术展示出了浓厚的兴趣,也在计划如何动手制作自己的第一个机器人。但是似乎很多的人都摸不到门路,只能是站在大门外满怀兴趣的向内观望,观望了一阵兴趣渐失只好叹...
  • DIY智能小车篇(一):结构模块

    千次阅读 多人点赞 2019-09-04 12:34:24
    本人所制作的智能小车所需零部件均从某宝上购得,这家店的零件比较全,本文中的大部分模块都可以搜得到(没有任何打广告的成分,我自己就是从别处买的,只不过这里零件比较全,很多资料也很丰富,可以多多参考) ...
  • Arduino智能小车——小车测速

    万次阅读 多人点赞 2020-05-19 10:55:15
    Arduino智能小车——小车测速  可以用于测速的模块很多,比如加速度计、激光、超声波、编码器等等,由于我们对小车速度的测量精度要求不高,因此我们可以借助小车套件里面的码盘配上测速模块对其速度进行测量。...
  • 智能小车资料源码大全

    万次阅读 多人点赞 2018-10-22 11:06:50
    今天给大家分享一下智能小车的资料,包括制作流程、原理图设计和源码等,不下于60辆智能小车的制作经验。其中历届智能小车的开发资料就有90个文件了。 分享的智能小车类型包括:Bluetooth控制两轮小车;智能小车...
  • 基于51单片机智能小车的设计与实现

    万次阅读 多人点赞 2018-04-02 10:28:13
    0引言学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的...
  • 其实前几周就已经将小车调好并且也发了视频,但是每天忙于复习,也没有时间来对小车的流程设计、硬件设计、程序编写进行一个总结,正好周五可以休息一下,就分三个模块对这个智能小车项目进行一个总结。 这个小项目...
  • 最开始我想完全自己来组装车,包括车轮,马达什么的。买了一大堆零件,发现不合适,即使万能的淘宝也不能买到我要的尺寸的零件。最后做出来的车底盘很丑,性能也不稳定。所以最后我买了个四轮车的底盘,这样就可以在...
  • 硬件课设一直拖到还有几天要毕业了才分享一下,做...3.代码部分是用verilog完成的,项目报告,完成代码,以及小车跑动的视频都在以下链接里,可以下载使用。 https://download.csdn.net/download/sinat_30372583/10...
  • 基于51单片机的蓝牙智能小车——《入门篇》

    万次阅读 多人点赞 2018-08-29 10:02:38
    在上一篇文章中我已经提到了制作智能小车所需要的材料,如果大家已经准备好材料,或是想进一步了解智能小车的制作原理,接下来呢,我会对多个模块进行介绍,由零散的模块一步一步将我们的小车制作出来。 我们可以按...
  • WiFi智能小车

    万次阅读 2019-07-14 01:53:34
    WiFi智能小车是利用本APP作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体...
  • stm32 智能避障小车(一)

    千次阅读 热门讨论 2019-02-14 16:33:14
    避障小车制作过程 今年寒假期间,我再csdn上看到别人制作的避障小车,我想了想,越想越觉得好玩,于是在这20多天里,我基本已经做到我想要的效果了,这期间我也是很烦恼,很简单的制作,我花费了这么长的时间,我...
1 2 3 4 5 ... 20
收藏数 6,882
精华内容 2,752
关键字:

智能小车