“SKU:RB-01C073A 树莓派电机驱动板”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
基本测试代码
基本测试代码
第44行: 第44行:
 
* 需要在树莓派中新建一个 python 程序文件,然后将代码复制到文件中,保存,但是一定要注意保存的目录是需要记住的。  
 
* 需要在树莓派中新建一个 python 程序文件,然后将代码复制到文件中,保存,但是一定要注意保存的目录是需要记住的。  
 
* 使用 Putty 登录到 Raspberry Pi 方法可以参考:[http://www.makerspace.cn/forum.php?mod=viewthread&tid=5681&extra=page%3D1 Raspberry Pi 基础教程汇总]
 
* 使用 Putty 登录到 Raspberry Pi 方法可以参考:[http://www.makerspace.cn/forum.php?mod=viewthread&tid=5681&extra=page%3D1 Raspberry Pi 基础教程汇总]
* 注意程序中我们使用了一个库文件"botbook_gpio",库文件可以直接从上面的例子程序下载中获取到,如果不使用库文件或者库文件和程序文件不是在同一个目录下,会造成程序执行失败。
 
  
 
<pre style='color:blue'>
 
<pre style='color:blue'>
 +
#!/usr/bin/env python
 +
# encoding: utf-8
 +
 +
import RPi.GPIO
 
import time
 
import time
import botbook_gpio as gpio
 
  
shinengA = 10
+
SW1, SW2=11,9
fangxiangA = 25
+
OC1, OC2=22,27
shinengB = 17
+
LED1, LED2=7,8
fangxiangB = 4
+
EA = 10
+
EB = 17
gpio.mode(shinengA, "out")
+
directionA = 25
gpio.mode(shinengB, "out")
+
directionB = 4
gpio.mode(fangxiangA, "out")
+
 
gpio.mode(fangxiangB, "out")
+
RPi.GPIO.setmode(RPi.GPIO.BCM)
+
 
def qianjin():
+
RPi.GPIO.setup(OC1, RPi.GPIO.OUT)
gpio.write(shinengA, gpio.HIGH)
+
RPi.GPIO.setup(OC2, RPi.GPIO.OUT)
gpio.write(fangxiangA, gpio.HIGH)
+
RPi.GPIO.setup(EA, RPi.GPIO.OUT)
gpio.write(shinengB, gpio.HIGH)
+
RPi.GPIO.setup(EB, RPi.GPIO.OUT)
gpio.write(fangxiangB, gpio.HIGH)
+
RPi.GPIO.setup(directionA, RPi.GPIO.OUT)
print "qianjin"
+
RPi.GPIO.setup(directionB, RPi.GPIO.OUT)
time.sleep(1)
+
RPi.GPIO.setup(LED1, RPi.GPIO.OUT)
+
RPi.GPIO.setup(LED2, RPi.GPIO.OUT)
def houtui():
+
gpio.write(shinengA, gpio.HIGH)
+
gpio.write(fangxiangA, gpio.LOW)
+
gpio.write(shinengB, gpio.HIGH)
+
gpio.write(fangxiangB, gpio.LOW)
+
print "houtui"
+
time.sleep(1)
+
+
def zuozhuan():
+
gpio.write(shinengA, gpio.HIGH)
+
gpio.write(fangxiangA, gpio.LOW)
+
gpio.write(shinengB, gpio.HIGH)
+
gpio.write(fangxiangB, gpio.HIGH)
+
print "zuozhuan"
+
time.sleep(1)
+
  
def youzhuan():
+
RPi.GPIO.setup(SW1, RPi.GPIO.IN)
gpio.write(shinengA, gpio.HIGH)
+
RPi.GPIO.setup(SW2, RPi.GPIO.IN)
gpio.write(fangxiangA, gpio.HIGH)
+
gpio.write(shinengB, gpio.HIGH)
+
gpio.write(fangxiangB, gpio.LOW)
+
print "youzhuan"
+
time.sleep(1)
+
  
def tingzhi():
+
try:
gpio.write(shinengA, gpio.LOW)
+
while True:
gpio.write(fangxiangA, gpio.LOW)
+
time.sleep(0.01)
gpio.write(shinengB, gpio.LOW)
+
if (RPi.GPIO.input(SW2) == 1 or RPi.GPIO.input(SW1) == 1):
gpio.write(fangxiangB, gpio.HIGH)
+
RPi.GPIO.output(OC2, False)
print "tingzhi"
+
RPi.GPIO.output(LED2,True)
time.sleep(1)
+
RPi.GPIO.output(OC1, True)
def main():
+
RPi.GPIO.output(LED1,False)
qianjin()
+
time.sleep(1)
+
RPi.GPIO.output(EA, True)
tingzhi()
+
RPi.GPIO.output(EB, True)
time.sleep(0.5)
+
RPi.GPIO.output(directionB, False)
houtui()
+
RPi.GPIO.output(directionA, False)
time.sleep(1)
+
time.sleep(1)
tingzhi()
+
RPi.GPIO.output(directionB, True)
time.sleep(0.5)
+
RPi.GPIO.output(directionA, True)
zuozhuan()
+
time.sleep(1)
time.sleep(1)
+
tingzhi()
+
else:
time.sleep(0.5)
+
RPi.GPIO.output(OC2, True)
youzhuan()
+
RPi.GPIO.output(LED2,False)
time.sleep(1)
+
RPi.GPIO.output(OC1, False)
tingzhi()
+
RPi.GPIO.output(LED1,True)
time.sleep(0.5)
+
 +
RPi.GPIO.output(EA, False)
 +
RPi.GPIO.output(EB, False)
 +
 +
except KeyboardInterrupt:
 +
pass
 
 
if __name__ == "__main__":
+
RPi.GPIO.cleanup()
main()
+
 
</pre>
 
</pre>
  

2016年8月17日 (三) 16:28的版本

Rb01c07301.png

目录

产品概述

新版树莓派电机驱动板采用的电路和接口设计,版型符合树莓派2代的设计,与树莓派完美结合。供电电源采用LM2596开关稳压电源,具有更高效率,更大输出电流,更低的发热量等特点。电机驱动板新品采用L293D,更小的封装尺寸,更合理的电路设计。对外接口方面,采用了奥松新一代防插反接口,和奥松的系列传感器模块匹配,更可以直接安装URF02超声波传感器和蓝牙模块,制作树莓派小车更加方便、简洁。如果您想制作树莓派小车,无需东奔西走,奥松机器人配套全都有!

规格参数

1.电机驱动输出接口:双路双向直流电机驱动
2.电源输出接口:7~12V DC
3.OC输出接口:两路集电极开路输出(25mA,5V电平)
4.板载指示灯:两个可编程控制LED发光二极管
5.开关量接口:两路开关量输入/输出(3.3V电平)
6.UART接口:3.3V电平6Pin串行接口,可直接连接蓝牙模块
7.I2C接口:5V电平I2C接口,可驳接各类I2C接口模块
8.超声波模块接口:可直接连接URF02超声波模块
9.树莓派接口:支持树莓派、树莓派B+、树莓派2等
10.外形尺寸:56*40mm

使用方法

接口示意图

树莓派驱动板接口定义
树莓派驱动板GPIO接口

控制引脚说明

1.电源输入端接入7—12V直流电源,电机驱动板会给树莓派提供5V电源,所以树莓派插接电机驱动板后,只需给驱动板进行供电而树莓派无需额外的电源。
2.板载LED1、LED2,对外接口OC1、OC2分别是树莓派的GPIO7、8、21、23经过74HC14D反相器的输出端,OC1、OC2分别连接一个LED模块,使用树莓派的IO输出高低电平信号,通过74HC14D驱动LED点亮与熄灭。
GPIO7输出高电平,LED1点亮,输出低电平,LED1熄灭;
GPIO8输出高电平,LED2点亮,输出低电平,LED2熄灭;
GPIO22输出高电平,OC1外接LED点亮,输出低电平,OC1外接LED熄灭;
GPIO27输出高电平,OC2外接LED点亮,输出低电平,OC2外接LED熄灭;
3.电机A口的使能接GPIO10,方向控制接GPIO25,电机B口的使能接GPIO17,方向控制接GPIO4,使用树莓派控制引脚可以进行控制电机的启动停止和调速,通过方向引脚控制电机转向。

  • A口使能GPIO17输出高电平,A口方向GPIO25输出高电平,A口电机顺时针旋转;
  • A口使能GPIO17输出高电平,A口方向GPIO25输出低电平,A口电机逆时针旋转;
  • A口使能GPIO17输出低电平,A口电机停止转动;
  • B口使能GPIO10输出高电平,B口方向GPIO4输出高电平,B口电机顺时针旋转;
  • B口使能GPIO10输出高电平,B口方向GPIO4输出低电平,B口电机逆时针旋转;
  • B口使能GPIO10输出低电平,B口电机停止转动;

4.SW1、SW2接口经过限流电阻后直接连接在树莓派的GPIO 11、9.在SW1、GND之间和SWD、GND之间,分别连接一个碰撞开关,GPIO11、9设置为输入,默认电平为高电平(内部有上拉电阻),当开关闭合时,GPIO的电平会被拉低。
5.I2C接口直接连接到树莓派的I2C引脚(GPIO2 |SDA,GPIO 3|SCL),可以扩展I2C模块。
6.UART接口直接连接到树莓派的UART引脚(GPIO 14|TX,GPIO 15|RX),可以扩展UART模块。
7.URF(超声波接口)的OUTPUT经过分压直接连接到GPIO18,INPUT直接连接到GPIO23,树莓派的GPIO 23至高10us以上,然后置低,等待GPIO 18接收到高电平信号时,高电平结束时停止,计算高电平时间,所测量的距离 = 高电平时间*声速/2。

插接方法

与树莓派控制器的完美配合

基本测试代码

  • 需要在树莓派中新建一个 python 程序文件,然后将代码复制到文件中,保存,但是一定要注意保存的目录是需要记住的。
  • 使用 Putty 登录到 Raspberry Pi 方法可以参考:Raspberry Pi 基础教程汇总
#!/usr/bin/env python
# encoding: utf-8

import RPi.GPIO
import time

SW1, SW2=11,9
OC1, OC2=22,27
LED1, LED2=7,8
EA = 10
EB = 17
directionA = 25
directionB = 4

RPi.GPIO.setmode(RPi.GPIO.BCM)

RPi.GPIO.setup(OC1, RPi.GPIO.OUT)
RPi.GPIO.setup(OC2, RPi.GPIO.OUT)
RPi.GPIO.setup(EA, RPi.GPIO.OUT)
RPi.GPIO.setup(EB, RPi.GPIO.OUT)
RPi.GPIO.setup(directionA, RPi.GPIO.OUT)
RPi.GPIO.setup(directionB, RPi.GPIO.OUT)
RPi.GPIO.setup(LED1, RPi.GPIO.OUT)
RPi.GPIO.setup(LED2, RPi.GPIO.OUT)

RPi.GPIO.setup(SW1, RPi.GPIO.IN)
RPi.GPIO.setup(SW2, RPi.GPIO.IN)

try:
	while True:
		time.sleep(0.01)	
		if (RPi.GPIO.input(SW2) == 1 or RPi.GPIO.input(SW1) == 1):
			RPi.GPIO.output(OC2, False)
			RPi.GPIO.output(LED2,True)
			RPi.GPIO.output(OC1, True)
			RPi.GPIO.output(LED1,False)
			
			RPi.GPIO.output(EA, True)
			RPi.GPIO.output(EB, True)
			RPi.GPIO.output(directionB, False)
			RPi.GPIO.output(directionA, False)
			time.sleep(1)
			RPi.GPIO.output(directionB, True)
			RPi.GPIO.output(directionA, True)
			time.sleep(1)
			
		else:
			RPi.GPIO.output(OC2, True)
			RPi.GPIO.output(LED2,False)
			RPi.GPIO.output(OC1, False)
			RPi.GPIO.output(LED1,True)
			
			RPi.GPIO.output(EA, False)
			RPi.GPIO.output(EB, False)
			
except KeyboardInterrupt:
	pass
	
RPi.GPIO.cleanup()

代码功能

代码使用树莓派执行后,小车实现前后左右的运动。

超声波测试例程

需要将下载的示例程序复制到树莓派的 pi 目录下,可以使用 putty 登录到 Raspberry Pi 控制器,输入命令"cd RB-01C073A Raspberry Pi Motor Driver URF02"进入程序目录,然后输入"sudo python URF02.py"命令来执行程序。

  • 使用 Putty 登录到 Raspberry Pi 方法可以参考:Raspberry Pi 基础教程汇总
  • 注意程序中我们使用了一个库文件"botbook_gpio",库文件可以直接从上面的例子程序下载中获取到,如果不使用库文件或者库文件和程序文件不是在同一个目录下,会造成程序执行失败。
import time
import botbook_gpio as gpio

def readDistanceCm():
	triggerPin = 23	
	echoPin = 18

	v=(331.5+0.6*20) # m/s

	gpio.mode(triggerPin, "out")

	gpio.mode(echoPin, "in")
	gpio.interruptMode(echoPin, "both")

	gpio.write(triggerPin, gpio.LOW)
	time.sleep(0.5)

	gpio.write(triggerPin, gpio.HIGH)
	time.sleep(1/1000.0/1000.0)
	gpio.write(triggerPin, gpio.LOW)

	t = gpio.pulseInHigh(echoPin) # s

	d = t*v
	d = d/2
	return d*100	# cm

def main():
	while True:
		d = readDistanceCm()
		print "Distance is %.2f cm" % d
		time.sleep(0.5)

if __name__ == "__main__":
	main()

程序效果

程序执行后,在 Putty 的登录窗口会持续显示出当前超声波检测的前方障碍物距离,单位"cm",如果要退出程序,可以使用“Ctrl + C”组合键。

产品相关推荐

Erweima.png

产品购买地址

树莓派电机驱动板

周边产品推荐

URF02超声波传感器
无线蓝牙模块
树莓派二代控制器

相关问题解答

新买的树莓派2,HDMI无信号,ACT灯常亮
Raspberry Pi 常见问题的解决方法

相关学习资料

玩转树莓派系列视频教程(一)
玩转树莓派系列视频教程(二)
玩转树莓派系列视频教程(三)
玩转树莓派系列视频教程(四)
玩转树莓派系列视频教程(五)
树莓派新手教程三---使用raspi-config工具配置树莓派
树莓派新手教程二---如何安装和启动你的树莓派!
奥松机器人技术论坛树莓派控制器版块