Índice:

OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino: 5 Steps (with pictures)
OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino: 5 Steps (with pictures)

Vídeo: OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino: 5 Steps (with pictures)

Vídeo: OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino: 5 Steps (with pictures)
Vídeo: OAREE in Action - Obstacle Avoiding Robot for Engineering Education 2024, Junho
Anonim
Image
Image
OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino
OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino
OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino
OAREE - 3D Printed - Obstacle Avoiding Robot for Engineering Education (OAREE) With Arduino

OAREE (Obstáculo Evitando Robôs para Educação em Engenharia)

Design: O objetivo deste manual era projetar um robô OAR (Obstacle Avoiding Robot) que fosse simples / compacto, imprimível em 3D, fácil de montar, usasse servos de rotação contínua para movimento e tivesse o mínimo possível de peças adquiridas. Eu acredito que consegui criar este robô incrível e o chamei de OAREE (Robô que Evita Obstáculos para Educação em Engenharia). Este robô detectará obstáculos, parará, olhará para a esquerda e para a direita e, em seguida, girará na direção desobstruída e continuará em frente.

Contexto: A Internet tem vários obstáculos para evitar robôs, mas a maioria é volumosa, difícil de montar e cara. Muitos desses robôs têm o código Arduino fornecido, mas foi difícil encontrar um exemplo bem pensado e funcional. Eu também queria usar servos de rotação contínua para as rodas (em vez de motores DC), o que ainda não havia sido feito. Então, iniciei a missão de desenvolver um robô OAR compacto e criativo para compartilhar com o mundo.

Desenvolvimento adicional: Este robô pode ser desenvolvido para melhor precisão de ping, adicionando sensores IR para capacidade de seguimento de linha, tela LCD para exibir a distância do obstáculo e muito mais.

Suprimentos

  • 1x Arduino Uno -
  • 1x Escudo do sensor V5 -
  • 1x Suporte de bateria 4xAA com botão liga / desliga -
  • 1x Servo SG90 -
  • 2 Servos de rotação contínua -
  • 1x Cabo de alimentação de bateria de 9V para Arduino (OPCIONAL) -
  • 1x Sensor Ultrassônico HC-SR04 -
  • 4 fios de ligação fêmea-fêmea -
  • 2 bandas de borracha
  • 1 bateria de 9 V (OPCIONAL)
  • 4 pilhas AA
  • 4x parafusos pequenos (4 x 1/2 ou qualquer coisa semelhante)
  • Chave Phillips
  • Cola para prender elásticos nas rodas

Etapa 1: impressão 3D: corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem do sensor ultrassônico

Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico
Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico
Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico
Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico
Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico
Impressão 3D: Corpo, rodas, rodízio de mármore, parafuso / porca de 6 mm e montagem de sensor ultrassônico

Existem 5 partes para impressão 3D.

  1. Corpo
  2. Rodas
  3. Marble Caster
  4. Parafuso / porca de 6 mm (opcional, uma porca / parafuso de metal pode ser substituído)
  5. Montagem de sensor ultrassônico

Todos os arquivos. STL necessários estão incluídos neste instrutível, bem como os arquivos Sketchup. 40% de preenchimento recomendado.

Etapa 2: programar o Arduino

Image
Image
Monte o Robô
Monte o Robô

Envie o código para o Arduino UNO: Usando o IDE do Arduino, envie o código (no arquivo anexado) para o seu módulo do Arduino. Você precisará baixar e incluir as bibliotecas servo.h e newping.h com este esboço.

O código é completamente comentado, para que você possa ver o que cada comando faz. Você pode facilmente alterar a distância do sensor ultrassônico para um valor maior ou menor, se desejar. Este é um código inicial e deve ser expandido e usado para posterior desenvolvimento do projeto.

// OBSTÁCULO EVITANDO ROBÔ // [email protected], [email protected], Universidade de TN em Chattanooga, Engenharia Elétrica, FALL 2019 // Materiais necessários: // 1) Arduiino UNO, 2) Escudo do servo sensor v5.0, 3) HCSR04 Sensor Ulrasônico, 4) FS90 Servo (para Sensor Ultrassônico) // 5 e 6) 2x SERVOS DE ROTAÇÃO CONTÍNUA para as rodas // 7) Mármore de 16mm para o pivô traseiro do rodízio, 8 e 9) 2 faixas de borracha para as rodas // 10- 15) Suporte de bateria 1x (4xAA) com interruptor liga / desliga, 16 e 17) Bateria de 9V com conector para alimentar Arduino UNO // 3D PRINT: // 18) Corpo do ROBÔ, 19 e 20) 2x Rodas, 21) Caster de mármore, 22) Sensor ultrassônico Montagem e parafuso de 6 mm (ver arquivos em anexo) // -------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Incluir Biblioteca Servo #include // Incluir Biblioteca Newping // ------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // gatilho US para pino 12 no Arduino # define ECHO_PIN 13 // US Echo para pino 13 no Arduino # define MAX_DISTANCE 250 // Distância para ping (máximo é 250) int distance = 100; // ------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Sensor Ultrasonic Servo Servo Left_Servo; // Roda esquerda Servo Servo Right_Servo; // Sonar NewPing do servo da roda direita (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuração de NewPing de pinos e distância máxima. // ------------------------------------------------ -------------------------------------------------- ------------------------------- void setup () // ENTRADAS / SAÍDAS, ONDE ANEXAR, DEFINIR A POSIÇÃO / MOVIMENTO INICIAL {pinMode (12, SAÍDA); // Trigger pin definido como output pinMode (13, INPUT); // Pino de eco definido como entrada US_Servo.attach (11); // Servo dos EUA definido para o pino 11 US_Servo.write (90); // SERVO DOS EUA OLHA PARA A FRENTE

Left_Servo.attach (9); // Servo da roda esquerda para o pino 9

Left_Servo.write (90); // SERVO DE RODA ESQUERDA definido para PARAR

Right_Servo.attach (10); // Servo da roda direita definido para o pino 10

Right_Servo.write (90); // RIGHT WHEEL SERVO definido para STOP delay (2000); // Aguarde 2 segundos distance = readPing (); // Obter distância de ping na posição direta delay (100); // Aguarde 100 ms moveForward (); // ROBÔ SE AVANÇA} // ------------------------------------------ -------------------------------------------------- ------------------------------------- void loop () {int distanceRight = 0; // Inicia a distância dos EUA para a direita em 0 int distanceLeft = 0; // Inicia a distância dos EUA para a esquerda em 0 //US_Servo.write(90); // Center US servo // delay (50); // US_Servo.write (70); // Olhar ligeiramente para a direita // delay (250); // US_Servo.write (110); // Olhar ligeiramente para a esquerda // delay (250); // US_Servo.write (90); // Look Center

if (distance <= 20) // O robô se move para frente {moveStop (); // O robô PARA na distância = distanceLeft) // Decida em qual direção virar {turnRight (); // O lado direito tem a maior distância, o ROBÔ VIRA PARA A DIREITA para um retardo de 0,3s (500); // Este atraso determina o comprimento da curva moveStop (); // Robot STOPS} else {turnLeft (); // Maior distância do lado esquerdo, ROBÔ VIRA PARA A ESQUERDA por 0,3s de atraso (500); // Este atraso determina o comprimento da curva moveStop (); // Robot PARA}} else {moveForward (); // O robô se move para frente} distância = readPing (); // EUA LÊ O NOVO PING para a nova direção da viagem} // ----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight () // Sensor ultrassônico FUNÇÃO OLHAR CORRETA {US_Servo.write (30); // servo dos EUA se move para a direita para o retardo do ângulo (500); distância interna = leitura (); // Define o valor do ping para o retardo direito (100); US_Servo.write (90); // servo dos EUA MOVE-SE PARA O CENTRO distância de retorno; // A distância está definida} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Sensor ultrassônico OLHE PARA A FUNÇÃO ESQUERDA {US_Servo.write (150); // servo dos EUA se move para a esquerda para o retardo do ângulo (500); distância interna = leitura (); // Define o valor do ping para o retardo esquerdo (100); US_Servo.write (90); // servo dos EUA MOVE-SE PARA O CENTRO distância de retorno; // A distância está definida} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing () // Ler Função Ping para Sensor Ultrassônico. {atraso (100); // 100ms entre pings (tempo mínimo de ping = 0,29ms) int cm = sonar.ping_cm (); // A distância do PING é coletada e definida em cm if (cm == 0) {cm = 250; } return cm; } // ----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ROBÔ STOP {Left_Servo.write (90); // LeftServo 180 para a frente, 0 para trás Right_Servo.write (90); // RightServo 0 para a frente, 180 para trás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward () // ROBOT FORWARD {Left_Servo.write (180); // LeftServo 180 para frente, 0 reverso Right_Servo.write (0); // RightServo 0 para a frente, 180 para trás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward () // ROBÔ PARA TRÁS {Left_Servo.write (0); // LeftServo 180 para a frente, 0 para trás Right_Servo.write (180); // RightServo 0 para a frente, 180 para trás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight () // ROBÔ RIGHT {Left_Servo.write (180); // LeftServo 180 para a frente, 0 para trás Right_Servo.write (90); // RightServo 0 para a frente, 180 para trás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft () // ROBÔ LEFT {Left_Servo.write (90); // LeftServo 180 para frente, 0 reverso Right_Servo.write (0); // RightServo 0 para a frente, 180 para trás} // --------------------------------------- -------------------------------------------------- ----------------------------------------

Etapa 3: montar o robô

Image
Image
Monte o Robô
Monte o Robô
Monte o Robô
Monte o Robô

Agora é hora de montar seu robô. As etapas estão listadas abaixo.

1) Prenda o disco servo redondo e faixas de borracha nas rodas: Todos os servos vêm com ferramentas de montagem de plástico e parafusos. Encontre os discos redondos e aparafuse-os nos dois orifícios no lado plano das rodas. Os elásticos se ajustam ao volante para fornecer aderência. Você pode adicionar um pouco de cola para manter os elásticos no lugar.

2) Fixação do rodízio de mármore: Use dois parafusos pequenos para prender o rodízio de mármore aos dois triângulos na parte traseira. O rodízio de mármore é um substituto simples para uma roda traseira e fornece um ponto de pivô traseiro.

3) Insira os Servos nos Slots (sem necessidade de parafusos): Coloque o Servo FS90 (para o Sensor Ultrassônico) no slot frontal do corpo. Os dois servos de rotação contínua deslizam para os slots esquerdo e direito. Os slots são projetados para um ajuste apertado, de forma que nenhum parafuso seja necessário para segurar os servos no lugar. Certifique-se de que os fios do servo passem pelas ranhuras nas ranhuras de modo que fiquem voltados para a parte de trás do corpo.

4) Colocação da bateria de 9 V (OPCIONAL): Coloque a bateria de 9 V + o conector de alimentação do Arduino atrás do servo frontal.

5) Conjunto de montagem do sensor ultrassônico: Use dois parafusos pequenos para prender um dos acessórios servo de plástico branco incluídos na parte inferior da placa de montagem do sensor ultrassônico. Em seguida, use o parafuso / porca de 6 mm impressa em 3D (ou substitua por um parafuso / porca de metal) para conectar a caixa do sensor ultrassônico à placa de montagem. Por fim, coloque o sensor na caixa com os pinos voltados para cima e encaixe na parte traseira da caixa.

6) Caixa de 4 pilhas AA: Coloque a caixa de bateria AA em uma grande área retangular, com o botão liga / desliga voltado para a parte traseira.

7) Escudo do sensor Arduino Uno + V5: Prenda o escudo ao Arduino e coloque-o nos suportes acima da caixa da bateria. O conector de alimentação deve estar voltado para a esquerda.

Seu robô foi construído! O que sobrou? Programando o Arduino e conectando os fios de jumper: servos, sensor ultrassônico e fonte de alimentação.

Etapa 4: conecte os fios do sensor

Image
Image
Finalizado!!! Conecte a fonte de alimentação Arduino de 9 V, ligue a bateria e comece a evitar obstáculos com o OAREE
Finalizado!!! Conecte a fonte de alimentação Arduino de 9 V, ligue a bateria e comece a evitar obstáculos com o OAREE

Conecte os fios do servo à blindagem V5:

  1. Servo de rotação contínua à esquerda anexado ao PIN 9
  2. Servo de rotação contínua direita anexado ao PIN 10
  3. Servo FS90 frontal anexado ao PIN 11

Conecte os pinos do sensor ultrassônico (via 4 fios de jumper fêmea para fêmea) à blindagem V5:

  1. Acione o PIN 12
  2. Eco para PIN 13
  3. VCC a qualquer um dos pinos marcados com 'V'
  4. Aterre a qualquer um dos pinos marcados com 'G'

Conecte o estojo de bateria AA ao escudo V5:

  1. Conecte o fio vermelho positivo ao conector VCC
  2. Conecte o fio preto negativo ao aterramento

Etapa 5: Concluído !!! Conecte a fonte de alimentação Arduino de 9 V, ligue a bateria e comece a evitar obstáculos com o OAREE

Image
Image
Finalizado!!! Conecte a fonte de alimentação Arduino de 9 V, ligue a bateria e comece a evitar obstáculos com o OAREE
Finalizado!!! Conecte a fonte de alimentação Arduino de 9 V, ligue a bateria e comece a evitar obstáculos com o OAREE

Finalizado!

1) Conecte a fonte de alimentação Arduino de 9 V (opcional)

2) Ligue a bateria

3) Comece a Evitar Obstáculos com OAREE !!!

Tenho certeza de que você vai gostar de seu novo amigo, OAREE, depois de vê-lo perceber um obstáculo, recuar e mudar de direção. O OAREE funciona melhor com objetos grandes dos quais o sensor ultrassônico pode pingar (como paredes). É difícil fazer ping em pequenos objetos, como pernas de cadeiras, devido à sua pequena área de superfície e cantos. Compartilhe, desenvolva mais e me informe sobre quaisquer ajustes ou erros necessários. Esta tem sido uma ótima experiência de aprendizado e espero que você se divirta tanto quanto eu fazendo este projeto!

Concurso de Robótica
Concurso de Robótica
Concurso de Robótica
Concurso de Robótica

Vice-campeão no concurso de robótica

Recomendado: