当前位置:   article > 正文

单片机毕业设计 遥控小车设计与实现_系统需求分析系统需要实现基于单片机的遥控平衡小车的设计和开发

系统需求分析系统需要实现基于单片机的遥控平衡小车的设计和开发


1 简介

Hi,大家好,今天向大家介绍一个学长做的单片机项目

基于单片机的遥控小车设计与实现

大家可用于 课程设计 或 毕业设计

2 主要器件与实现

  • 四轮驱动智能汽车底盘
  • 主控:arduino(可选stm32等其他单片机)
  • L293D电机驱动器护罩
  • SG90微型伺服电机
  • 超声波传感器-HC-SR04
  • HC-05蓝牙模块
  • 电池座
  • 电池

单片机和底盘接线
在这里插入图片描述

完整接线
在这里插入图片描述
制作流程主要分为四个部分:1.组装小车;2.烧写代码;3.调试蓝牙;4.整车测试

其中,前三个部分的耦合性很低,每个部分可以独立操作和调试

2.1 电机驱动模块

L298N转接驱动板
在这里插入图片描述

2.2 蓝牙模块

蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。

我们在此使用的蓝牙模块(HC-05)已经在内部实现了蓝牙协议,不用我们再去自己开发调试协议。这类模块一般都是借助于串口协议通信,因此我们只需借助串口将我们需要发送的数据发送给蓝牙模块,蓝牙模块会自动将数据通过蓝牙协议发送给配对好的蓝牙设备。

在这里插入图片描述
与单片机连接

TX: 接Arduino UNO开发板"RX"引脚
RX: 接Arduino UNO开发板"TX"引脚
GND: 接Arduino UNO开发板"GND"引脚
VCC: 接Arduino UNO开发板"5V"或"3.3V"引脚

2.3 蓝牙调试APP

在这里插入图片描述

3 实现效果

在这里插入图片描述

5 部分参考代码

char serial_data;   // 将从串口读入的消息存储在该变量中

int wheel_R_1 = 5;  // 右轮in1对应Arduino 5号引脚
int wheel_R_2 = 6; // 右轮in2对应Arduino 6号引脚
int wheel_L_1 = 9;  // 左轮in1对应Arduino 9号引脚
int wheel_L_2 = 10;  // 左轮in2对应Arduino 10号引脚

void setup(){
    // 配置所有控制轮的引脚为输出
    pinMode(wheel_L_1, OUTPUT);
    pinMode(wheel_L_2, OUTPUT);
    pinMode(wheel_R_1, OUTPUT);
    pinMode(wheel_R_2, OUTPUT);
    // 配置串口波特率
    Serial.begin(9600);
}

void loop(){
    if(Serial.available()){
        // 将从串口读入的消息存储在该变量中
        serial_data = Serial.read();
        // 按照 w a s d x 在键盘上的布局来控制车
        // 如果接收到 w ,直行
        if( serial_data == 'w' ){
            move_ahead( );
            Serial.println("The car is moving ahead!");
        }
        // 如果接收到 x ,后退
        else if( serial_data == 'x'){
            move_backwards( );
            Serial.println("The car is moving backwards!");
        }
        // 如果接收到 a ,左转
        else if( serial_data == 'a'){
            turn_left( );
            Serial.println("The car is turning left!");
        }
        // 如果接收到 d ,右转
        else if( serial_data == 'd'){
            turn_right( );
            Serial.println("The car is turning right!");
        }
        // 如果接收到 s ,停止
        else if( serial_data == 's'){
            stop();
            Serial.println("The car is stopping!");
        }
    }
}


// 定义直行函数
void move_ahead(){
    digitalWrite( wheel_L_1, HIGH);
    digitalWrite( wheel_L_2, LOW);
    digitalWrite( wheel_R_1, HIGH);
    digitalWrite( wheel_R_2, LOW);
}

// 定义后退函数
void move_backwards(){
    digitalWrite( wheel_L_1, LOW);
    digitalWrite( wheel_L_2, HIGH);
    digitalWrite( wheel_R_1, LOW);
    digitalWrite( wheel_R_2, HIGH);
}

// 定义左转函数
void turn_left(){
    digitalWrite( wheel_L_1, LOW);
    digitalWrite( wheel_L_2, LOW);
    digitalWrite( wheel_R_1, HIGH);
    digitalWrite( wheel_R_2, LOW);
}

// 定义右转函数
void turn_right(){
    digitalWrite( wheel_L_1, HIGH);
    digitalWrite( wheel_L_2, LOW);
    digitalWrite( wheel_R_1, LOW);
    digitalWrite( wheel_R_2, LOW);
}

void stop(){
    digitalWrite( wheel_L_1, LOW);
    digitalWrite( wheel_L_2, LOW);
    digitalWrite( wheel_R_1, LOW);
    digitalWrite( wheel_R_2, LOW);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

6 最后

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/630688
推荐阅读
相关标签
  

闽ICP备14008679号