SmartDrive 机器人

使用 SmartDrive 扩展板编程遥控机器人

作者:Rishi Deshpande (MagPi 第26期)
翻译:@MagPi

如何使用操纵杆控制机器人

树莓派几乎可以通过编程来解决任何问题,从这个角度来讲树莓派简直是令人吃惊的存在。我曾见过有人用这种便携小电脑做出多媒体中心、云存储设备、气象站、游戏模拟器以及其他许多有用的工具。

然而,我决定创造一个可以遥控并且不需要大量软件维护的机器。机器的硬件特性根据不同的用户而改变,因此我不过多的关注硬件而是在控制机器的代码上下功夫。

我用一个手柄来控制我的机器。为了控制电机,我使用了SmartDrive。这是一个可以让用户通过树莓派控制两个大电流电机的驱动。

程序的开始,需要输入如下的程序段:

import pygame
import sys, os
from SmartDrive import SmartDrive

pygame 用来创立一个手柄事件。sys 用来停止运行中的程序。os 用来读取字符环境。

下面是创建手柄事件的代码

try:
    j = pygame.joystick.Joystick(0)
    j.init()
    print 'Enabled joystick: ' + j.get_name()
except pygame.error
    print 'no jotstick found.' 

建议使用Try-block代码段,因为调试的时候能发现 pygame.error 的异常很重要。

使用单独的函数来使机器人运动是十分有效的。函数如下:

def move(motor, speed):
  direction = 1
  if(speed < 0):
    direction = 0
    speed = speed * -1
  if speed > 100:
    speed = 100
  SmartDrive,SmartDrive_Run_Unlimited(
    motor, direction, speed)

direction 等于0的时候,马达会向后转。当 direction 等于1的时候,马达会向前转。要注意 SmartDrive 的速度值区间是 0-100,所以编程时要注意这个范围。现在这个函数现在可以在任何时候被调用。

在写程序的主循环部分要注意需要对手柄轴坐标进行缩放。Pygameget_axis 函数的范围是从 -110 的时候是中间。因此我们需要将上面的值放大100倍来使之前函数的 Speed 参数可以和轴坐标值对应上。代码如下:

while True:
  pygame.event.get()
  x1 = 100 * j.get_axis(0)
  y1 = 100 * j.get_axis(1)
  if j.get_button(1):
    move(1, 0)
    move(2, 0)
    sys.exit(1)
  lMotor = x1 + y1
  rMotor = x1 - y1
  move(1, lMotor)
  move(2, -rMotor)

get_button 函数用来停止程序并使机器人停止运行。

我已经列出了我在这个项目中所使用的所有的电子器件、马达以及其他一些硬件。其实我挺推荐你去废品场淘一点用得到的马达,这样你就可以省下一小笔钱了。你可以找一找电动窗马达或者玩具车上的马达。我之所以用 SmartDrive 是因为它可以为每个马达提供 300W 的功率,尽管我实际使用时只用了 22W。

SmartDrive
SmartDrive

正如我之前提到的,SmartDrive 可以使树莓派最多控制2个大电流电机。它由树莓派上的I2C接口控制。

程序接口是用 Python 编写的并且包含了许多可以用不同方法控制马达的函数。马达可以连接到 SmartDrive - 被标为M1和M2的两个(第三个是用来接电源的)黑色螺丝接线端子上。 当然使用C语言来编写 SmartDrive 也是可以的。

还有一些函数可以用来控制马达运行时的转向角度、每秒的转速、甚至可以指定转动的次数。它还支持旋转编码器。SmartDrive 还有一个很好的特性就是它提供了一个可以驱动树莓派的5V电源,这样我们就不用再找其他的电源了。

元件清单:

  1. SmartDrive
  2. Tempest TR1 .3-1 2 Battery (1 2V)
  3. DreamGrear Shadow USB wireless joystick
  4. 2x Pittman GM9234E765-R1 motors

源于社区,归于社区。 Github | @树莓派杂志中文版

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容