找回密码
 立即注册

QQ登录

【Raspberry Pi 3 小车】5、自主避障

来源: 奥松-Neil 2016-12-1 13:02 显示全部楼层 |阅读模式
1、实验介绍
(1)实验目的:通过 3 个 mini 红外避障传感器实现小车自主避障运动
(2)实验环境
软件环境:Python3
硬件环境:Raspberry Pi 小车、Mini 红外避障传感器
(3)使用接口分析
Raspberry Pi 电机驱动板要使用的接口:电机接口 A、电机接口 B、两个数字输入接口 SW1、SW2
Raspberry Pi 控制器要使用到的 GPIO 接口:
  • A 口方向控制接口 GPIO25
  • A 口使能控制接口 GPIO17
  • B 口方向控制接口 GPIO4
  • B 口使能控制接口 GPIO10
  • SW1 数字输入接口 GPIO11 连接左避障传感器
  • SW2 数字输入接口 GPIO9 连接右避障传感器
  • GPIO24 连接中间避障传感器
(4)硬件安装
如图所示,将避障传感器安装在车体上
图片7.png

2、例子程序
在之前我们一共介绍了三种编程的方法
  • 使用树莓派自带的nano编辑器来进行编程
  • 使用树莓派内置的Python软件进行编程
  • 在Windows下编程,然后通过FTP上传的树莓派控制器上执行
大家可以任意选择一种自己比较顺手的编程方式输入下列代码
  1. import RPi.GPIO
  2. import time

  3. directionA = 25
  4. EA = 17
  5. directionB = 4
  6. EB = 10
  7. L = 11
  8. R = 9
  9. Z = 24

  10. RPi.GPIO.setmode(RPi.GPIO.BCM)
  11. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  12. RPi.GPIO.setup(directionA,RPi.GPIO.OUT)
  13. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  14. RPi.GPIO.setup(directionB,RPi.GPIO.OUT)

  15. RPi.GPIO.setup(L,RPi.GPIO.IN)
  16. RPi.GPIO.setup(R,RPi.GPIO.IN)
  17. RPi.GPIO.setup(Z,RPi.GPIO.IN)

  18. def back():
  19.         RPi.GPIO.output(EA,True)
  20.         RPi.GPIO.output(directionA,False)
  21.         RPi.GPIO.output(EB,True)
  22.         RPi.GPIO.output(directionB,False)

  23. def forward():
  24.         RPi.GPIO.output(EA,True)
  25.         RPi.GPIO.output(directionA,True)
  26.         RPi.GPIO.output(EB,True)
  27.         RPi.GPIO.output(directionB,True)
  28.         
  29. def right():
  30.         RPi.GPIO.output(EA,True)
  31.         RPi.GPIO.output(directionA,True)
  32.         RPi.GPIO.output(EB,True)
  33.         RPi.GPIO.output(directionB,False)

  34. def left():
  35.         RPi.GPIO.output(EA,True)
  36.         RPi.GPIO.output(directionA,False)
  37.         RPi.GPIO.output(EB,True)
  38.         RPi.GPIO.output(directionB,True)
  39.         
  40. def stop():
  41.         RPi.GPIO.output(EA,False)
  42.         RPi.GPIO.output(directionA,False)
  43.         RPi.GPIO.output(EB,False)
  44.         RPi.GPIO.output(directionB,False)
  45.         
  46. try:
  47.         while True:
  48.                 BL = RPi.GPIO.input(L)
  49.                 BR = RPi.GPIO.input(R)
  50.                 BZ = RPi.GPIO.input(Z)
  51.                 if BL == True and BZ == True and BR == True:
  52.                         forward()
  53.                 elif BL == True and BZ == False and BR == True:
  54.                         back()
  55.                         time.sleep(0.4)
  56.                         left()
  57.                         time.sleep(0.3)
  58.                 elif BL == True and BZ == True and BR == False:
  59.                         right()
  60.                 elif BL == False and BZ == True and BR == True:
  61.                         left()
  62.                 elif BL == True and BZ == False and BR == False:
  63.                         right()
  64.                 elif BL == False and BZ == False and BR == True:
  65.                         left()
  66.                 elif BL == False and BZ == False and BR == False:
  67.                         back()
  68.                         time.sleep(0.4)
  69.                         right()
  70.                         time.sleep(0.3)
  71.                 else:
  72.                         stop()
  73.                         
  74. except KeyboardInterrupt:
  75.         pass
  76. RPi.GPIO.cleanup()
  77. RPi.GPIO.setmode(RPi.GPIO.BCM)
  78. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  79. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  80. RPi.GPIO.output(EA,False)
  81. RPi.GPIO.output(EB,False)
复制代码
3、程序执行
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

大神点评16

hongmo 2016-12-6 16:17 显示全部楼层
看看学学啦
回复 支持 反对

使用道具 举报

学习一下思路
回复 支持 反对

使用道具 举报

惠成功 2017-1-2 19:52 显示全部楼层
忽然发现,这块树莓派机器人驱动板我有些想买。
回复一下,看看怎么用的。
回复 支持 反对

使用道具 举报

惠成功 2017-1-2 19:55 显示全部楼层
红外传感器在室外能不能正常使用?有没有视频演示可以看一看?
回复 支持 反对

使用道具 举报

惠成功 发表于 2017-1-2 19:55
红外传感器在室外能不能正常使用?有没有视频演示可以看一看?

室外的话也可以使用,但是光照对它的精度是有影响的,实验视频的话没有传上来~
回复 支持 反对

使用道具 举报

lvlvp 2017-1-3 16:19 显示全部楼层
学习树莓派
回复 支持 反对

使用道具 举报

whzzr 2017-1-4 08:33 显示全部楼层
学习学习。。。。。
回复

使用道具 举报

jimmyyjh 2017-2-11 18:09 显示全部楼层
很清楚,看后有自己的想法了。谢谢
回复 支持 反对

使用道具 举报

非常好从接线到代码到执行很详细
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册