小工具知识网

当前位置: 首页 > 行业知识 > 51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结

行业知识

51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结

2026-11-12 16:15:43 来源:互联网转载

���录

1.电机模块开发

1.1 让小车动起来

1.2 串口控制小车方向

1.3 如何进行小车PWM调速

1.4 PWM方式实现小车转向

2.循迹小车 

2.1 循迹模块使用

2.2 循迹小车原理

2.3 循迹小车核心代码

3.跟随/避障小车

3.1 红外壁障模块分析​编辑

3.2 跟随小车的原理

3.3 跟随小车开发和调试代码

3.4 超声波模块介绍

3.5 摇头测距小车开发和调试代码

4.测速小车

4.1 测速模块

4.2 测试原理和单位换算

4.3 定时器和中断实现测速开发和调试代码

4.4 小车速度显示在OLED屏

5.远程控制小车

5.1 蓝牙控制小车

5.2 蓝牙控制并测速小车

5.3 wifi控制测速小车

5.4 4g控制小车

6.语音控制小车

6.1语音模块配置:

6.2 语音控制小车开发和调试代码


1.电机模块开发

L9110s概述

接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,具体根据实际调试

IA1输入高电平,IA1输入低电平,【OA1 OB1】电机正转;

IA1输入低电平,IA1输入高电平,【OA1 OB1】电机反转;

IA2输入高电平,IA2输入低电平,【OA2 OB2】电机正转;

IA2输入低电平,IA2输入高电平,【OA2 OB2】电机反转;

1.1 让小车动起来

核心代码:

#include "reg52.h"#include "intrins.h"sbit RightCon1A = P3^2;sbit RightCon1B = P3^3;sbit LeftCon1A = P3^4;sbit LeftCon1B = P3^5;void Delay1000ms()//@11.0592MHz{unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);}void goForward(){LeftCon1A = 0;LeftCon1B = 1;RightCon1A = 0;RightCon1B = 1;}void goLeft(){LeftCon1A = 0;LeftCon1B = 0;RightCon1A = 0;RightCon1B = 1;}void goRight(){LeftCon1A = 0;LeftCon1B = 1;RightCon1A = 0;RightCon1B = 0;}void goBack(){LeftCon1A = 1;LeftCon1B = 0;RightCon1A = 1;RightCon1B = 0;}void main(){while(1){goForward();Delay1000ms();Delay1000ms();goBack();Delay1000ms();Delay1000ms();goLeft();Delay1000ms();Delay1000ms();goRight();Delay1000ms();Delay1000ms();}}
1.2 串口控制小车方向
  • 串口分文件编程进行代码整合——通过现象来改代码
  • 接入蓝牙模块,通过蓝牙控制小车
  • 添加点动控制,如果APP支持按下一直发数据,松开就停止发数据(蓝牙调试助手的自定义按键不 能实现),就能实现前进按键按下后小车一直往前走的功能
    1.3 如何进行小车PWM调速

    原理: 全速前进是LeftCon1A = 0; LeftCon1B = 1;完全停止是LeftCon1A = 0;LeftCon1B = 0;那么单位时 间内,比如20ms, 有15ms是全速前进,5ms是完全停止, 速度就会比5ms全速前进,15ms完全停止获得的功率多,相应的速度更快!

    开发:借用PWM的舵机控制代码

    核心代码:

    #include "motor.h"#include "delay.h"#include "uart.h"#include "time.h"extern char speed;void main(){Time0Init();//UartInit();while(1){speed = 10;//10份单位时间全速运行,30份停止,所以慢,20ms是40份的500usDelay1000ms();Delay1000ms();speed = 20;Delay1000ms();Delay1000ms();speed = 40;Delay1000ms();Delay1000ms();}}//time.c#include "motor.h"#include "reg52.h"char speed;char cnt = 0;void Time0Init(){//1. 配置定时器0工作模式位16位计时TMOD = 0x01;//2. 给初值,定一个0.5出来TL0=0x33;TH0=0xFE;//3. 开始计时TR0 = 1;TF0 = 0;//4. 打开定时器0中断ET0 = 1;//5. 打开总中断EAEA = 1;}void Time0Handler() interrupt 1{cnt++;  //统计爆表的次数. cnt=1的时候,报表了1//重新给初值TL0=0x33;TH0=0xFE;//控制PWM波if(cnt  
    1.4 PWM方式实现小车转向

    原理: 左轮定时器0调速,右轮定时器1调速,那么左转就是右轮速度大于左轮!

    核心代码:

    #include "motor.h"#include "reg52.h"char speedLeft;char cntLeft = 0;char speedRight;char cntRight = 0;void Time1Init(){//1. 配置定时器1工作模式位16位计时TMOD &= 0x0F;TMOD |= 0x1 

上一篇:江苏省跨市医保怎么备案报销费用

下一篇:轻松下载幻象指南,揭秘神秘世界的探索之旅!