查看原文
其他

圆曾经的小车梦,造一台智能小车(一)

杨源鑫 嵌入式云IOT技术圈 2021-01-31

1、智能小车项目基本规划

智能小车我们再熟悉不过了,读大学期间,部分优秀且动手能力强的小伙伴参加过各种省级、国家级的竞赛,拿到了不少奖,也算是没有给自己的大学留下遗憾。

最近在不少嵌入式相关的群里(我在里面)以及我本人微信公众号后台看到有人问:杨工,智能小车怎么造?需要哪些材料?圆曾经的小车梦吧!二话不说,杨工立马淘宝走起,采购了一批材料,开始把自己曾经造小车的路再走一遍,其一,这可以作为一个开源项目,大家一起来做,提高自己的动手组装硬件小车的能力,提高自己写代码完成项目的能力,其二,增加自己的项目经验,以后出去找工作也有话题和面试官谈。

本期小车规划内容大致如下:

  • 1、购买套件,基础小车驱动硬件配置
  • 2、红外遥控控制小车基础demo实现
  • 3、wifi控制小车基础demo实现
  • 4、基于2、3点添加拓展模块增强小车功能(比如wifi图传小车,循迹小车,避障小车等等)
  • 5、增加多硬件平台开发经验(不限于51、stm32,还会上stm8、arduino,华大MCU,TK499,imx6ul,imx287a,tiny4412等等)
  • 6、增加跨平台开发经验(我们不仅仅只会单片机编程,我们还要根据这个项目进行拓展,学习Android app编程,QT软件编程,嵌入式Linux编程等等)

大概的内容就是以上这些,会不定期更新,同时也会听取大家的意见,随时进行项目变动,比如今天开源群就有一个小伙伴提了一个需求,能不能把群主分享的各种开源组件在这个小车上用起来呢?

没问题,安排!杨工本人做事风格就是这么直接,说做就做,从不放弃也不马虎应付,对于本职工作也是一样,只要是我的东西,着急那就是拼了自己的休息时间回家也得加加班干到凌晨也得干好,这是我个人做事的态度。

2、智能小车套件组装及测试

2.1、智能小车基本框架部分:

小车底盘(一般都会带4个电机,但需要自己组装)
以上是我自己上淘宝买的散装套件,人民币28元。
https://v.youku.com/v_show/id_XNDEzOTUwMjM3Ng==.html?spm=a2h3j.8428770.3416059.1

4WD小车底盘的安装可以看看上面这个链接的视频,基本上都大同小异,看完跟着实操就对了!

电机驱动模块 我选择的是L298N,一共2个,花了人民币9.2元。如图所示,输出A可以接一个电机,输出B也可以接一个电机,所以一个模块可以带两个电机,两个模块可以带四个电机,这样只要给12V端口供电,把GND连接好,当逻辑输入4个引脚只要有管脚电平为1时,电机就可以转动了!如果有共同的电压点,可以用杜邦线串联起来,第一个模块的12V接第二个模块的12V,第一个模块的GND接第二个模块的GND,第一个模块的5V接第二个模块的5V,然后供电单独再引两组线出来,(12V GND)==>接电源,通常是18650的电池三节就够了,(5V GND)==>接单片机开发板,最终效果图如下,这里我将左前轮和右前轮电机接在了最下面的L298N模块,将左后轮和右后轮接在了最上面的L298N模块。

如果觉得杜邦线抵挡不了强大的驱动电流,可以考虑换粗一点的线。

电池供电部分最终效果

2.2、智能小车增加测试的STC单片机开发板(当然你可以选其它的)

测试仅仅只是让单片机IO输出电平,测试电机正反转,以方便我们后面在程序上设计接口,控制小车移动,最终安装效果图如下:


编写一个最简单的51单片机控制程序:

#include <reg52.h>

//L298N模块1连接
sbit Module1_IN1 = P2 ^ 7 ;
sbit Module1_IN2 = P2 ^ 6 ;
sbit Module1_IN3 = P2 ^ 5 ;
sbit Module1_IN4 = P2 ^ 4 ;
//L298N模块2连接
sbit Module2_IN1 = P2 ^ 3 ;
sbit Module2_IN2 = P2 ^ 2 ;
sbit Module2_IN3 = P2 ^ 1 ;
sbit Module2_IN4 = P2 ^ 0 ;
/*
1000 ===> 左前轮后转
0100 ===> 左前轮前转
0010 ===> 右前轮前转
0001 ===> 右前轮后转

1000 ===> 左后轮前转
0100 ===> 左后轮后转
0010 ===> 右后轮后转
0001 ===> 右后轮前转

//四轮同时向前转
0110 1001 0x69

//四轮同时向后转
1001 0110 0x96
*/

//****************************************************
//主函数
//****************************************************
void main()
{
while(1)
{
//四轮同时向前转
P2 = 0x69 ;
Delay_ms(2000);
//四轮停止
P2 = 0x00 ;
Delay_ms(2000);
//四轮同时向后转
P2 = 0x96 ;
Delay_ms(2000);
//四轮停止
P2 = 0x00 ;
Delay_ms(2000);
}
}
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i, j;

for(i = 0; i < n; i++)
for(j = 0; j < 123; j++);
}

最终效果:

为了满足我项目最基本的要求,我选购了两个stm32f103zet6核心板,一个用在小车上,一个备用调试。

当然还有其它的一些小模块,在后台回复小车即可获取杨工本人购买套件的淘宝链接,最后祝各位DIY小车成功,如果有兴趣DIY小车买回来有任何不明白的地方欢迎与我交流,谢谢大家!

往期精彩

MCU串口命令解析器的实现

Neil的MCU软件框架经验分享

嵌入式云IOT技术圈公众号精选文章专题汇总

觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存