微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 我的机器人处女作:用树莓派和Phyton轻松搞定

我的机器人处女作:用树莓派和Phyton轻松搞定

时间:08-25 来源:人才芯片工程 点击:

辑器,分4步走,

Step1:导入GPIO库,在编辑行中键入"import RPi.GPIO as GPIO",按"回车"键执行即可;

Step2:设定GPIO引脚使用标号模式,若是选择板子上的标号,在编辑器中键入"GPIO.setmode(GPIO.BOARD)"若是使用芯片本身的标号模式,只要键入"GPIO.setmode(GPIO.BCM)";

Step3:设定对应GPIO的模式,若是使用其输出功能"GPIO.setup(pin_number,GPIO.OUT)",使用输入功能只要将GPIO.OUT修改为GPIO.IN即可;

Step4: 在输出模式下,使对应管脚的电平置高或者置低,在输入模式下只要读取相应管脚的电平即可。如果你对上述4个步骤有了理解,那就尝试一下,我在此对 RasPi Driver上熄灭LED1以及点亮LED2操作为例说明,给出试验代码以及试验实际的照片(如图4),如果你也能实现上述操作,那就恭喜你,已经掌握了 在树莓派上对GPIO的使用。

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

图4 试验截图

上手树莓派之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。

图5 手机蓝牙遥控器

图6 测试照片

上手树莓派之机器人控制篇

对于AS-4WD小车的控制而言就比较简单了,在本制作中用到了RasPi专用的电机驱动板,板载以L293为核心的电机驱动电路,以及通过两组每组2个IO来实现电机的正反转、以及使能。

通过上述的管脚布置可以清晰的看出,树莓派外置硬件与RasPi Driver的连接关系,通过GPIO4以及GPIO17控制其中一路电机的转向以及使能(高电平有效),利用GPIO8来对正反转进行状态指示,同理可 见GPIO25用于另一路的正反转控制、GPIO10为使能、GPIO7状态指示;同时利用板上外置的UART接口与蓝牙串口模块连接,具体方法不在赘 述。

对于整个程序框架相对以前的单片机版的遥控小车而言是比较简单的,主要分功能模块初始化设置、循环判断遥控 值以及输出对应功能运动值,详见系统控制原理框图8。导入库文件,对GPIO和串口配置,具体参数和上述一致,不在赘述;完成上述设置后,就是整个控制小 车的程序了,读取串口缓冲区的值,随后完成循环判断由手机蓝牙遥控器发送的字符数据"A"、"B"、"C"、"D",对应相应的运动动作(注意:在对应相 应的动作时,可能由于驱动板电机的接线原因高低电平不对应预设动作,可以灵活适当调整接线或者软件修改电平)。

图8 系统控制原理框图

至此,用树莓派的小车已经告一段落,也是完成了笔者对树莓派的电子制作的处女作,通过几天的的学习,发现其资源以及各方面的性能允许我们开发更多更好地电子制作、机器人制作,相信在不久的将来,还能继续为大家奉上树莓派大餐!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top