跑跑啦航模

  Arduino UNO 是入门智能小车的最佳选择,价格便宜、资料丰富、上手简单。本文从硬件选型到代码编写,带你完整走一遍。

  

一、所需材料清单

  主控部分:

  Arduino UNO R3 开发板 × 1

  Arduino 传感器扩展板(V5) × 1

  USB 数据线(方口打印机线) × 1

  驱动部分:

  L298N 双路电机驱动模块 × 1

  直流减速电机(带轮子,推荐 1:48 减速比) × 2

  万向轮(牛眼轮) × 1

  7.4V 18650 锂电池组(2S) × 1

  杜邦线(公对公、公对母、母对母各若干)

  传感器部分(可选):

  HC-SR04 超声波测距模块 × 1

  红外循迹传感器模块(TCRT5000)× 3~5 个

  舵机(SG90,用于超声波摇头扫描) × 1

  底盘部分:

  亚克力小车底盘(2层或3层结构) × 1 套

  铜柱、螺丝、螺母套装 × 1 套

  电池盒或魔术贴扎带

  

  

二、电路连接

  第一步:安装电机

  将两个直流减速电机用螺丝固定在底盘底层,轮子朝外。注意电机线方向,左右电机尽量对称。万向轮装在底盘前方或后方中间位置。

  第二步:安装驱动板和主控

  用铜柱在底盘上层固定 Arduino UNO 和 L298N 驱动板。传感器扩展板直接插在 Arduino 上。

  

  第三步:接线(核心步骤)

  L298N 驱动板接线表:

  L298N → Arduino

  IN1 → 数字引脚 8

  IN2 → 数字引脚 9

  IN3 → 数字引脚 10

  IN4 → 数字引脚 11

  ENA(使能A)→ 5V(始终使能)

  ENB(使能B)→ 5V(始终使能)

  L298N 的 12V 输入端接 7.4V 锂电池正极(红线),GND 接电池负极和 Arduino GND 共地。L298N 的 5V 输出可作为 Arduino 的供电(将板载跳线帽插上)。

  电机接线:

  L298N OUT1/OUT2 → 左电机(正反无所谓,代码里可以调)

  L298N OUT3/OUT4 → 右电机

  

  超声波接线(避障功能):

  HC-SR04 VCC → Arduino 5V

  HC-SR04 GND → Arduino GND

  HC-SR04 Trig → 数字引脚 3

  HC-SR04 Echo → 数字引脚 2

  (如果想用舵机让超声波摇头,SG90 信号线接引脚 5,VCC 接 5V,GND 接 GND)

  

  

三、编写代码

  打开 Arduino IDE,新建项目,写入以下代码:

// 智能小车基础驱动代码
// L298N引脚定义
const int IN1 = 8;
const int IN2 = 9; 
const int IN3 = 10;
const int IN4 = 11;

// 超声波引脚
const int TRIG = 3;
const int ECHO = 2;

void setup() {
  // 电机引脚设为输出
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  // 超声波引脚
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

// 前进
void forward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

// 后退
void backward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

// 左转
void turnLeft() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

// 右转
void turnRight() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

// 停止
void stop() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

// 测距
long getDistance() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long duration = pulseIn(ECHO, HIGH);
  return duration * 0.034 / 2;
}

void loop() {
  long dist = getDistance();
  Serial.print("距离: ");
  Serial.print(dist);
  Serial.println(" cm");
  
  if (dist > 0 && dist < 20) {
    stop();
    delay(200);
    backward();
    delay(500);
    stop();
    delay(200);
    turnRight();
    delay(300);
  } else {
    forward();
  }
  delay(50);
}

  

四、调试与运行

  1. 代码上传前先确认板卡型号选对:工具 → 开发板 → Arduino/Genuino UNO。

  2. 选择正确的 COM 口(设备管理器里查看)。

  3. 点击上传按钮,等待编译上传完成。

  4. 上传成功后,打开串口监视器(Ctrl+Shift+M),波特率设 9600,可以看到距离数据。

  5. 将小车放在地面,接通电池电源,小车应自动前进,遇到障碍物(20cm以内)自动后退并右转避开。

  

  

五、常见问题

  Q:电机不动怎么办?

  A:先检查接线,特别是 L298N 的 12V 供电和 GND 共地。然后用万用表测 OUT 引脚有无电压。

  Q:小车不走直线?

  A:左右电机转速有差异是正常的。可以在代码中通过 PWM 调节,将 ENA/ENB 接到支持 PWM 的引脚(如 5、6),用 analogWrite() 分别调速。

  Q:超声波测距不准?

  A:确保超声波模块前面没有遮挡物,接线稳固。测距范围约 2cm~400cm,超出范围会返回 0。

  

六、进阶扩展

  学会基础驱动之后,可以加装蓝牙模块(HC-05)实现手机遥控,加装红外循迹传感器实现自动巡线,甚至配合 OpenMV 摄像头实现颜色追踪。一套 Arduino 小车可以玩出无限可能!

跑跑啦航模详情

联系手机15058675618 qq售后群号241350086 微信号paopaola_com
长距离FPV无人机,高清传感器模块,终身保修和升级服务。