一、功能介绍以及硬件准备
蓝牙切换功能:智能小车内置了蓝牙模块,可以通过手机或其他蓝牙设备与之连接。用户可以通过手机发送指令控制小车的运动方向,实现远程控制。
循迹功能:智能小车配备了红外线传感器,可以实现循迹功能。通过检测地面上的黑线或白线,小车能够自动沿着线路行驶,实现自动导航功能。
避障功能:智能小车搭载了红外避障传感器,能够检测前方的障碍物。当检测到障碍物时,小车会自动停下或转向,以避免碰撞,确保安全行驶。
测速功能:智能小车集成了电机编码器或其他测速装置,可以准确测量车轮的转速。通过测速功能,可以实现小车的速度监测和调节,提供更加精确的运动控制。
OLED显示功能:智能小车配备了OLED显示屏,可以实时显示各种信息,如速度、电量、运行状态等。通过OLED显示屏,用户可以方便地获取小车的工作状态和相关数据。
硬件准备
小车底盘一个(四驱),5号4节电池盒一个,51单片机一个,红外避障模块传感器两个,红外光电反射传感器两个,L9110S电机驱动模块,测速传感器一个,HC—05/06从机JDY-31蓝牙模块一个,0.96寸OLED屏幕一个,杜邦线若干,热熔胶枪一个,也可以再准备一个面包板。
二、电机控制
关于电机控制选用的是L9110s电机驱动模块。模块通常的引脚就是VCC,GND,以及其他的控制或信号引脚。VCC就是模块的电源正极,接到单片机最小系统的VCC引脚上。GND就是模块的负极,接到单片机最小系统的GND引脚上。剩下的引脚就接到单片机的IO口上即可。
motor.c
#include "reg52.h"
#include "motor.h"
sbit RightCon1A = P1^0;
sbit RightCon1B = P1^1;
sbit LeftCon1A = P1^2;
sbit LeftCon1B = P1^3;
sbit RightCon2A = P1^4;
sbit RightCon2B = P1^5;
sbit LeftCon2A= P1^6;
sbit LeftCon2B = P1^7;
void goForward()
{
LeftCon1A = 0;
LeftCon1B = 1;
RightCon1A = 0;
RightCon1B = 1;
LeftCon2A = 0;
LeftCon2B = 1;
RightCon2A = 0;
RightCon2B = 1;
}
void goRight()
{
LeftCon1A = 0;
LeftCon1B = 1;
RightCon1A = 0;
RightCon1B = 0;
LeftCon2A = 0;
LeftCon2B = 1;
RightCon2A = 0;
RightCon2B = 0;
}
void goLeft()
{
LeftCon1A = 0;
LeftCon1B = 0;
RightCon1A = 0;
RightCon1B = 1;
LeftCon2A = 0;
LeftCon2B = 0;
RightCon2A = 0;
RightCon2B = 1;
}
void goBack()
{
LeftCon1A = 1;
LeftCon1B = 0;
RightCon1A = 1;
RightCon1B = 0;
LeftCon2A = 1;
LeftCon2B = 0;
RightCon2A = 1;
RightCon2B = 0;
}
void stop()
{
LeftCon1A = 0;
LeftCon1B = 0;
RightCon1A = 0;
RightCon1B = 0;
LeftCon2A = 0;
LeftCon2B = 0;
RightCon2A = 0;
RightCon2B = 0;
}
三、蓝牙控制
使用51单片机的开发环境(如Keil C等),编写程序来控制小车的运动。首先,初始化蓝牙模块和其他传感器,并设置相关参数。然后,通过蓝牙模块接收来自手机或其他蓝牙设备的指令,解析指令并根据具体要求控制小车的运动。可以定义不同的指令代表不同的动作,例如前进、后退、转向等。
main.c
#include "reg52.h"
#include "motor.h"
#include "delay.h"
#include "uart.h"
#include "bizhang.h