手把手树莓派小车教程(一)之——小车跑起来

项目背景:

前段时间笔者接触到了一个关于救援小车的项目,这个小车还需要适应比较复杂的地形。因此淘宝里类似于树莓派智能小车的产品(大都是亚克力板拼接或底座太低)不太适合。因此笔者买了一个能够水陆两栖的遥控汽车,希望能够把它从遥控小车改装成能受树莓派控制的小车。


关于小车:

笔者调研了市面上一大部分小车,终于选择了如下图所示的这一款水陆两栖小车。

小车到了之后经过了一番拆卸。。。

拆卸之后肯定是不能在水里开了,但是这个车的架构还是非常有型的。并且还是有所收获的:
a.该车供电电压为9.6v,配有8节电池,每次充满电需大概4个小时。
b.车中心有一个被刮去名称的寄存器模块,用来实现遥控器的近距离控制。
c.该车配有3个直流电机。其中两个一起接入中心的模块,用来控制小车四个轮胎的前后方向,以达到四驱的目的。另一个直流电机控制两个前轮的左右方向。
根据上面的信息。若要用树莓派控制小车,需将小车中心的寄存器模块用电烙铁取下来。用一个电机模块,供电电压能够在9.6v左右。连接小车3个直流电机的同时,能够受树莓派的逻辑电压控制。


关于驱动模块:

经过大量教程的搜集与市场调研,找到了这样一款驱动模块L298N直流电机驱动模块:
手把手树莓派小车教程(一)之——小车跑起来_第1张图片
该模块供电范围在7-35v,逻辑电压在5-7v,且驱动电流在2A,非常适合树莓派对其进行控制。


模块连接:

该模块与小车直流电机、树莓派的连接如下图所示:
手把手树莓派小车教程(一)之——小车跑起来_第2张图片
图中树莓派引脚如下图所示,上面的IN1-IN4分别连接树莓派的GPIO.1 GPIO.0 GPIO.2 GPIO.3:
手把手树莓派小车教程(一)之——小车跑起来_第3张图片
连接后的实物如下图所示(图中的一些传感器请先无视):
手把手树莓派小车教程(一)之——小车跑起来_第4张图片
注意:用电烙铁将原本的正负线取下后可能会残留一部分焊锡无法取出,这样不好插进电机模块的固定位置。因此笔者将正负线用杜邦线一头再次焊接好,并将焊接的地方用黑胶布粘牢。另一头减掉直接,用漏出来里面的铜丝接入驱动模块,调整好后用热熔胶将其彻底固定,防止漏电。
经过前期的工作,终于将小车与树莓派连接好了。不过这里笔者给树莓派本身也配了一个5v2a的电池模块,因此这里还是有两个电池的。若只需要一个电池供电,还得准备一个DC-DC可调节降压模块,一边用杜邦线连接电源的正负极,中间电压调成5v,由于该电源电流不会超过3A,因此另一边可以用杜邦线引出,接到树莓派2号(+)与6号(-)引脚(注意:一定保证连接引脚正确,这边供电不具有保险措施)。


代码编写:

接下来是对小车驱动的代码编程了。笔者这里先主要介绍如何能够让小车简单跑起来。对于直流电机的旋转放书需要参照如下图所示的表格:
手把手树莓派小车教程(一)之——小车跑起来_第5张图片

首先将需要库进行安装

sudo apt-get install python-pip 
sudo pip install RPi.GPIO

接下来对小车连接的各个GPIO口进行初始化

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)

IN1 = 11
IN2 = 12
IN3 = 13
IN4 = 15

GPIO.setup(IN1,GPIO.OUT)
GPIO.setup(IN2,GPIO.OUT)
GPIO.setup(IN3,GPIO.OUT)
GPIO.setup(IN4,GPIO.OUT)

然后是对小车向前1秒的编写

GPIO.output(IN1,False)
GPIO.output(IN2,False)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)

time.sleep(1)

GPIO.cleanup()

到这里我们就可以实现小车的向前移动了。接下来可以测试一下其他的方向移动。

向后:

GPIO.output(IN1,False)
GPIO.output(IN2,False)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)

向左:

GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,False)
GPIO.output(IN4,False)

向右:

GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,False)
GPIO.output(IN4,False)

左上:

GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)

右上:

GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)

左下:

GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)

右下:

GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)

总结:

现在小车便可以简单跑起来了,但这样还是远远不够的,我们希望得是能够用按键来控制小车。后面会给大家讲解如何实现。感谢各位观看,如有不足,欢迎在评论内留言与讨论。如果觉得写得好的,可以给我点赞+收藏+关注哦,再次感谢各位!
在这里插入图片描述

参考:

【公开课】树莓派教程

你可能感兴趣的:(树莓派,gpio,物联网,单片机,python,linux)