亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY 人体跟踪机器人 - Arduino UNO 与电机扩展板实现

组件与物料清单

组件数量
Arduino UNO1
Adafruit 电机扩展板1
SG90 微型舵机1
红外收发模块2
HC-SR04 超声波测距模块1
跳线若干
12V 直流减速电机4
微型电机与轮子套装4
9V 电池1
船型开关 SPST1

软件工具

项目简介

疫情期间居家制作的跟随机器人项目。使用 2 个红外传感器跟随人体/物体,超声波传感器控制后退避障。

制作步骤

  1. 准备组件:Arduino、直流减速电机+轮子、2个红外传感器、超声波传感器、舵机、纸板底盘、L293D 电机驱动扩展板、9V电池、开关、跳线等
  2. 纸板底盘安装 4 个电机轮组成小车底盘
  3. 小车前端安装红外传感器
  4. 小车顶部固定舵机
  5. 超声波传感器安装在盒子上并加装连杆,再固定在舵机上
  6. 安装 Arduino 与电机扩展板
  7. 按电路图接线
  8. 上传代码,连接电池与开关至电机驱动板
  9. 调节红外传感器灵敏度

项目完成!欢迎访问我的 YouTube 频道查看更多有趣项目:"Electronics is Fun"

核心代码

// www.YouTube.com/Electronics is Fun
#include <Servo.h>
#include <AFMotor.h>

#define LEFT A0
#define echopin A1
#define trigpin A2
#define RIGHT A3

AF_DCMotor Motor1(1, MOTOR12_1KHZ);
AF_DCMotor Motor2(2, MOTOR12_1KHZ);
AF_DCMotor Motor3(3, MOTOR34_1KHZ);
AF_DCMotor Motor4(4, MOTOR34_1KHZ);

Servo myservo;
int pos = 0;
long time;

void setup() {
  Serial.begin(9600);
  myservo.attach(10);
  
  // 舵机扫描初始化
  for (pos = 90; pos <= 180; pos += 1) { myservo.write(pos); delay(15); }
  for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); }
  for (pos = 0; pos <= 90; pos += 1) { myservo.write(pos); delay(15); }
  
  pinMode(RIGHT, INPUT);
  pinMode(LEFT, INPUT);
  pinMode(trigpin, OUTPUT);
  pinMode(echopin, INPUT);
}

void loop() {
  unsigned int distance = read_cm();
  int Right_Value = digitalRead(RIGHT);
  int Left_Value = digitalRead(LEFT);
  
  Serial.print("R= "); Serial.print(Right_Value);
  Serial.print(" L= "); Serial.print(Left_Value);
  Serial.print(" D= "); Serial.println(distance);
  
  if ((Right_Value == 1) && (distance >= 10 && distance <= 30) && (Left_Value == 1)) {
    forword();
  } else if ((Right_Value == 0) && (Left_Value == 1)) {
    turnRight();
  } else if ((Right_Value == 1) && (Left_Value == 0)) {
    turnLeft();
  } else if ((Right_Value == 1) && (Left_Value == 1)) {
    stop();
  } else if (distance > 5 && distance < 10) {
    stop();
  } else if (distance < 5) {
    backword();
  }
  delay(50);
}

long read_cm() {
  digitalWrite(trigpin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigpin, HIGH);
  delayMicroseconds(10);
  time = pulseIn(echopin, HIGH);
  return time / 29 / 2;
}

void forword() {
  Motor1.setSpeed(120); Motor1.run(FORWARD);
  Motor2.setSpeed(120); Motor2.run(FORWARD);
  Motor3.setSpeed(120); Motor3.run(FORWARD);
  Motor4.setSpeed(120); Motor4.run(FORWARD);
}

void backword() {
  Motor1.setSpeed(120); Motor1.run(BACKWARD);
  Motor2.setSpeed(120); Motor2.run(BACKWARD);
  Motor3.setSpeed(120); Motor3.run(BACKWARD);
  Motor4.setSpeed(120); Motor4.run(BACKWARD);
}

void turnRight() {
  Motor1.setSpeed(200); Motor1.run(FORWARD);
  Motor2.setSpeed(200); Motor2.run(FORWARD);
  Motor3.setSpeed(100); Motor3.run(BACKWARD);
  Motor4.setSpeed(100); Motor4.run(BACKWARD);
}

void turnLeft() {
  Motor1.setSpeed(100); Motor1.run(BACKWARD);
  Motor2.setSpeed(100); Motor2.run(BACKWARD);
  Motor3.setSpeed(200); Motor3.run(FORWARD);
  Motor4.setSpeed(200); Motor4.run(FORWARD);
}

void stop() {
  Motor1.setSpeed(0); Motor1.run(RELEASE);
  Motor2.setSpeed(0); Motor2.run(RELEASE);
  Motor3.setSpeed(0); Motor3.run(RELEASE);
  Motor4.setSpeed(0); Motor4.run(RELEASE);
}

原理图

电路连接图请参考项目附件。

制造工艺

  1. Raspoulette:太阳能自主鸡舍门控制系统原型
  2. Simple Pi Robot:用树莓派打造 2WD 自主巡航车
  3. Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
  4. 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
  5. 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
  6. Arduino 通用双极性步进电机控制库——精准控制转速、角度、圈数与方向
  7. MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
  8. DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
  9. DIY 吉他高速拨片与踏板 - 3D 打印电机驱动拨片制作指南
  10. 线性电机原理与演进:从电能到精密直线运动的技术演变
  11. 伺服电机深度解析:工作原理、分类与核心价值
  12. 磁阻电机:类型、运行原理与应用