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

    文章

    858

    浏览量

    39575
  • 遥控车
    +关注

    关注

    9

    文章

    81

    浏览量

    23685
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105510
收藏 人收藏

    评论

    相关推荐

    使用树莓实现远程控制的技巧

    树莓是一款功能强大的微型计算机,其体积小巧、价格低廉,非常适合用于各种DIY项目。其中,远程控制树莓应用中非常受欢迎的一个领域。通过远
    的头像 发表于 11-11 11:37 259次阅读

    树莓开发的最佳编程语言选择

    应用。 1. Python 优势: 易学易用: Python以其简洁的语法和强大的功能而闻名,非常适合初学者。 广泛的库支持: Python拥有大量的库,如GPIO Zero、PiGPIO等,这些库使得控制树莓的GPIO引脚变
    的头像 发表于 11-11 11:34 217次阅读

    ARM开发板与树莓的比较

    ARM开发板和树莓都是基于ARM架构的单板计算机,它们在教育、工业控制、物联网等领域有着广泛的应用。 硬件配置 ARM开发板和树莓的硬件
    的头像 发表于 11-05 11:11 228次阅读

    树莓gpio有什么,树莓gpio接口及编程方法

    /Output,通用输入/输出)是树莓提供的一组可编程的引脚,是树莓与外部世界进行交互的重要桥梁。通过GPIO,用户可以控制外部电路,读
    的头像 发表于 10-22 18:09 459次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 452次阅读

    树莓网关:物联网应用的新标杆

    的特点是体积小巧(大约信用卡大小),但功能齐全,足以支持多种计算任务。 树莓经常被用作物联网网关,收集设备数据,然后将数据上传云平台,并还可以用来接收来自云端的控制指令,控制其他连接
    的头像 发表于 10-09 16:44 230次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和51单片机哪个有优势

    是一款由英国树莓基金会开发的信用卡大小的单板计算机。自2012年推出以来,树莓已经发展出多个版本,包括A、B、2、3、4等型号。树莓
    的头像 发表于 09-02 09:04 662次阅读

    树莓和单片机的优缺点是什么

    树莓(Raspberry Pi)和单片机(Microcontroller)是两种广泛应用于电子项目和嵌入式系统的硬件平台。它们各自具有独特的优缺点,适用于不同的应用场景。 树莓
    的头像 发表于 08-30 18:21 1440次阅读

    树莓的功能用途是什么

    、科研、工业控制、物联网、多媒体播放、家庭自动化等领域。 树莓(Raspberry Pi)是一种小型、低成本的单板计算机,由英国的Raspberry Pi基金会开发,其功能和用途非常广泛。以下是
    的头像 发表于 08-30 18:01 2222次阅读

    树莓gui开发什么ide

    树莓(Raspberry Pi)是一款功能强大的微型计算机,可以运行多种操作系统,如Raspbian、Ubuntu等。在树莓派上进行GUI(图形用户界面)开发,可以使用多种集成开发环境(IDE
    的头像 发表于 08-30 16:49 658次阅读

    树莓是x86还是arm

    树莓(Raspberry Pi)是一款由英国树莓基金会(Raspberry Pi Foundation)开发的微型计算机。它基于ARM架构,而非x86架构。 一、
    的头像 发表于 08-30 15:42 754次阅读

    树莓装ubuntu和raspbian哪个更好

    树莓(Raspberry Pi)是一款由英国树莓基金会开发的单板计算机,广泛应用于教育、科研、物联网等领域。树莓
    的头像 发表于 08-30 15:41 1041次阅读

    树莓主板如何连接电脑

    连接树莓派到电脑是一个非常有用的功能,它可以让我们在电脑上进行树莓的操作和管理。本文将详细介绍如何连接树莓主板到电脑。我会从准备工作开始
    的头像 发表于 01-07 15:40 1802次阅读

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是一种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓也被广泛应用。本文将详细介绍基于
    的头像 发表于 01-04 15:15 1845次阅读

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41