完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
|
实验材料
TPYBoard开发板1块(能跑python语言的开发板,小车的大脑。) 四路红外感应探头(小车的眼睛)。 数据线一根。 充电宝一个(给整个系统供电)。 智能小车底盘(包括驱动模块)。 杜邦线若干。 实验目的和实验材料准备齐了,先来介绍一下各个主要部件。 2.1PYBoard开发板 MicroPython是在单片机上可以跑的Python,也就是说,你可以通过Python脚本语言开发单片机程序。由剑桥大学的理论物理学家乔治·达明设计。和Arduino类似,但MicroPython更强大。MicroPython开发板让你可以通过Python代码轻松控制微控制器的各种外设,比如LED等,读取管脚电压,播放歌曲,和其他设备联网等等。TPYBoard是TurnipSmart公司制作的一款MicroPython开发板,这款开发板运行很流畅,关键是价格很便宜。 2.2四路红外感应探头 1、当模块检测到前方障碍物信号时,威廉希尔官方网站 板上红色指示灯点亮,同时OUT端口持续输出低电平信号,该模块检测距离2~60cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。 2、传感器属于红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。 3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器模块或者蜂鸣器模块;连接方式:VCC-VCC;GND-GND;OUT-IO 4、比较器采用LM339,工作稳定; 5、可采用3.3V-5V直流电源对模块进行供电。当电源接通时,绿色电源指示灯点亮。 2.3智能小车底盘 双电机驱动,万向轮改变方向。这是实验中最常用到的小车底盘,使用差速的方法进行转弯。配合使用L298N电机驱动模块,使用方法很简单,不多做介绍。 |
|
|
|
寻迹原理
说完了原料的问题,下面说一下小车寻迹的原理。 3.1红外探头的安装 小车寻迹的原理其实就光的吸收,反射和散射。大家都知道,白色反射所有颜色的光,而黑色吸收所有颜色的光,这就为小车寻迹提供了有力的科学依据。在小车的车头上安装上红外探头(我是安装了四个),一字顺序排开。哪个探头接收不到反射或者散射回来的光时,说明这个探头此时正在黑色的寻迹带上。 3.2返回信号的判断 如果要是正前方的探头接收不到光,那么说明小车此时走在黑色的寻迹带上。可以使小车直线行走。如果左面的探头接收不到光,那么说明小车左面出现了黑色寻迹带,此时小车应该执行左转弯。右转弯同左转弯原理。 如果要是小车前面,左面,右面三个方向全都接收不到光,或者是两个方向上的探头都接收不到光,到底是左转弯,右转弯还是继续直行,这个就要看你自己在程序里怎么做判断了。 |
|
|
|
硬件接线:
接线其实很简单四路红外探头接线很简单,虽然有十八根线,但是有十二根是三根三根的分成四组的,对应着很好接线,剩下的六根,VCC和GND不多说了,还有四根是直接接到单片结IO口上就可以的。 L298N的接线更简单了,这里不多介绍。 上个简单的帮助理解的原理图(其实我们做实验都是插线,不做PCB图和原理图的)。 再上个实物图给大家看看。 |
|
|
|
|
|
|
|
代码编写
再把我写的程序给大家看一下,有需要的可以看一下。 源代码: import pyb from pyb import UART from pyb import Pin M0 = Pin(‘X1’, Pin.IN) M1 = Pin(‘X2’, Pin.IN) M2 = Pin(‘X3’, Pin.IN) M3 = Pin(‘X4’, Pin.IN) N1 = Pin(‘Y1’, Pin.OUT_PP) N2 = Pin(‘Y2’, Pin.OUT_PP) N3 = Pin(‘Y3’, Pin.OUT_PP) N4 = Pin(‘Y4’, Pin.OUT_PP) print(‘while’) while True: print(‘while’) pyb.LED(4).off() pyb.LED(3).off() pyb.LED(2).off() if(M0.value()==1):#检测到物体返回0。 pyb.LED(4).on() pyb.delay(50) N1.low() N2.high() N3.low() N4.high() pyb.delay(30) #pyb.delay(5000) if(M3.value()==1):#检测到物体返回0。 pyb.LED(3).on() pyb.delay(50) N1.high() N2.low() N3.high() N4.low() pyb.delay(30) if(M2.value()&M1.value()==1): pyb.LED(2).on() N1.low() N2.high() N3.high() N4.low() pyb.delay(70) |
|
|
|
只有小组成员才能发言,加入小组>>
818 浏览 0 评论
1162 浏览 1 评论
2537 浏览 5 评论
2872 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2720 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1116浏览 3评论
199浏览 2评论
465浏览 2评论
382浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
463浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 23:12 , Processed in 1.360025 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号