电子说
步骤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,termios,time
#这两个代码块为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
全部0条评论
快来发表一下你的评论吧 !