找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lou 于 2020-4-30 13:33 编辑

Sunny的树莓派小车DIY教程



149.jpg

一、组件介绍

大家好,我是Sunny。今天将给大家带来系列教程《树莓派小车系列》,先给大家介绍介绍我这次使用到的一些组件。

1、树莓派

148.jpg


2、小车底盘

147.jpg

3、小车车轮(马达)

146.jpg

4、L298N电机驱动模块

145.jpg

5、超声波测距模块、杜邦线

144.jpg

6、电池盒

143.jpg

7、无线网卡

二、模块接线

首先树莓派要安装好系统和python的一些模块。这个小车最主要部分就是L298N模块的控制,控制住了L298N这个模块就控制住了我们整个小车,这里我弄一张图片,大家可以看到每一个地方是干嘛的。然后就是跟树莓派的对接。

L298N的每个接口负责的功能如下图

142.jpg

下面是树莓派和l298n接线图

141.jpg

把马达接到L298N上面,然后把电池盒的正极接到12v接口,负极接到接地接口(中间那个),然后第三个接口需要一个5v的输入,我就从树莓派的GPIO2取。
in1、in2、in3、in4分别接树莓派GPIO的11、12、13、15这几个口。

三、马达转动

上面讲了我们如何把树莓派和l298n和马达接线连接起来。既然连起来了,我们就应该来试试如何用树莓派通过python来控制这个马达的转动。

首先我们需要安装python的gpio模块,可以通过pip安装也可以通过下载源代码安装。

  1. sudo vim xiaoche.py

  2. #导入gpio的模块
  3. import RPi.GPIO as GPIO
  4. import time

  5. #设置gpio口的模式
  6. GPIO.setmode(GPIO.BOARD)

  7. #定义信号接口gpio口
  8. INT1 = 11
  9. INT2 = 12
  10. INT3 = 13
  11. INT4 = 15
  12. #设置gpio口为输出
  13. GPIO.setup(INT1,GPIO.OUT)
  14. GPIO.setup(INT2,GPIO.OUT)
  15. GPIO.setup(INT3,GPIO.OUT)
  16. GPIO.setup(INT4,GPIO.OUT)
  17. #这里参考上一节模块接线的L298N模块的控制图
  18. GPIO.output(INT1,GPIO.HIGH)
  19. GPIO.output(INT2,GPIO.LOW)
  20. GPIO.output(INT3,False)
  21. GPIO.output(INT4,False)
  22. #延时2秒之后执行cleanup释放GPIO接口
  23. time.sleep(2)
  24. GPIO.cleanup()
复制代码

代码写到之后我们保存退出,接着执行一下观看马达有没有转动。

  1. sudo python xiaoche.py
复制代码

四、底盘安装

五、小车跑起来

下面是xiaoche.py 完整的代码。

  1. import RPi.GPIO as GPIO
  2. import time
  3. GPIO.setmode(GPIO.BOARD)

  4. IN1 = 11
  5. IN2 = 12
  6. IN3 = 13
  7. IN4 = 15

  8. def init():
  9.     GPIO.setup(IN1,GPIO.OUT)
  10.     GPIO.setup(IN2,GPIO.OUT)
  11.     GPIO.setup(IN3,GPIO.OUT)
  12.     GPIO.setup(IN4,GPIO.OUT)

  13. def qianjin(sleep_time):
  14.         GPIO.output(IN1,GPIO.HIGH)
  15.         GPIO.output(IN2,GPIO.LOW)
  16.         GPIO.output(IN3,GPIO.HIGH)
  17.         GPIO.output(IN4,GPIO.LOW)
  18.         time.sleep(sleep_time)
  19.         GPIO.cleanup()

  20. def cabk(sleep_time):
  21.         GPIO.output(IN1,GPIO.LOW)
  22.         GPIO.output(IN2,GPIO.HIGH)
  23.         GPIO.output(IN3,GPIO.LOW)
  24.         GPIO.output(IN4,GPIO.HIGH)
  25.         time.sleep(sleep_time)
  26.         GPIO.cleanup()

  27. def left(sleep_time):
  28.         GPIO.output(IN1,False)
  29.         GPIO.output(IN2,False)
  30.         GPIO.output(IN3,GPIO.HIGH)
  31.         GPIO.output(IN4,GPIO.LOW)
  32.         time.sleep(sleep_time)
  33.         GPIO.cleanup()

  34. def right(sleep_time):
  35.     GPIO.output(IN1,GPIO.HIGH)
  36.     GPIO.output(IN2,GPIO.LOW)
  37.     GPIO.output(IN3,False)
  38.     GPIO.output(IN4,False)
  39.     time.sleep(sleep_time)
  40.     GPIO.cleanup()
  41. init()
  42. cabk(10)
复制代码

150.png
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册