0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用键盘控制树莓派RC汽车

454398 来源:网络整理 作者:网络整理 2019-11-15 16:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:组件

在继续本教程之前,请确保您具有以下组件:

•Raspberry Pi Model B(http://www.adafruit.com/products/998)

•MicroSD卡(http://www.adafruit.com/products/102)

•Pi补鞋匠的分线和电缆(http://www.adafruit.com/products/914)

•任意尺寸的面包板(http://www.adafruit.com/products/239)

•M/M电线(http://www.adafruit.com/products/153) Wires(http://www.adafruit.com/products/266)

•原型Pi板(http://www.adafruit.com/produ cts/801)

•L293D芯片(http://www.adafruit.com/products/807)

•带直流电动机的中型RC汽车

蓝牙键盘

•烙铁和电线

步骤2:先决条件

在继续本教程之前,请确保满足以下先决条件:

•带有GPIO电缆和面包板的组装式补鞋匠

•烙铁体验

•升级的操作系统。您可以通过进入终端来实现此目的:

sudo apt-get upgrade

•最新的GPIO库。您可以通过进入终端来实现此目的:

sudo apt-get update

sudo apt-get install python-dev

sudo apt-get install python-rpi.gpio

步骤3:L293D芯片

硬件设置中最重要的部分是L293D芯片。使用适当的代码,该芯片可让您控制两个独立的直流电动机的速度和方向。了解该芯片的工作方式及其每个引脚的功能对您至关重要。 “ + V”引脚(8)为电动机供电,而“ + V”引脚(16)为芯片逻辑供电。每个“ IN”引脚(2、7、10、15)都需要连接到GPIO引脚,而“ OUT”引脚(3、6、11、14)则为两个直流电动机提供输出。

第4步:硬件

了解了L293D芯片的原理之后,就该将其与其他组件一起组装了,放在面包板上。已为您提供了原理图。请注意L293D芯片的方向。

您可能会注意到图中的LED。这些代表遥控车上的前灯或霓虹灯底灯。如果您的汽车缺少这些功能,请忽略原理图的这一部分。

第5步:软件

下面是您需要的python代码这个程序工作。完成后将程序另存为rc_car.py。

将RPi.GPIO导入为io

io.setmode(io.BCM)

import sys,tty,termiostime

#这两个代码块为RC车上的两个直流电动机配置PWM设置。它定义用于输入的两个GPIO

#引脚,启动PWM并将

#电动机的速度设置为0

motor1_in1_pin = 4

motor1_in2_pin = 17 setup(motor1_in1_pin ,io.OUT)

io.setup(motor1_in2_pin,io.OUT)

motor1 = io.PWM(4,100)

motor1.start(0)

motor1.ChangeDutyCycle(0)

motor2_in1_pin = 24

motor2_in2_pin = 25

io.setup(motor2_in1_pin,io.OUT)

io.setup(motor2_in2_pin,io.OUT)

motor2 = io.PWM(4,100)

motor2 .start(0)

motor2.ChangeDutyCycle(0)

#定义将用于RC车上LED的GPIO引脚,并将输出设置为false .setup( 18,io.OUT)

io.output(18,False)

io.setup(23,io.OUT)

io.output(23,False)

#getch方法可以确定用户通过访问系统文件在键盘上按下了哪个键

#然后它将作为变量返回按下的键

def getch():

fd = sys.stdin .fileno()

old_settings = termios.tcgetattr(fd)

试试:

tty.setraw(sys.stdin.filen o())

ch = sys.stdin.read(1)

最后:

termios.tcsetattr(fd,termios.TCSADRAIN,old_settings)

return ch

#此部分代码定义用于确定电动机是否需要正转或反转的方法。通过将

#GPIO引脚之一设置为true,将另一个设置为false,可以实现不同的方向。如果

#两个引脚的状态都匹配,则电动机将不会旋转。

def motor1_forward():

io.output(电动机1_in1_pin,True)

io.output(电动机1_in2_pin,False)

def motor1_reverse():

io.output(motor1_in1_pin,False)

io.output(motor1_in2_pin,True)

def motor2_forward():

io.output(motor2_in1_pin,True)

io.output(motor2_in2_pin,False)

def io.output(motor2_in1_pin,False)

io.output(motor2_in2_pin,True)

#此方法将打开/关闭灯用户

#按下特定键时关闭。然后它将更改灯的状态

#,以便在下次调用时知道是打开还是关闭灯。

def toggleLights():

全局lightStatus

if(lightStatus == False):

io.output(18,True)

io.output(23,True)

lightStatus = True

else:

io.output(18, False)

io.output(23,False)

lightStatus = False

#此方法将切换转向

电机的方向。该方法将根据用户按下的键确定用户是否要

#向左或向右转,然后

#然后进行适当的调整。它可以用作toggle

#,因为程序无法同时读取

#上的多个按键。车轮的可能位置是#“右”,“中心”和“左”。然后它将更新轮子的

#状态以在下次调用它时进行访问。

def toggleSteering(direction):

global wheelStatus

if(direction ==“ right”):

if(wheelStatus ==“ centre”):

motor1_forward()

motor1.ChangeDutyCycle(99)

wheelStatus =“ right”

elif(wheelStatus ==“ left”):

motor1.ChangeDutyCycle(0)

wheelStatus =“中心”

if(方向==“左”):

if(wheelStatus ==“中心”):

motor1_reverse()

motor1 .ChangeDutyCycle(99)

wheelStatus =“左”

elif(wheelStatus ==“右”):

motor1.ChangeDutyCycle(0)

wheelStatus =“ centre”

#设置PWM固定为false,以便电动机在用户按下第一个键之前不会移动

#。io.output(电动机1_in1_pin,False)

io.output(电动机1_in2_pin,False)

io.output(电动机2_in1_pin ,False)

io.output(motor2_in2_pin,False)

#灯光和转向状态的全局变量

lightStatus = False

wheelStatus =“ centre” 《#》用户h作为界面

print(“ w/s:加速”)

print(“ a/d:转向”)

print(“ l:灯”)

print(“ x:退出” )

#无限循环直到用户按下

#退出键

而True时才结束:

#调用键盘字符检索方法并将其保存

#放入变量

= getch()

#按下“ w”键时汽车将向前行驶

if(char ==“ w”):

motor2_forward()

motor2.ChangeDutyCycle(99)

#按下“ s”键时汽车将倒车

if(char ==“ s”):

motor2_reverse()

motor2.ChangeDutyCycle(99)

#“ a “键将向左转向

if(char ==” a“):

toggleSteering(”左“)

#” d“键将向右转向

if(char = =“ d”):

toggleSteering(“ right”)

##“ l”键将打开/关闭LED灯

if(char ==“ l”):

toggleLights()

#“ x”键将中断循环并退出程序

if(char ==“ x”):

print(“ Program Ended”)

break

#在每个循环的结尾加速电机将停止

#等待其下一个命令

motor2.ChangeDutyCycle(0)

#键盘字符变量将设置为空白,准备好

#保存下一个按下的键

char =“”

#程序将在终止

io.cleanup()

之前停止所有GPIO活动,步骤6:测试和配置

要测试代码,您必须以超级用户身份运行它才能访问引脚。键入以下内容:

sudo python rc_car.py

按W和S键向前和向后移动汽车

按A和D键向左和向右切换转向

按L

在准备退出程序时按X键。

步骤7:焊接

现在是时候将零件焊接到原型板上以增加其耐用性,然后在过程中将板焊接到连接电池组和电机的汽车上。切记不要将任何引脚与焊料连接在一起,因为会交叉信号。最好对电线进行颜色编码以方便参考。

最终产品应与以下内容相似:

第8步:尽情享受您的新骇客RC汽车

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 键盘
    +关注

    关注

    4

    文章

    877

    浏览量

    42075
  • 遥控车
    +关注

    关注

    9

    文章

    82

    浏览量

    25200
  • 树莓派
    +关注

    关注

    122

    文章

    2082

    浏览量

    110757
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    零成本钢铁侠手套!树莓+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-16 16:16 1561次阅读
    零成本钢铁侠手套!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>+OpenCV 秒变手势遥控器!

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    使用树莓和OpenCV实时扫描并存储二维码使用树莓和OpenCV实现物体与动物识别使用树莓
    的头像 发表于 08-14 17:45 2394次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓屏幕怎么选?

    树莓很多人都用过,但屏幕的倒不是很多。不少都是直接远程操作,或者直接接身边的显示设备了。但我觉得给开发板配一个屏幕还是很能提升使用体验的。这次我就介绍一下树莓
    的头像 发表于 08-08 14:59 1727次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>屏幕怎么选?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 1801次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

    工业树莓的高光时刻!树莓工业级 HMI 列阵!

    上海晶珩作为树莓官方设计合作伙伴和代理商,基于树莓技术开发了一系列工业级人机界面(HMI)产品,广泛应用于工业自动化、楼宇控制、智能制造
    的头像 发表于 07-23 18:36 1052次阅读
    工业<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的高光时刻!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>工业级 HMI 列阵!

    树莓挖掘5种顶级加密货币!

    挖掘的最佳加密货币可通过CPU或硬盘挖掘获得。这些加密货币采用“抗ASIC”算法,树莓能够处理并解决这些算法。我将为您介绍适合在树莓派上挖掘的最佳加密货币,以
    的头像 发表于 07-21 16:34 1804次阅读
    <b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>挖掘5种顶级加密货币!

    树莓打造无人机,你需注意的事项!

    能否将树莓装入无人机?使用树莓打造无人机是可行的。树莓充当无人机的“大脑”,将飞行
    的头像 发表于 07-14 17:49 2308次阅读
    <b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>打造无人机,你需注意的事项!

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 3058次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    20个任何人都能完成的树莓酷炫项目!

    不知道如何利用你买的树莓?这个小设备真的能当台式电脑吗?能当服务器吗?能当广播电台吗?当然可以!为了帮助你入门,我们精心挑选了这份树莓
    的头像 发表于 07-03 17:10 4748次阅读
    20个任何人都能完成的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>酷炫项目!

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看
    的头像 发表于 06-26 15:41 1849次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需<b class='flag-5'>键盘</b>或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 1543次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:<b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一个CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通道20安培电流监测
    的头像 发表于 06-04 15:33 2044次阅读
    <b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里
    的头像 发表于 05-22 16:53 1719次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1树莓
    的头像 发表于 05-13 16:39 1301次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    树莓4 打造专属流媒体控制台!

    树莓体验DIY智能科技!如今市面上有各种各样的流媒体控制台,但购买现成的哪有自己从零开始制作的有趣呢?至少,这似乎是树莓
    的头像 发表于 05-11 08:33 748次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>树莓</b><b class='flag-5'>派</b>4 打造专属流媒体<b class='flag-5'>控制</b>台!