Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos

Componentes e Materiais

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Sinopse

Este artigo apresenta o projeto de um Robô Desviador de Obstáculos capaz de detectar objetos em seu caminho e navegar ao redor deles tomando decisões adequadas. Demonstra uma unidade robótica baseada em Arduino UNO e Adafruit Motor Shield com código na Arduino IDE. Desvio de obstáculos é fator chave para robôs móveis. A implementação do Sensor de Distância Ultrassônico montado em Micro-Servo proporcionou maior precisão na detecção de objetos ao redor. Este robô difere de outros por integrar Buzzer Magnético e LED RGB Difuso Cátodo Comum, permitindo indicar procedimento de detecção e controlar velocidade dos Motores DC em 4 circunstâncias. Como robô autônomo, executa manobras em condições desconhecidas sem impacto. A tecnologia pode ser aplicada em operações militares e assistência humanitária melhorando capacidade de detecção em ambientes diversos.

Multimídia

Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos
Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos
Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos
Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos
Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos
Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos

Interpretação

Bibliotecas incluídas:

AFMotor.h
Servo.h

Conexões definidas:

#define BuzzPIN A0   // Buzzer "+"
#define TrigPIN A1   // Ultrassônico Trig
#define EchoPIN A2   // Ultrassônico Echo
#define LEDBPIN A3   // LED Azul
#define LEDGPIN A4   // LED Verde
#define LEDRPIN A5   // LED Vermelho
#define DCMROFF 25   // Offset calibração motores DC

Funcionalidades do programa:

Todas as operações autônomas, sem controle externo.

Este robô difere de outros por: indicação luz/som, controle de velocidade dos motores, e manobra intensa detectando obstáculos em 180° à frente (difícil de combinar via programação). Construído na plataforma Arduino UNO Rev3 com Arduino IDE v1.8.5. Com desenvolvimentos futuros (câmera + wireless), aplicável em operações militares; unidades básicas auxiliam deficientes visuais/auditivos a notificar objetos ao redor.

Pathfinder: Kit Projeto Arduino UNO – Robô Desviador de Obstáculos

Youth Zest Project Showcase

Código

ProgramaArduino

Programa assembly para configurar esta máquina autônoma.

#include <AFMotor.h> // Adafruit Motor Shield library
#include <Servo.h>   // Servo library

#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25

AF_DCMotor M1(1, MOTOR12_64KHZ); // Motor #1 @ 64kHz PWM
AF_DCMotor M2(2, MOTOR12_64KHZ); // Motor #2 @ 64kHz PWM
Servo SER1; // Servo object

int Search(void) {
  float Duration = 0.0;
  float CM = 0.0;
  digitalWrite(TrigPIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPIN, LOW);
  Duration = pulseIn(EchoPIN, HIGH);
  CM = (Duration / 58.8); // Conversão para cm
  return CM;
}

int RightDistance, LeftDistance;
float Distance = 0.00;

void setup() {
  pinMode(BuzzPIN, OUTPUT);
  pinMode(TrigPIN, OUTPUT);
  pinMode(EchoPIN, INPUT);
  pinMode(LEDBPIN, OUTPUT);
  pinMode(LEDGPIN, OUTPUT);
  pinMode(LEDRPIN, OUTPUT);
  SER1.attach(10); // Servo no pino 10 (shield Adafruit)
}

void loop() {
  SER1.write(80); // Centro (frente)
  delay(100);
  Distance = Search();

  if (Distance < 30) { // Obstáculo < 30cm
    digitalWrite(BuzzPIN, HIGH);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, HIGH); // Vermelho
    M1.setSpeed(100);
    M2.setSpeed(100);
    ChangePath();
  }
  else if (Distance >= 30 && Distance < 60) { // 30-60cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH); // Azul
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(150);
    M2.setSpeed(150);
    Forward();
  }
  else if (Distance >= 60 && Distance < 90) { // 60-90cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, HIGH); // Verde
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(200);
    M2.setSpeed(200);
    Forward();
  }
  else { // > 90cm livre
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH); // Branco (RGB all on)
    digitalWrite(LEDGPIN, HIGH);
    digitalWrite(LEDRPIN, HIGH);
    M1.setSpeed(250);
    M2.setSpeed(250);
    Forward();
  }
}

void ChangePath() {
  Stop();
  Backward();
  Stop();
  SER1.write(12); // Direita
  delay(500);
  RightDistance = Search();
  delay(500);
  SER1.write(160); // Esquerda
  delay(1000);
  LeftDistance = Search();
  delay(500);
  SER1.write(80); // Centro
  delay(500);
  CompareDistance();
}

void CompareDistance() {
  if (RightDistance > LeftDistance) TurnRight();
  else if (LeftDistance > RightDistance) TurnLeft();
  else TurnAround();
}

void Forward() {
  M1.run(FORWARD);
  M2.run(FORWARD);
}

void Backward() {
  M1.run(BACKWARD);
  M2.run(BACKWARD);
  delay(500);
}

void TurnRight() {
  M1.run(BACKWARD);
  M2.run(FORWARD);
  M1.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnLeft() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnAround() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(700);
}

void Stop() {
  M1.run(RELEASE);
  M2.run(RELEASE);
  delay(100);
}

Peças Personalizadas e Caixas

Chassis

Chassis do robô para montagem desta máquina autônoma.

Esquemático

Diagrama de circuito para montagem desta máquina autônoma.

Processo de manufatura

  1. Dominando a Sintaxe de Netlist SPICE: Nomenclatura de Componentes, Elementos Passivos e Ativos, e Definição de Fontes
  2. Circuitos Integrados (CIs): Chips Compactos e Poderosos Impulsionando a Eletrônica Moderna
  3. Transferência de Dados de Temperatura e Umidade entre Dois Arduinos via Firebase
  4. Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
  5. Sistema Multi-Posição de Sensores de Temperatura para Integração em Casa Inteligente
  6. Controle USB para Jogos DIY com Arduino – Construa Seu Próprio Gamepad de Alto Desempenho
  7. Kit MOSMusic: MOSFET, Arduino e Mais - Iluminação Sincronizada com Música
  8. Microeletrônica Explicada: A Ciência da Eletrônica Minúscula
  9. Componentes Essenciais de uma Máquina de Furar: Visão Geral Completa
  10. Principais Componentes de um Motor de Combustão Interna