找回密码
 立即注册

QQ登录

【Raspberry Pi 3 小车】4、超声波定距操控

来源: 奥松-Neil 2016-12-1 13:02 显示全部楼层 |阅读模式
通过前面的教程,小车已经可以做最基本的移动,现在我们需要给他添加一些传感器,让它变得更智能。
1、实验介绍
(1)实验目的:结合超声波传感器,实现定距操控的树莓派4WD平台
(2)实验环境
软件环境:Python3
硬件环境:树莓派4WD移动平台、超声波传感器
(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、例子程序
注意:Python 程序对格式要求严格,大家如果自行输入程序需要在相应语句前加入“TAB”,否则会编译失败,或者直接下载附件中的程序文件
  1. [hide]<div><div class="blockcode"><blockquote>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 stop():
  27.         RPi.GPIO.output(EA,False)
  28.         RPi.GPIO.output(directionA,False)
  29.         RPi.GPIO.output(EB,False)
  30.         RPi.GPIO.output(directionB,False)

  31. def checkdist():
  32.         RPi.GPIO.output(INPUT,True)
  33.         time.sleep(0.000015)
  34.         RPi.GPIO.output(INPUT,False)
  35.         while not RPi.GPIO.input(OUTPUT):
  36.                         pass
  37.         t1 = time.time()
  38.         
  39.         while RPi.GPIO.input(OUTPUT):
  40.                         pass
  41.         t2 = time.time()
  42.         return (t2-t1)*340/2 * 100
  43. time.sleep(0.5)
  44.                
  45. try:
  46.         while True:
  47.                 distance = checkdist()
  48.                 if distance > 25 and distance < 100:
  49.                         forward()
  50.                 elif distance < 25 and distance > 5:
  51.                         back()
  52.                 else:
  53.                         stop()
  54.                 time.sleep(0.5)
  55.                         
  56. except KeyboardInterrupt:
  57.         pass
  58. RPi.GPIO.cleanup()
  59. RPi.GPIO.setmode(RPi.GPIO.BCM)
  60. RPi.GPIO.setup(EA,RPi.GPIO.OUT)
  61. RPi.GPIO.setup(EB,RPi.GPIO.OUT)
  62. RPi.GPIO.output(EA,False)
  63. RPi.GPIO.output(EB,False)
复制代码
3、FTP 传输
本节中我们再介绍一个新的编程方式,就是在Windows环境下编辑程序,然后通过 FTP将程序传输到树莓派上,这样做的话,我们可以不用登陆图形化界面,仅使用putty和树莓派通信就行了,接下来看一下要如何来做,这里默认树莓派已经与电脑连接到同一个网络下。
(1)下载必须的软件

  • FTP 传输工具:FileZilla
  • SSH远程登录工具:putty
  • 文本编辑工具:Notepad++

以上说到的软件都可以在树莓派教程第7课 —— Raspberry Pi 常用软件中下载
(出处: 中国创客空间联盟-奥松机器人创客空间-Arduino中国社区)
(2)在 Notepad++ 中输入例子程序,并保存文件名为“robot4.py”,这里要注意文件扩展名,一定修改为.py,这样Python的关键字才会体现出来,否则它默认为TXT文件,不会体现关键字。
图片2.png
(3)使用 FTP 传输工具传送程序文件
图片3.png

  • 主机IP:格式sftp:// 树莓派IP地址;例如:sftp://172.27.35.124
  • 用户名:树莓派默认用户名pi
  • 密码:树莓派默认登录密码raspberry
  • 端口:无需填写
  • 点击快速连接,就会成功连接,并且获取到树莓派的目录,选择相应的目录并进入,这里还是将程序保存到pi下的alsrobot目录,然后直接将要传送的文件从电脑拖拽过去即可

(4)putty 登录Raspberry Pi
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

大神点评30

whzzr 2016-12-25 19:03 显示全部楼层
谢谢。。。。。。。。。。
回复

使用道具 举报

mquark 2017-1-8 08:55 显示全部楼层
多谢了 很棒
回复 支持 反对

使用道具 举报

wang11876 2017-3-20 20:08 显示全部楼层
DDDDDDDDDDDDDDDDDDDDD
回复 支持 反对

使用道具 举报

ibearxyh 2017-3-28 18:35 显示全部楼层
回复学习
回复

使用道具 举报

caihuyang 2017-6-13 19:15 显示全部楼层
是个非常的v从v去的v不从去v从去v从
回复 支持 反对

使用道具 举报

回复学习
回复

使用道具 举报

lqygood123 2017-10-2 11:18 显示全部楼层
多谢了 很棒
回复 支持 反对

使用道具 举报

jdliang 2017-10-5 18:56 显示全部楼层
认真学习
回复

使用道具 举报

robotstudy 2017-10-18 17:28 显示全部楼层
非常谢谢分享
回复 支持 反对

使用道具 举报

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

关注0

粉丝11

帖子147

发布主题