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

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino

Componentes e Materiais

ComponenteQuantidadeObservações
Arduino UNO 1
Motor servo 3
Dispositivo Android 1
Placa de fonte regulada 1 (12V, 5V, 3.3V)

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Planejo fazer algo novo mas não tão caro. Gosto muito de robótica. Mas devido à necessidade de servos e outras peças não gostava de fazer. Agora tenho 4 motores servo custando apenas $13. Já tenho placa LinkIt ONE e placa Arduino.

Então planejei fazer uma cabeça de robô que se move como nossa cabeça em todos os eixos mas de forma barata. Estudei diferentes sensores e métodos, mas finalmente encontrei um caminho com todos os itens em mãos. Aprendi muitas coisas durante este projeto. Vamos lá, explico o que aprendi. Menciono o que aprendi em negrito.

Usar sensor de inclinação do celular inteligente para controlar a cabeça

Passo 1: Materiais Necessários

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino

Materiais que usei

  1. Arduino Uno.
  2. Placa LinkIt ONE.
  3. 3 Motores servo.
  4. App Android gratuito SensoDuino - Baixe aqui.
  5. Placa de fonte regulada (12V, 5V, 3.3V).
  6. PCI virgem.
  7. Conectores macho para PCI.
  8. Peça de alumínio de corte de alimentação.
  9. Pistola de cola quente.
  10. Adaptadores 12V e 5V.
  11. Mais alguns itens para decorar.

Por que LinkIt ONE e Arduino Uno

Se você tem LinkIt ONE e servo de 3V então não precisa de Arduino UNO porque meu servo de 5V não funciona bem na placa LinkIt ONE.

Se você tem Arduino Uno e módulo Bluetooth então não precisa de placa LinkIt ONE.

Não tenho shield Bluetooth então vou com LinkIt ONE e Arduino Uno.

Passo 2: Shield de Servo Próprio

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Faça um shield de motor servo para Arduino. (Cuidado se usar servos de 3V, LinkIt ONE tem apenas 2 pinos PWM)
  2. Fiz um shield tipo PCI para motor servo.
  3. Usando esta placa conseguimos controlar 6 motores servo a partir dos pinos Arduino (3,5,6,9,10,11).
  4. Servos de 3 fios são usados aqui. Alimentação vem de fonte regulada externa de 5V.
  5. Ao controlar servo use alimentação do adaptador para placa Arduino. Porque alimentação USB do PC causa vibração. Isso causa superaquecimento no motor servo e danifica o motor servo . (um dos meus servos danificou)

Passo 3: Conexão LinkIt ONE

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. LinkIt ONE precisa falar com Arduino para controlar os servos.
  2. Para isso conecte Tx da placa LinkIt ONE ao Rx da placa Arduino e ambos GND.
  3. Sempre que dados recebidos, são enviados ao Arduino.
  4. Nota: Se você tem shield Bluetooth Arduino então controla toda configuração usando uma placa.

Passo 4: Posição dos Servos

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Defina todos os motores servo para 90 graus. Para isso envie o programa acima para o Arduino.
  2. Conecte alimentação do servo e Arduino à placa de fonte regulada nos pinos 5V e 12V.
  3. Conecte conector fêmea do servo ao conector macho da PCI que fizemos nos pinos digitais Arduino 3,5,6.
  4. Conecte adaptador 12V à placa de fonte regulada.
  5. Ligue o Adaptador.
  6. Agora todos os motores giram 90 graus conforme programa.

Agora desconecte os motores para uní-los sem perturbar o rotor.

Código da IDE Arduino para Posição está em Servoposition.ino

Passo 5: Planejamento

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Cabeça gira em 3 eixos x,y,z.
  2. As rotações são:
    • a) Yaw - Olhar esquerda e direita.
    • b) Pitch - Olhar cima e baixo
    • c) Roll - Balançar lateralmente.
  3. Primeiro use fita dupla face para planejar os servos.
  4. Corte peça de alumínio em L para fixar servo superior ao segundo.
  5. Conecte o chifre do motor servo conforme seu plano ou como mostrado na imagem.
  6. Todos os centros dos servos devem estar retos quando em 90 graus.
  7. Cole todos os servos e peça de alumínio em L usando fita dupla face e verifique se movimento não perturba outros servos.

Passo 6: Construção

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Agora é hora de fixar permanentemente.
  2. Remova a fita dupla face uma por uma e fixe permanentemente usando pistola de cola quente.
  3. Cuidado para não danificar os servos.
  4. Novamente conecte conector do servo à placa Arduino e ligue a alimentação.
  5. Confirme que todos ficam retos como na última imagem.

Passo 7: Detalhes do App Android

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Abra SensoDuino no seu celular Android. Tem opções para ver todas leituras de sensores do celular e enviar via Bluetooth.
  2. Todos sensores mais recentes são listados e só podemos selecionar quais sensores disponíveis no nosso celular.
  3. Vá ao menu e selecione conectar Bluetooth.
  4. A lista mostra dispositivos Bluetooth disponíveis.
  5. Selecione o Bluetooth do LinkIt ONE.
  6. Para nosso projeto usamos sensor de Orientação. Marque a primeira caixa para ligar e a segunda para enviar dados via Bluetooth.
  7. Também definimos desempenho de cada sensor selecionando opção de desempenho no menu. Altere intervalo de tempo para cada leitura.

Passo 8: Codificação

1) Dois códigos aqui: um para LinkIt ONE.

Usando Bluetooth obtém dados do celular e envia ao Arduino pela porta serial.

2) Programa Arduino

Quando dados recebidos na porta serial, concatena chars como string. E usando indexOf e substring divide um conjunto completo de resultados. Nesse conjunto novamente usa indexOf e substring para obter cada posição. A partir disso usa map no Arduino para controlar servo de 0 a 180 graus. Se usar shield Bluetooth então mude o programa conforme necessidade.

Como o Programa Funciona

  1. Usando sensor de Orientação o robô vira cabeça como nós.
  2. a) Yaw é rotação, vai de 0 a 360 graus conforme posição magnética. Para isso usamos 90 a 270 graus onde 180 é 90 graus para servo. Então queremos enfrentar 180 graus como string quando usar o boné.
  3. b) Pitch é frente cima e baixo. Leitura do sensor é -180 a +180. Usamos -90 a +90.
  4. c) Roll é balanço lateral, é 0 a 90 a 0 a -90 a 0. Usamos -90 a 90.

Código LinkIt ONE em Linkitonehead.ino

Código Arduino em Arduinohead.ino

Passo 9: Monte as Placas

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Conecte ambas placas shield no topo de ambos microcontroladores.
  2. Cole tudo com fita dupla face uma sobre outra.
  3. Cuidado para não curto-circuitar nenhum terminal.

Passo 10: Teste com a Mão

Agora ligue todas alimentações e use o celular na mão. Sente enfrentando 180 graus no yaw e use o celular para controlar todos os três motores servo.

Passo 11: Fixe um Rosto

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. É época de Natal então encontrei muitos bonecos de Papai Noel nas lojas.
  2. Comprei um boneco e fixei a cabeça usando fita dupla face no braço do servo superior.

Passo 12: Prepare um Chapéu de Controle

Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
Transformando uma Cabeça Humana em Cabeça de Robô: Projeto DIY com Arduino
  1. Pegue um boné normal.
  2. Cole fita dupla face na frente do boné como mostrado na figura.
  3. Cole seu celular sobre a fita dupla face.

Passo 13: Vídeo de Teste

Teste Baixo Desempenho significa taxa de atualização do sensor a cada 250 milissegundos.

Passo 14: Vídeo Final

Veja a ação com taxa de leitura do sensor de uma leitura por 100 milissegundos

Código

Servoposition.ino Arduino

#include <Servo.h>
Servo leftright;
Servo updown;
Servo shake;

void setup() {
  Serial.begin(9600);
  leftright.attach(3);
  updown.attach(5);
  shake.attach(6);
  leftright.write(90);
  updown.write(90);
  shake.write(90);
}

void loop() {
}

Linkitonehead.ino Arduino

#include <LBT.h>
#include <LBTServer.h>
int readval;
String inputString = "";
String outputString = "";
int firstpoint=0;
int secondpoint=0;

void setup() {
  if(!LBTServer.begin((uint8_t*)"Sivam_LIO")) {
    return;
  }
  // Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  uint8_t buf[64];
  int bytesRead;
  if(LBTServer.connected()) {
    while(true) {
      bytesRead = LBTServer.readBytes(buf, 32);
      if(!bytesRead) break;
      inputString="";
      for(int j=0;j<32;j++) {
        char inChar = char(buf[j]);
        // adiciona à inputString:
        inputString += inChar;
      }
      // Serial.println(inputString);
      Serial1.println(inputString);
      // firstpoint=inputString.indexOf('>');
      // Serial.println(inputString);
      // Serial.println(firstpoint);
      // if (firstpoint>0)
      // {
      // secondpoint=inputString.indexOf('>',firstpoint+1);
      // if (secondpoint>0)
      // {
      // outputString=inputString.substring(firstpoint,secondpoint);
      // inputString=inputString.substring(secondpoint);
      // Serial.println(outputString);
      // }
      // }
    }
    delay(100);
  } else {
    LBTServer.accept(5);
  }
}

Arduinohead.ino Arduino

#include <Servo.h>
Servo leftright;
Servo updown;
Servo shake;
String inputString = "";
boolean stringComplete = false;
String teststr2;
String sensorid;
String sensorrecid;
String sensorval1;
String sensorval2;
String sensorval3;
int S1;
int S2;
int S3;
int startchr=0;
int endchr=0;
int rot1;
int rot2;
int rot3;

void setup() {
  Serial.begin(9600);
  // inputString.reserve(200);
  leftright.attach(3);
  updown.attach(5);
  shake.attach(6);
}

void loop() {
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    if (inChar != '\n') {
      inputString += inChar;
    }
  }
  startchr = inputString.indexOf('>');
  if (startchr>=0) {
    endchr = inputString.indexOf('>',startchr+1);
    if (endchr>0) {
      teststr2=inputString.substring(startchr,endchr);
      inputString=inputString.substring(endchr);
      startchr = teststr2.indexOf(',');
      sensorid = teststr2.substring(1,startchr);
      endchr = teststr2.indexOf(',',startchr+1);
      sensorrecid=teststr2.substring(startchr+1,endchr);
      startchr=endchr;
      endchr = teststr2.indexOf(',',startchr+1);
      sensorval1=teststr2.substring(startchr+1,endchr);
      startchr=endchr;
      endchr = teststr2.indexOf(',',startchr+1);
      sensorval2=teststr2.substring(startchr+1,endchr);
      startchr=endchr;
      sensorval3=teststr2.substring(startchr+1);
      S1=sensorval1.toInt();
      S2=sensorval2.toInt();
      S3=sensorval3.toInt();
      rot1=map(S1, 90, 270, 180, 0);
      if (rot1<0) rot1=0;
      else if (rot1>180) rot1=180;
      rot2=map(S2, -90, 90, 0, 180);
      if (rot2<0) rot2=0;
      else if (rot2>180) rot2=180;
      rot3=map(S3, 90, -90, 0, 180);
      if (rot3<0) rot3=0;
      else if (rot3>180) rot3=180;
      if (rot1!=0 & rot1!=180) {
        leftright.write(rot1);
      }
      if (rot1!=0 & rot1!=180) { // Nota: condição original repetida
        updown.write(rot2);
      }
      if (rot1!=0 & rot1!=180) { // Nota: condição original repetida
        shake.write(rot3);
      }
      delay(15);
      // Serial.print("Sensor-");
      // Serial.println(sensorid);
      // Serial.print("Sensor Val1-");
      // Serial.println(rot1);
      // Serial.print("Sensor Val2-");
      // Serial.println(rot2);
      // Serial.print("Sensor Val3-");
      // Serial.println(rot3);
    }
  }
}

Processo de manufatura

  1. Robô DIY Inspirado no Wall‑E com Caixa de CD e Raspberry Pi
  2. Robô Alarme Rolante: Sistema Móvel Inteligente de Despertar com Raspberry Pi e Google Calendar
  3. RasPiRobot Board V2: Expanda seu Raspberry Pi em um Controlador de Robô Poderoso
  4. Construa um Robô Creeper Motorizado do Minecraft com Arduino
  5. Arquimedes: O Robô Coruja Sensor de Emoções com IA
  6. Construa Robô de Visão Computacional Controlado por Fala no Windows 10 IoT Core
  7. Robô ROS: Navegação Controlada por Terminal no Raspberry Pi
  8. Integrando Microsoft Kinect com Raspberry Pi para Detecção Humana em Tempo Real no Robô Sonbi
  9. Simple Pi Robot – Construa Rover Autônomo 2-WD com Raspberry Pi
  10. O Verdadeiro Ativo: Capital Humano nas Operações de Varejo