DIY智能小车篇(一):结构模块

前言

本篇主要针对制作智能小车过程中用到的各种结构模块进行统一阐述,为大家提供参考的同时也是自己对之前所做工作的总结。本人所制作的智能小车所需零部件均从某宝上购得,这家店的零件比较全,本文中的大部分模块都可以搜得到(没有任何打广告的成分,我自己就是从别处买的,只不过这里零件比较全,很多资料也很丰富,可以多多参考)

模块汇总

底板

1. 双层亚克力板
双层设计有利于搭建其他结构模块
在这里插入图片描述
2. 直条双轴减速马达
优点:物美价廉,某宝上电机带车轮一套三块钱
在这里插入图片描述
3. 橡胶车轮
在这里插入图片描述

STM32F407开发板

此智能小车的主控板
在这里插入图片描述

L298N电机驱动模块

本部分主要参考绅士祥P_xiaojia的这两篇博文,如有侵权,请联系删除

首先看看模块的样子在这里插入图片描述
然后依次介绍每个部分:

输出A: 通道A输出 ,连接电机正负两端
输出B: 通道B输出 ,连接电机正负两端
12V供电: 主电源正极输入
供电GND: 主电源负极输入
5V输出: 5v电压输出端,可用于给MCU供电
ENA: 通道A使能 使用PWM波控制时去掉跳线帽,将PWM输出接口接在使能端
ENB: 通道B使能 使用PWM波控制时去掉跳线帽,将PWM输出接口接在使能端
板载5v使能:这是个跳线帽,可选项,接上后板载5V输出有效,利用5V输出端可以给别的MCU供电
IN1~IN4: 逻辑输入IN1~ IN2控制通道A,逻辑输入IN3~IN4控制通道B 。由这些引脚的电平状态来控制两个马达的正转,反转,停止。详细的介绍见下表。在这里插入图片描述
实际接线方法参考上文提到的这篇文章里面的实际接线图,我用的第二种接线方法,也就是外接电源驱动。
常见问题
电机不会转动?
(1)有响声但是齿轮不转,可能是电压不够也可能是没有共地
(2)接线存在错误,没有与MCU共地等(当时我出现这个问题就是因为没有共地,折腾了我好一会)
(3)逻辑端编程错误,没有正确的使能

小车上长这样
在这里插入图片描述

红外循迹传感器

在这里插入图片描述
简单介绍
TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为低电平,指示二极管被点亮。

接线方法
1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、DO:TTL开关信号输出
4、AO:模拟信号输出(不同距离输出不同的电压,此脚一般可以不接)

小车上面长得是这样子的在这里插入图片描述

避障云台

1. SG90舵机
DIY小车之类的产品用的很多,便宜实惠,用PWM波控制,几块钱一个
橙色信号线,红色电源正,棕色电源负橙色信号线,红色电源正,棕色电源负

控制原理及PWM配置:参考博文
舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分

PWM周期为20ms = (7200*200)/72000000=0.02
所以TIM_Period = 199,TIM_Prescaler = 7199

占空比 = t / T 相关参数如下:
t = 0.5ms——————舵机会转动 0 °
t = 1.0ms——————舵机会转动 45°
t = 1.5ms——————舵机会转动 90°
t = 2.0ms——————舵机会转动 135°
t = 2.5ms——————舵机会转动180°

PWM占空比是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,由于PWM周期为20ms,所以(以舵机会转动 45°为例),占空比就应该为1ms/20ms = 5%,所以TIM_SetCompare1的 TIMx 捕获比较 1 寄存器值就为200-200*5% = 190

2. HC-SR04超声波模块
在这里插入图片描述
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路

板上接线方式
VCC、 trig(控制端)、 echo(接收端)、 GND
注:TRIP引脚是内部上拉10K的电阻,默认为高电平,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。
在这里插入图片描述

工作原理
1、我们先拉低 TRIG,然后至少给 10us 的高电平信号去触发;
2、触发后,模块会自动发射 8 个 40KHZ 的方波,并自动检测是否有信号返回。
3、如果有信号返回,通过 ECHO 输出一个高电平,高电平持续的时间便是超声
波从发射到接收的时间。那么测试距离=高电平持续时间340m/s0.5;

小车上长这样,有股淡淡的忧伤在这里插入图片描述
在这里插入图片描述

HC-05蓝牙模块

这位老兄写的非常清楚明了啦,我就不重复造轮子啦,非常感谢Yngz_Miao

PS2无线遥控模块

所有的资料都在这里啦,很全面,自取。操作很简单,自己研究研究都可以搞定,我就不重复介绍啦
在这里插入图片描述

电源模块

整车全部电源由一块12V的格氏航模电池提供,分别引出接线给STM32开发板、L298N电机驱动供电,其他用电从开发板引出
在这里插入图片描述

  • 41
    点赞
  • 363
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
当然可以!以下是一个简单的智能小车控制代码示例: ```python import RPi.GPIO as GPIO import time # 设置GPIO引脚 pin_left_forward = 17 pin_left_backward = 18 pin_right_forward = 27 pin_right_backward = 22 # 设置GPIO模式为BCM GPIO.setmode(GPIO.BCM) # 设置引脚为输出模式 GPIO.setup(pin_left_forward, GPIO.OUT) GPIO.setup(pin_left_backward, GPIO.OUT) GPIO.setup(pin_right_forward, GPIO.OUT) GPIO.setup(pin_right_backward, GPIO.OUT) # 前进函数 def forward(): GPIO.output(pin_left_forward, GPIO.HIGH) GPIO.output(pin_left_backward, GPIO.LOW) GPIO.output(pin_right_forward, GPIO.HIGH) GPIO.output(pin_right_backward, GPIO.LOW) # 后退函数 def backward(): GPIO.output(pin_left_forward, GPIO.LOW) GPIO.output(pin_left_backward, GPIO.HIGH) GPIO.output(pin_right_forward, GPIO.LOW) GPIO.output(pin_right_backward, GPIO.HIGH) # 左转函数 def turn_left(): GPIO.output(pin_left_forward, GPIO.LOW) GPIO.output(pin_left_backward, GPIO.LOW) GPIO.output(pin_right_forward, GPIO.HIGH) GPIO.output(pin_right_backward, GPIO.LOW) # 右转函数 def turn_right(): GPIO.output(pin_left_forward, GPIO.HIGH) GPIO.output(pin_left_backward, GPIO.LOW) GPIO.output(pin_right_forward, GPIO.LOW) GPIO.output(pin_right_backward, GPIO.LOW) # 停止函数 def stop(): GPIO.output(pin_left_forward, GPIO.LOW) GPIO.output(pin_left_backward, GPIO.LOW) GPIO.output(pin_right_forward, GPIO.LOW) GPIO.output(pin_right_backward, GPIO.LOW) # 主程序 if __name__ == '__main__': try: while True: command = input("请输入指令:") if command == 'w': forward() elif command == 's': backward() elif command == 'a': turn_left() elif command == 'd': turn_right() elif command == 'x': stop() else: print("无效指令,请重新输入!") except KeyboardInterrupt: GPIO.cleanup() ``` 请注意,此代码是基于树莓派(Raspberry Pi)和RPi.GPIO库的示例。你需要根据你的硬件和GPIO引脚配置进行适当的修改。这只是一个简单的示例,你可以根据你的需求进行更多的功能扩展和优化。记得在使用GPIO引脚之前,确保正确地安装了RPi.GPIO库。祝你好运!
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值