
基于梁山派的智能小车
简介
本项目基于立创梁山派开发板,实现了小车避障、循迹和遥控的功能,并预留了摄像头接口和LCD显示屏接口
简介:本项目基于立创梁山派开发板,实现了小车避障、循迹和遥控的功能,并预留了摄像头接口和LCD显示屏接口开源协议
:GPL 3.0
描述
1. 原理图设计
原理图包括扩展板引脚接口、电源输入、按键与车灯指示、蜂鸣器、光强检测、蓝牙与遥控模块、超声波模块、循迹电路、电机驱动和N20电机组,并预留了摄像头模块接口和0.96寸LCD屏幕接口。
2. PCB设计
由于接口众多,尤其是小车的前半部分有着大量的传感器模块,因此线路众多,需要合理安排。

3. 软件设计
软件设计主要包括驱动程序的编写以及避障、循迹、遥控程序的编写。
3.1. 驱动程序的编写
驱动程序包含LED灯、按键、蜂鸣器、电机、超声波模块、ADC、串口和蓝牙串口的初始化。其中电机和蓝牙模块的初始化需要特别注意。
在电机初始化的时候,需要注意引脚的配置(应当确保RZ7889的前进/后退引脚接入的MCU引脚应当能服用成Timer的PWM功能)

在蓝牙模块初始化时,需要注意和梁山派固有的串口区分,并编写蓝牙的串口回调函数

3.2. 避障功能的编写
当小车进入避障模式,小车前方的超声波模块会实时检测与前方障碍物的距离,如果检测到障碍物与小车的距离不足10cm,则小车会开启蜂鸣器,并左转避障。

3.3. 循迹功能的编写
循迹功能在于根据小车前方的五个红外模块的状态确定其运动状态,如中间一个或中间三个检测到黑线,则直行,中间和中间靠左的检测到黑线,在小车略微偏左,如果最左侧的红外模块检测到黑线,则大幅度左转。
部分代码实现如下:

3.4. 遥控功能的编写
在编写遥控代码之前,需要设计相应的蓝牙APP
打开网页http://app.gzjkw.net/,首先设计屏幕组件

接着设计后台程序

其运行原理是按动APP上的相关按钮,就向小车上的蓝牙模块发送相关字节数字,并根据发送的数字决定小车的运行方式。
代码实现如下:

4. 最终实现
由于电机堵转,导致一颗RZ7889的芯片被烧,小车运动的结果就实现不出来了,但是在被烧之前,避障、循迹和遥控的功能也是成功实现了。

5. 一些思考和收获
这个项目让我对电子设计有了全面而深入的理解,在上面遇到了不少困难和疑问,也有不少收获,在这里记录一下,以便各位大佬和未来的自己能够解决。
一些收获和警示
- 原理图设计的时候一定要经常看芯片手册,正确使用引脚的复用功能(我因为没有看准复用功能而浪费了一块板子)
- 如果不是为了追求速度,N20电机的减速比选取应当为1:200-1:300,我的电机选取为1:97,导致其扭矩较小,从而容易导致堵转(在软件设计时,将电机转速设置为40以下时电机就会堵转),电机在堵转状态下电流会大大增加,我认为这也是我RZ7889烧毁的原因
- 传感器应该和使用场景适配。由于我的电机转速较大,因此在避障设计中经常由于超声波传感器来不及反应小车就已经撞上障碍物了,由此可以看出传感器的灵敏度、采样速率、软件设计是和产品的运行环境和状态息息相关的
一些疑问
- 小车的左前和左后轮在keil程序下载到MCU的过程中会一直旋转,且在开机时会旋转一下,并伴随LED灯闪烁一下和蜂鸣器短暂鸣响,我认为对于前一种情况,可能是下载时的波形恰为PWM波,并通过电压互感的方式进入了电机电路,导致电机旋转,对于后者,我认为也可能是瞬间上电,由于电机具有感性,会在MCU正式上电启动前上电启动,同时影响LED灯和蜂鸣器,直到完全上电后电感释放能量,电机才停止旋转
- 遥控模块的设计是否多余,样例程序好像没有对该模块进行书写
6. 总结
这个项目相当于一个小产品,无论是在电路设计、焊接还是软件调试过程种都是需要耗费大量精力的。希望自己在之后的设计中无论遇到多么繁琐的事情也能静下心来一步一步设计完成,也希望自己之后有机会能对这个小车做进一步改进,包括电机的优化,并实现摄像头以及LCD屏幕的驱动。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论