基于flask框架的树莓派4B视频操控小车2~小车动起来

2021-04-138947
AI 快速预览详细 收起
本文介绍了如何使用树莓派4B和L298N驱动模块控制小车的移动。首先介绍了GPIO和L298N的基本知识,然后列出了所需的硬件清单,包括树莓派4B、L298N驱动模块、履带小车底盘等。接着详细说明了小车的连线图,特别是树莓派和电池共地的重要性。最后提供了控制小车前进、后退、左转、右转的Python代码示例。
一、知识准备
1.GPIO (树莓派通过GPIO发送命给L298N电机驱动板,控制小车运动)
GPIO(英语:General-purpose input/output),通用型之输入输出的简称 ; 其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)。

2.L298N驱动模块(驱动2个电机)
L298N,是一款接受高电压的电机驱动器,直流电机和步进电机都可以驱动。一片驱动芯片可同时控制两个直流减速电机做不同动作,在6V到46V的电压范围内,提供2安培的电流,并且具有过热自断和反馈检测功能。实验室标配,价格便宜,资料满天飞。


本帖侧重点为树莓派小车构架及移动功能实现
基于flask框架的树莓派4B视频操控小车2~小车动起来图6

二、硬件准备
1.树莓派4B*1
https://www.dfrobot.com.cn/goods-1976.html
基于flask框架的树莓派4B视频操控小车2~小车动起来图2

2.L298N电机驱动模块*1

基于flask框架的树莓派4B视频操控小车2~小车动起来图3

3.履带小车底盘一套

基于flask框架的树莓派4B视频操控小车2~小车动起来图1

4.18650电池*2+电池盒*1(负责给马达供电)
5.充电宝*1(负责树莓派舵机运行)
6.杜邦线母头对母头若干根(连接树莓派和L298N)

三、小车连线图
1.左右蓝色的两路分别连接电机M1和M2
2.18650电池盒正极连接12V供电,负极接GND,
移动电源通过USB Type-C给树莓派供电
注意,树莓派需要和电池盒共地即树莓派GND针脚要和电池盒负极共地
3.蓝色连接IN1连接树莓派11针脚
绿色连接IN2连接树莓派13针脚
黄色连接IN1连接树莓派15针脚
红色连接IN1连接树莓派16针脚
注意黑色连线6号针脚;树莓派GND和电池组共地
4.通道A使能和通道B使能可以不接,这样小车可以运动但无法调速。

基于flask框架的树莓派4B视频操控小车2~小车动起来图4

四、电机转动原理
电机正反转动实现:
输入信号端IN1接高电平,输入端IN2接低电平,电机M1正转。(如果信号端IN1接低电平, IN2接高电平,电机M1反转。)
电机M2是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。(反之反转)。
使能通道A和B未连接,所以PWM信号暂不做分析。


基于flask框架的树莓派4B视频操控小车2~小车动起来图5

五、线路电机局部细节图
1.18650电池两节,充电宝一个(输出为5V2A,所以树莓派没装屏幕)


基于flask框架的树莓派4B视频操控小车2~小车动起来图13

2.安装18650电池;我的马达是6pin的,参照说明书,只连接1正-2负针即可运行

基于flask框架的树莓派4B视频操控小车2~小车动起来图10

3.树莓派模块和L298N模块连接

基于flask框架的树莓派4B视频操控小车2~小车动起来图7

基于flask框架的树莓派4B视频操控小车2~小车动起来图8

此处注意树莓派和电池共地,否则没有电位差马达不运行

基于flask框架的树莓派4B视频操控小车2~小车动起来图9

4.整体效果图,摄像头应用明天专贴说明

基于flask框架的树莓派4B视频操控小车2~小车动起来图12

基于flask框架的树莓派4B视频操控小车2~小车动起来图11

六、代码实现
树莓派VNC登录调试
基于flask框架的树莓派4B视频操控小车2~小车动起来图14
小车正转测试


  1. #导入GPIO库
  2. import RPi.GPIO as GPIO
  3. import time
  4. #设置GPIO模式
  5. GPIO.setmode(GPIO.BOARD)
  6. #设置in1到in4接口
  7. IN1 = 11
  8. IN2 = 13
  9. IN3 = 15
  10. IN4 = 16
  11. #初始化接口
  12. # def init():
  13. #     GPIO.setup(IN1,GPIO.OUT)
  14. #     GPIO.setup(IN2,GPIO.OUT)
  15. #     GPIO.setup(IN3,GPIO.OUT)
  16. #     GPIO.setup(IN4,GPIO.OUT)
  17. GPIO.setup(IN1,GPIO.OUT)
  18. GPIO.setup(IN2,GPIO.OUT)
  19. GPIO.setup(IN3,GPIO.OUT)
  20. GPIO.setup(IN4,GPIO.OUT)
  21. #小车前进函数函数
  22. def front():
  23.     GPIO.output(IN1,GPIO.HIGH)
  24.     GPIO.output(IN2,GPIO.LOW)
  25.     GPIO.output(IN3,GPIO.HIGH)
  26.     GPIO.output(IN4,GPIO.LOW)
  27. #小车后退函数
  28. def back():
  29.     GPIO.output(IN1,GPIO.LOW)
  30.     GPIO.output(IN2,GPIO.HIGH)
  31.     GPIO.output(IN3,GPIO.LOW)
  32.     GPIO.output(IN4,GPIO.HIGH)
  33. #小车左转函数
  34. def left():
  35.     GPIO.output(IN1,GPIO.LOW)
  36.     GPIO.output(IN2,GPIO.LOW)
  37.     GPIO.output(IN3,GPIO.HIGH)
  38.     GPIO.output(IN4,GPIO.LOW)
  39. #小车右转函数
  40. def right():
  41.     GPIO.output(IN1,GPIO.HIGH)
  42.     GPIO.output(IN2,GPIO.LOW)
  43.     GPIO.output(IN3,GPIO.LOW)
  44.     GPIO.output(IN4,GPIO.LOW)
  45. #停止函数
  46. def stop():
  47.     GPIO.output(IN1,GPIO.LOW)
  48.     GPIO.output(IN2,GPIO.LOW)
  49.     GPIO.output(IN3,GPIO.LOW)
  50.     GPIO.output(IN4,GPIO.LOW)
  51. ##############小车前,后,左,右,停止测试###############
  52. #小车前进5秒
  53. front()
  54. time.sleep(5)
  55. #小车后退5秒
  56. back()
  57. time.sleep(5)
  58. #小车右转5秒
  59. right()
  60. time.sleep(5)
  61. #左转5秒
  62. left()
  63. time.sleep(5)
  64. #停止运行,并释放端口
  65. stop()
  66. GPIO.cleanup()
复制代码

小车连续运转测试


小车实地测试











IMG_20210413_182551.jpg (158.68 KB, 下载次数: 4343)

树莓派4B视频操控小车 · 基于Flask框架的小车移动实现_image_3.webp

IMG_20210413_182503.jpg (143.77 KB, 下载次数: 4375)

树莓派4B视频操控小车 · 基于Flask框架的小车移动实现_image_6.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
一只小学生
一只小学生
用的4B?
额定电流3A啊
gray6666
gray6666
作者
回复一只小学生
树莓派4B,但充电宝不到3A,会有电量低的提示
Caner
Caner
牛皮啊,正好需要用到l298
pATAq
pATAq
这套底板多少钱
- 没有更多了 -