611浏览
查看: 611|回复: 4

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

[复制链接]
一、知识准备
1.GPIO (树莓派通过GPIO发送命给L298N电机驱动板,控制小车运动)
GPIO(英语:General-purpose input/output),通用型之输入输出的简称 ; 其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)。

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


本帖侧重点为树莓派小车构架及移动功能实现
111.jpg

二、硬件准备
1.树莓派4B*1
https://www.dfrobot.com.cn/goods-1976.html
TueApril-202104132401..png

2.L298N电机驱动模块*1

TueApril-202104131065..png

3.履带小车底盘一套

TueApril-202104139215..png

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使能可以不接,这样小车可以运动但无法调速。

TueApril-202104137940..png

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


TueApril-202104133877..png

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


IMG_20210413_181926.jpg

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

IMG_20210413_182224.jpg

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

IMG_20210413_182007.jpg

IMG_20210413_182132.jpg

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

IMG_20210413_182034.jpg

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

IMG_20210413_182447.jpg

IMG_20210413_182441.jpg

六、代码实现
树莓派VNC登录调试
111.png
小车正转测试

  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
IMG_20210413_182503.jpg

pATAq  版主

发表于 2021-5-5 23:20:49

这套底板多少钱
回复

使用道具 举报

Caner  见习技师

发表于 2021-5-25 10:01:41

牛皮啊,正好需要用到l298
回复

使用道具 举报

一只小学生  中级技师

发表于 2021-6-25 10:37:02

用的4B?
额定电流3A啊
回复

使用道具 举报

gray6666  初级技神
 楼主|

发表于 2021-6-26 21:31:16

一只小学生 发表于 2021-6-25 10:37
用的4B?
额定电流3A啊

树莓派4B,但充电宝不到3A,会有电量低的提示
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail