找回密码
 立即注册

QQ登录

【Raspberry Pi 3 小车】9、侦测避障

来源: 奥松-Neil 2016-12-2 13:28 显示全部楼层 |阅读模式
1、实验介绍
(1)实验目的:利用超声波传感器实现小车自主侦测避障运动
(2)实验环境
硬件环境:基于Raspberry Pi 的4WD移动平台、超声波传感器
软件环境:putty SSH 登录软件,FileZilla FTP文件传输工具,Notepad++文本编辑器
(3)使用接口分析
Raspberry Pi 电机驱动板要使用的接口:电机接口A、电机接口B、超声波URF接口
Raspberry Pi 控制器要使用到的GPIO接口:
  • A口方向控制接口GPIO25
  • A口使能控制接口GPIO17
  • B口方向控制接口GPIO4
  • B口使能控制接口GPIO10
  • 超声波传感器INPUT接口GPIO23
  • 超声波传感器OUTPUT接口GPIO18
(4)硬件连接
本例程中仅使用了超声波传感器,所以直接将超声波传感器插入到Raspberry Pi 电机驱动板的超声波接口即可,如图所示:
图片1.png
2、例子程序
使用文本编辑器,输入下列代码,并保存为“robot9.py”文件,使用FTP传输工具,将程序传送到Raspberry Pi控制器,Pi目录下的alsrobot文件夹中。
  1. import RPi.GPIO
  2. import time

  3. directionA = 25
  4. EA = 17
  5. directionB = 4
  6. EB = 10
  7. INPUT = 23
  8. OUTPUT = 18

  9. RPi.GPIO.setmode(RPi.GPIO.BCM)
  10. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  11. RPi.GPIO.setup(directionA,RPi.GPIO.OUT)
  12. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  13. RPi.GPIO.setup(directionB,RPi.GPIO.OUT)
  14. RPi.GPIO.setup(INPUT,RPi.GPIO.OUT)
  15. RPi.GPIO.setup(OUTPUT,RPi.GPIO.IN)

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

  21. def forward():
  22.         RPi.GPIO.output(EA,True)
  23.         RPi.GPIO.output(directionA,True)
  24.         RPi.GPIO.output(EB,True)
  25.         RPi.GPIO.output(directionB,True)

  26. def right():
  27.         RPi.GPIO.output(EA,True)
  28.         RPi.GPIO.output(directionA,True)
  29.         RPi.GPIO.output(EB,True)
  30.         RPi.GPIO.output(directionB,False)

  31. def left():
  32.         RPi.GPIO.output(EA,True)
  33.         RPi.GPIO.output(directionA,False)
  34.         RPi.GPIO.output(EB,True)
  35.         RPi.GPIO.output(directionB,True)
  36.         
  37. def stop():
  38.         RPi.GPIO.output(EA,False)
  39.         RPi.GPIO.output(directionA,False)
  40.         RPi.GPIO.output(EB,False)
  41.         RPi.GPIO.output(directionB,False)

  42. def checkdist():
  43.         RPi.GPIO.output(INPUT,True)
  44.         time.sleep(0.000015)
  45.         RPi.GPIO.output(INPUT,False)
  46.         while not RPi.GPIO.input(OUTPUT):
  47.                         pass
  48.         t1 = time.time()
  49.         
  50.         while RPi.GPIO.input(OUTPUT):
  51.                         pass
  52.         t2 = time.time()
  53.         return (t2-t1)*340/2 * 100
  54. #time.sleep(0.5)
  55.                
  56. try:
  57.         while True:
  58.                 forward()
  59.                 distance = checkdist()                        
  60.                 if distance < 35:        
  61.                         left()
  62.                         time.sleep(0.3)
  63.                         val_left = checkdist()
  64.                         time.sleep(0.5)
  65.                         right()
  66.                         time.sleep(1.3)
  67.                         val_right = checkdist()
  68.                         time.sleep(0.5)
  69.                         if val_left < val_right:
  70.                                 forward()
  71.                                 time.sleep(0.1)
  72.                         elif val_left > val_right:
  73.                                 left()
  74.                                 time.sleep(1)
  75.                 time.sleep(0.5)
  76.                         
  77. except KeyboardInterrupt:
  78.         pass
  79. RPi.GPIO.cleanup()
  80. RPi.GPIO.setmode(RPi.GPIO.BCM)
  81. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  82. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  83. RPi.GPIO.output(EA,False)
  84. RPi.GPIO.output(EB,False)
复制代码
3、程序执行
游客,如果您要查看本帖隐藏内容请回复





回复

使用道具 举报

大神点评41

duanyaqiang 2016-12-17 23:50 显示全部楼层
厉害  学习学习
回复 支持 反对

使用道具 举报

nyebo1911 2016-12-22 14:56 显示全部楼层
1234567890
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

kpotter 2017-1-4 08:54 显示全部楼层
学习                                
回复 支持 反对

使用道具 举报

mquark 2017-1-8 10:11 显示全部楼层
学习了.
回复

使用道具 举报

simple_he 2017-1-11 18:17 显示全部楼层
学习一下
回复

使用道具 举报

ak123wa123 2017-1-19 19:39 显示全部楼层
666666666666666666666666666
回复 支持 反对

使用道具 举报

Einrie 2017-2-26 17:41 显示全部楼层
是时候购买一个超声波避障模块了
回复 支持 反对

使用道具 举报

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

关注0

粉丝11

帖子147

发布主题