(SKU:RB-01C073)树莓派电机驱动板
目录 |
产品概述
Raspberry Pi包括很多的处理能力,这使得它成为完美的机器人的大脑,Raspberry Pi有很多硬件外设,但电机控制器不是其中之一。最新款Raspberry Pi树莓派直流电机驱动板,由哈尔滨奥松机器人科技有限公司研发团队专门为广大树莓派爱好者量身定做,解决了树莓派电机控制的问题,变成一个机器人控制器的扩展板。此款直流电机驱动板外形精巧,插接方便,性能稳定;与树莓派控制器完美结合,安装它只要简单的把树莓派驱动板的GPIO口Raspberry Pi插接在一起,它提供两个电机控制接口,两个状态LED显示,一个Python库可以很容易的控制树莓派驱动板。Raspberry Pi和树莓派电机驱动板相结合,使得它构建一个机器人更容易和更便宜,便于利用机器人来学习使用Linux操作系统和Python代码,用树莓派控制器制作出属于你自己的酷炫机器人,快来打造你的机器人王国吧!
规格参数
1.电机控制:双电机双向控制
2.输入电压:DC 7 - 12V
3.输出:双开放式集电极输出
4.状态指示灯:2×LED绿色
5.扩展接口:5V串行接口、3V的I2C总线接口
6.编程:简单的使用Python库模块
7.连接:使用GPIO接口直接同树莓派连接
8.外形尺寸:51×51 mm
使用方法
利用Raspberry Pi的硬件和Python语言来完成一个机器人制作
硬件搭建
在这次制作中,选择一款AS-4WD铝合金的小车平台,以小车平台为基础,在上面添加了7寸高清液晶显示器、无线键盘、蓝牙模块以及电机驱动器等配件,如图1是罗列制作机器人所用的物料。整个树莓派的小车系统分两步来搭建,首先是搭建树莓派的计算机系统,虽然是一个袖珍的计算机,但是“麻雀虽小,五脏俱全”,除去树莓派的主板外,还需准备一套标准通用的USB键盘鼠标,一个显示器(在本文描述的是一个用于车载监控设备的7寸显示器,通过RCA接口相连),一块电池用于整个系统供电,最后也是最关键的需要准备预装了Debian系统的SD卡(对于SD卡要求读写最好在4MB/S以上、容量大于2GB,当然容量更大速度越快更好)。在完成计算机系统搭建后,接下来是完成机器人系统的搭建,在原理上,主要利用树莓派那两排外置的针脚的GPIO功能控制外置树莓派专用的驱动器(Raspi driver)来实现电机的使能、正反转控制,以及利用UART功能与蓝牙数传模块实现数据通信,这样就能通过手机端的蓝牙遥控器对小车进行控制,如图2是整体硬件搭建完后的靓图,在图3中给出了树莓派机器人的硬件连线图。
Python库配置
在开始编写小车控制程序前需要对树莓派计算机的相关Python的库文件进行安装设置,首先是GPIO,打开LX终端(LXTerminal),更新apt-get软件安装包列表(注意必须要在网络连接正常情况下),然后执行安装命令来安装raspberry-gpio-python包,具体指令如下:
- pi@raspberrypi ~ $ sudo apt-get update
- pi@raspberrypi ~ $ sudo apt-get install python-rpi.gpio
在安装完成Python的GPIO库后,接下来是安装Python的UART库,和上述之前步骤相似,更新apt-get软件安装包列表,后安装Python的串口通信模块,具体指令如下:
- pi@raspberrypi ~ $ sudo apt-get update
- pi@raspberrypi ~ $ sudo apt-get install python-serial
通过上述两个步骤,已经安装好了Python与树莓派外置硬件GPIO以及UART库文件,在接下来的小车控制程序里就可以直接调用代码了,在开始编写控制程序前,需要对默认串口的一些参数进行更改,由于系统默认的串口功能用于输出内核日志,相关的参数与外界的串口设备有所不同,所以需要对其启动配置文件进行更改,在LXTerminal通过键入“sudo nano /boot/cmdline.txt”进入/boot/cmdline.txt,用vi编辑器打开cmdline.txt文件,将dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait去掉console=ttyAMA0,115200 kgdboc=ttyAMA0,115200退出vi编辑器时,注意要对文件进行保存;同时需要对系统初始化文件进行编辑,在LXTerminal中,键入“ sudo nano /etc/inittab”,然后找到以下片段内容:
- #Spawn a getty on Raspberry Pi serial line
- T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
改为如下,注释掉对“ttyAMA0”端口的参数即可,退出vi编辑器时,同样需要注意要对文件进行保存
- #Spawn a getty on Raspberry Pi serial line
- #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
重启树莓派,该配置就可以生效了,完成了上述步骤,就可以进入下一章节,机器人调试进程。
Python GPIO调试
调试步骤
利用在计算机上的语言来让计算机的IO出现跳动,打开系统桌面上的IDLE3编辑器,分4步走:
- 导入GPIO库,在编辑行中键入“import RPi.GPIO as GPIO”,按“回车”键执行即可;
- 设定GPIO引脚使用标号模式,若是选择板子上的标号,在编辑器中键入“GPIO.setmode(GPIO.BOARD)”若是使用芯片本身的标号模式,只要键入“GPIO.setmode(GPIO.BCM)”;
- 设定对应GPIO的模式,若是使用其输出功能“GPIO.setup(pin_number,GPIO.OUT)”,使用输入功能只要将GPIO.OUT修改为GPIO.IN即可;
- 在输出模式下,使对应管脚的电平置高或者置低,在输入模式下只要读取相应管脚的电平即可。
调试示例
RasPi Driver上熄灭LED1以及点亮LED2操作
- import RPi.GPIO as GPIO
- #### gpio init
- GPIO.setmode(GPIO.BCM)
- GPIO.setup(7,GPIO.OUT) #LED2
- GPIO.setup(8,GPIO.OUT) #LED1
- GPIO.output(7,GPIO.LOW) #LED2 ON
- GPIO.output(8,GPIO.HIGH)#LED1 OFF
Python UART调试
对于树莓派的UART功能的实现其实方法和步骤与上面的GPIO 的使用类似,也是分作4步走:
- Step1导入串口库,键入“import serial”;
- Step2初始化串口,在此设置于外部蓝牙配套的参数,BUAD=9600,timeout = 0.5,相应的键入“ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5)”;
- Step3打开使能串口,“if ser.isOpen() == False:ser.open()”;
import serial import time ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5) while True: if ser.isOpen() == False: ser.open() print ser.read() ser.write('A') time.sleep(1)
- Step4当读取数据时使用“ser.read() ”,当发送数据时使用“ser.write(数据)”。这里通过IDLE3编辑了一个Python的程序Serial_test.py,然后直接在LXTerminal键入“sudo python Serial_test.py”(注意,由于默认状态下是利用账户名:pi进行操作,所以需要将文件放置在/home/pi目录下,才能直接执行,无需),然后手机蓝牙遥控器(如图5)与蓝牙透传模块相连接,成功通讯后,既可以通过手机遥控器的按键按钮发送相应字符在串口上看见对应字符打印至屏幕。在此给出了测试的源程序(如下),通过电脑端的蓝牙虚拟出串口与树莓派外接的蓝牙透明串口模块连接,进行数据传递,电脑端的串口助手发送字母“B”,同时收到树莓派发送来的字母“A”并显示在调试的接收窗口,树莓派端收到由电脑端发送来的字母“B”,并打印出来,通过此现象既可以证明树莓派的UART功能测试正常,如下附实验的屏幕截图6。
机器人控制
对于AS-4WD小车的控制而言就比较简单了,在本制作中用到了RasPi专用的电机驱动板,板载以L293为核心的电机驱动电路,以及通过两组每组2个IO来实现电机的正反转、以及使能。通过上述的管脚布置可以清晰的看出,树莓派外置硬件与RasPi Driver的连接关系,通过GPIO4以及GPIO17控制其中一路电机的转向以及使能(高电平有效),利用GPIO8来对正反转进行状态指示,同理可见GPIO25用于另一路的正反转控制、GPIO10为使能、GPIO7状态指示;同时利用板上外置的UART接口与蓝牙串口模块连接,具体方法不在赘述。对于整个程序框架相对以前的单片机版的遥控小车而言是比较简单的,主要分功能模块初始化设置、循环判断遥控值以及输出对应功能运动值,详见系统控制原理框图7。导入库文件,对GPIO和串口配置,具体参数和上述一致,不在赘述;完成上述设置后,就是整个控制小车的程序了,读取串口缓冲区的值,随后完成循环判断由手机蓝牙遥控器发送的字符数据“A”、“B”、“C”、“D”,对应相应的运动动作(注意:在对应相应的动作时,可能由于驱动板电机的接线原因高低电平不对应预设动作,可以灵活适当调整接线或者软件修改电平)。