Índice:

Acene com a mão para controlar o braço robótico OWI Sem cordas anexadas: 10 etapas (com imagens)
Acene com a mão para controlar o braço robótico OWI Sem cordas anexadas: 10 etapas (com imagens)

Vídeo: Acene com a mão para controlar o braço robótico OWI Sem cordas anexadas: 10 etapas (com imagens)

Vídeo: Acene com a mão para controlar o braço robótico OWI Sem cordas anexadas: 10 etapas (com imagens)
Vídeo: Esse MINI jacaré é REAL? | Biomesquita #shorts 2024, Novembro
Anonim
Image
Image
Peças
Peças

A IDEIA:

Existem pelo menos 4 outros projetos no Instructables.com (em 13 de maio de 2015) sobre a modificação ou controle do OWI Robotic Arm. Não é de surpreender, já que é um kit robótico ótimo e barato para brincar. Este projeto é semelhante em espírito (ou seja, controlar o Braço Robótico com Arduino), mas diferente na abordagem. [vídeo]

A ideia é poder controlar o braço robótico sem fio usando gestos. Além disso, tentei manter as modificações do braço robótico ao mínimo, para que ele ainda pudesse ser usado com o controlador original.

Parece simples.

O que acabou sendo é um projeto de três partes:

  1. Uma luva equipada com sensores suficientes para controlar um LED e 5 motores
  2. Um dispositivo transmissor baseado em Arduino Nano para aceitar comandos de controle da luva e enviá-los sem fio para o dispositivo controlador de braço
  3. Um receptor sem fio baseado em Arduino Uno e dispositivo de controle de motor conectado ao OWI Robotic Arm

RECURSOS

  1. Suporte para todos os 5 graus de liberdade (DOF) e o LED
  2. Botão Vermelho Grande - para parar imediatamente os motores no braço, evitando danos
  3. Design modular portátil

Para usuários móveis: o "vídeo promocional" deste projeto está no YouTube aqui.

Etapa 1: Peças

LUVA:

Você precisará do seguinte para construir um controlador de luva:

  1. Isotoner Smartouch Tech Stretch Stitched Glove (ou similar) - na Amazon.com
  2. Sensor Spectra Symboflex 2.2 "- na Amazon.com
  3. GY-521 6DOF MPU6050 Giroscópio de 3 eixos + Módulo de acelerômetro - em Fasttech.com
  4. 2X5 BOX HEADER STRAIGHT - em Phoenixent.com
  5. 2X5 IDC SOCKET-RECEPTÁCULO - em Phoenixent.com
  6. CABO DE FITA LISA 10 Condutor Passo de 0,050 "- em Phoenixent.com
  7. 2 LEDs de 5 mm - Verde e Amarelo
  8. 2 x botões pequenos
  9. Resistores, fios, agulha, linha preta, pistola de cola, pistola de solda, solda, etc.

CAIXA DE TRANSMISSÃO STRAP-ON:

  1. Placa compatível com Arduino Nano v3.0 ATmega328P-20AU - em Fasttech.com
  2. nRF24L01 + 2.4 GHz sem fio transceptor Arduino compatível - na Amazon.com
  3. Gymboss WRISTBAND - na Amazon.com
  4. Caixa de suporte de bateria de 9V com chave liga / desliga de fio - na Amazon.com
  5. 2X5 BOX HEADER STRAIGHT - em Phoenixent.com
  6. Bateria 9v
  7. Capacitor 47uF (50v)
  8. Resistores, fios, pistola de cola, pistola de solda, solda, etc.

CAIXA DO CONTROLADOR DO BRAÇO ROBÓTICO OWI:

  1. Placa de desenvolvimento compatível com Arduino Uno R3 Rev3 - em Fasttech.com
  2. Prototype Shield DIY KIT para Arduino (ou similar) - na Amazon.com
  3. Compatível com transceptor sem fio nRF24L01 + 2,4 GHz com Arduino - na Amazon.com
  4. 3 x L293D 16 pinos Circuito Integrado IC Motor Driver - em Fasttech.com
  5. 1 x SN74HC595 74HC595 Registro de deslocamento de 8 bits com registros de saída de 3 estados DIP16 - na Amazon.com
  6. Capacitor 47uF (50v)
  7. Box para Arduino - na Amazon.com
  8. Chave liga / desliga
  9. 2 botões de 13 mm (um vermelho e um verde)
  10. CABEÇA DE CAIXA RETA 2 x 2X7 - o mesmo que acima em Phoenixent.com
  11. CABO DE FITA LISA 14 Condutor Passo de 0,050 "- o mesmo que acima em Phoenixent.com
  12. Bateria 9v + conector clip
  13. Resistores, fios, pistola de cola, pistola de solda, solda, etc.

… e claro:

OWI Robotic Arm Edge - Robot arm - OWI-535 - em Adafruit.com

Etapa 2: PROTOTIPAGEM

PROTOTIPAGEM
PROTOTIPAGEM
PROTOTIPAGEM
PROTOTIPAGEM

Eu sugiro fortemente a prototipagem de cada um dos dispositivos controladores antes de soldar todos os componentes juntos.

Este projeto usa algumas peças desafiadoras de hardware:

nRF24L01

Demorei a fazer os dois nRF24 se comunicarem. Aparentemente, nem o Nano, nem o Uno fornecem energia estabilizada de 3,3v suficiente para que os módulos funcionem de forma consistente. Uma solução no meu caso foi um capacitor de 47uF entre os pinos de alimentação em ambos os módulos nRF24. Existem também algumas peculiaridades ao usar a biblioteca RF24 nos modos IRQ e não IRQ, então eu recomendo estudar os exemplos com muito cuidado.

Alguns recursos excelentes:

nRF24L01 Ultra low power 2.4 GHz RF Transceiver IC Página do produto

Página da biblioteca do driver RF24

Basta pesquisar nRF24 + arduino no Google para obter muitos links. Vale a pena pesquisar

74HC595 SHIFT REGISTER

Como era de se esperar, tendo que controlar 5 motores, um LED, dois botões e um módulo sem fio, fiquei sem pinos no Uno de forma relativamente rápida. A maneira bem conhecida de "estender" sua contagem de pinos é usar um registrador de deslocamento. Como o nRF24 já estava usando a interface SPI, decidi usar o SPI também para a programação do registro de deslocamento (para velocidade e para salvar os pinos) em vez da função shiftout (). Para minha surpresa, funcionou perfeitamente desde a primeira vez. Você pode verificar na atribuição dos pinos e nos esboços.

Os fios da placa de ensaio e do jumper são seus amigos.

Etapa 3: LUVA

LUVA
LUVA
LUVA
LUVA
LUVA
LUVA
LUVA
LUVA

O OWI Robotic ARM tem 6 itens para controlar (OWI Robotic Arm Edge Picture)

  1. Um LED localizado no GRIPPER do dispositivo
  2. UM GRIPPER
  3. UM PULSO
  4. Um COTOVELO - é a parte do braço robótico anexado ao PULSO
  5. Um OMBRO é a parte do braço robótico anexado à BASE
  6. HUMILHAR

A luva é projetada para controlar o LED do braço robótico e todos os 5 motores (graus de liberdade).

Tenho sensores individuais marcados nas fotos, bem como uma descrição abaixo:

  1. O GRIPPER é controlado pelos botões localizados no dedo médio e mindinho. A garra é fechada pressionando os dedos indicador e médio juntos. A garra é aberta pressionando o anel e o mindinho juntos.
  2. O WRIST é controlado pelo resistor flexível no localizador de índice. Enrolar o dedo até a metade faz o pulso descer, e enrolá-lo completamente faz o pulso subir. Manter o dedo indicador reto para o pulso.
  3. O COTOVELO é controlado pelo acelerômetro - inclinar a palma da mão para cima e para baixo move o cotovelo para cima e para baixo, respectivamente
  4. O OMBRO é controlado pelo acelerômetro - inclinar a palma da mão para a direita e para a esquerda (mas não de cabeça para baixo!) Move o ombro para cima e para baixo, respectivamente
  5. A BASE também é controlada pelo acelerômetro, semelhante ao ombro - inclinar a palma da mão para a direita e para a esquerda totalmente de cabeça para baixo (palma voltada para cima) move a base para a direita e para a esquerda, respectivamente
  6. O LED na garra é ligado / desligado pressionando os dois botões de controle da garra juntos.

Todas as respostas do botão são atrasadas em 1/4 de segundo para evitar jitter.

A montagem da luva requer um pouco de solda e muita costura. Basicamente, é apenas anexar 2 botões, resistor flexível, módulo Accel / Gyro ao tecido da luva e direcionar os fios para a caixa de conexão.

Dois LEDs na caixa de conexão são:

  1. VERDE - liga
  2. AMARELO - pisca quando os dados são transmitidos para a caixa de controle do braço.

Etapa 4: CAIXA DO TRANSMISSOR

CAIXA DO TRANSMISSOR
CAIXA DO TRANSMISSOR
CAIXA DO TRANSMISSOR
CAIXA DO TRANSMISSOR
CAIXA DO TRANSMISSOR
CAIXA DO TRANSMISSOR

A caixa do transmissor é essencialmente Arduino Nano, módulo sem fio nRF24, conector de fio flexível e 3 resistores: 2 resistores pull-down de 10 kOhm para os botões de controle da garra na luva e um resistor de divisão de tensão de 20 kOhm para o sensor flexível que controla o pulso.

Tudo é soldado junto em uma placa vero. Observe que o nRF24 está "pairando" sobre o Nano. Eu estava preocupado que isso pudesse causar interferência, mas funciona.

Usar a bateria de 9v torna a parte de amarrar um pouco volumosa, mas eu não queria mexer com as baterias LiPo. Talvez mais tarde.

Consulte a etapa de atribuição do pino para obter instruções de soldagem

Etapa 5: CAIXA DE CONTROLE DO BRAÇO

CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO
CAIXA DE CONTROLE DO BRAÇO

A caixa de controle do braço é baseada no Arduino Uno. Ele recebe comandos da luva sem fio por meio do módulo nRF24 e controla o OWI Robotoc Arm por meio de 3 chips de driver L293D.

Como quase todos os pinos do Uno foram utilizados, há muitos fios dentro da caixa - ela mal fecha!

Por design, a caixa começa no modo OFF (como se um botão redstop fosse pressionado), dando ao operador tempo para colocar a luva e se preparar. Depois de pronto, o operador pressiona o botão verde e a conexão entre a luva e a caixa de controle deve ser estabelecida imediatamente (conforme indicado pelo LED amarelo na luva e pelo LED vermelho na caixa de controle).

CONECTANDO-SE AO OWI

A conexão com o braço robótico é feita por meio de um cabeçalho de filas duplas de 14 pinos (de acordo com a imagem acima) por meio de um cabo plano de 14 fios.

  • As conexões de LED são para aterramento comum (-) e pino arduino A0 via resistor de 220 Ohm
  • Todos os fios do motor são conectados aos pinos 3/6 ou 11/14 do L293D (+/- respectivamente). Cada L293D suporta 2 motores, portanto, dois pares de pinos.
  • As linhas de energia OWI são os pinos mais à esquerda (+ 6v) e mais à direita (GND) do conector de 7 pinos na parte traseira da parte superior amarela. (Você pode ver os fios conectados na imagem acima). Esses dois são conectados aos pinos 8 (+) e 4, 5, 12, 13 (GND) em todos os três L293Ds.

Consulte o restante da atribuição de pinos na próxima etapa

Etapa 6: ATRIBUIÇÃO DO PIN

ATRIBUIÇÃO DE PIN
ATRIBUIÇÃO DE PIN
ATRIBUIÇÃO DE PIN
ATRIBUIÇÃO DE PIN
ATRIBUIÇÃO DE PIN
ATRIBUIÇÃO DE PIN

NANO:

  • 3,3v - 3,3v para chip nRF24L01 (pino 2)
  • 5v - 5v para placa do acelerômetro, botões, sensor flexível
  • a0 - entrada de resistor flexível
  • a1 - controle de LED "comms" amarelo
  • a4 - SDA para acelerômetro
  • a5 - SCL para acelerômetro
  • d02 - pino de interrupção do chip nRF24L01 (pino 8)
  • d03 - abre a entrada do botão da garra
  • d04 - entrada do botão de fechamento da garra
  • d09 - pino SPI CSN para chip nRF24L01 (pino 4)
  • d10 - pino SPI CS para chip nRF24L01 (pino 3)
  • d11 - SPI MOSI para chip nRF24L01 (pino 6)
  • d12 - SPI MISO para chip nRF24L01 (pino 7)
  • d13 - SPI SCK para chip nRF24L01 (pino 5)
  • Vin - 9v +
  • GND - terreno comum

UNO:

  • 3,3v - 3,3v para chip nRF24L01 (pino 2)
  • 5v - 5v para botões
  • Vin - 9v +
  • GND - terreno comum
  • a0 - LED de pulso +
  • a1 - PIN SPI SS para Shift Register Selecione - para fixar 12 no Shift Register
  • a2 - entrada do botão VERMELHO
  • a3 - entrada do botão VERDE
  • a4 - base de direção direita - pino 15 em L293D
  • a5 - comms led
  • d02 - entrada IRQ nRF24L01 (pino 8)
  • d03 - habilitar servo base (pwm) pino 1 ou 9 em L293D
  • d04 - base de direção esquerda - pino 10 no respectivo L293D
  • d05 - habilitar servo de ombro (pwm) pino 1 ou 9 em L293D
  • d06 - habilitar servo de cotovelo (pwm) pino 1 ou 9 em L293D
  • d07 - pino SPI CSN para chip nRF24L01 (pino 4)
  • d08 - pino SPI CS para chip nRF24L01 (pino 3)
  • d09 - habilitar servo de pulso (pwm) pino 1 ou 9 no L293D
  • d10 - habilitar o servo da garra (pwm) pino 1 ou 9 no L293D
  • d11 - SPI MOSI para chip nRF24L01 (pino 6) e pino 14 no registro de deslocamento
  • d12 - SPI MISO para chip nRF24L01 (pino 7)
  • d13 - SPI SCK para chip nRF24L01 (pino 5) e pino 11 no registro de deslocamento

SHIFT REGISTER E L293Ds:

  • pino QA (15) de 74HC595 para pino 2 de L293D # 1
  • pino QB (1) de 74HC595 ao pino 7 de L293D # 1
  • pino QC (2) de 74HC595 ao pino 10 de L293D # 1
  • pino QD (3) de 74HC595 ao pino 15 de L293D # 1
  • pino QE (4) de 74HC595 para pino 2 de L293D # 2
  • pino QF (5) de 74HC595 ao pino 7 de L293D # 2
  • pino QG (6) de 74HC595 ao pino 10 de L293D # 2
  • pino QH (7) de 74HC595 ao pino 15 de L293D # 2

Etapa 7: COMUNICAÇÃO

COMUNICAÇÃO
COMUNICAÇÃO

O Glove envia 2 bytes de dados para a caixa de controle 10 vezes por segundo ou sempre que um sinal de um dos sensores é recebido.

2 bytes são suficientes para 6 controles porque só precisamos enviar:

  • LIGADO / DESLIGADO para LED (1 bit) - Na verdade, usei 2 bits para ser consistente com os motores, mas um é suficiente
  • OFF / RIGHT / LEFT para 5 motores: 2 bits cada = 10 bits

Um total de 11 ou 12 bits é suficiente.

Códigos de direção:

  • OFF: 00
  • DIREITO: 01
  • ESQUERDA: 10

A palavra de controle se parece com isto (bit a bit):

Byte 2 ---------------- Byte 1 ----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - garra
  • M2 - pulso
  • M3 - cotovelo
  • M4 - ombro
  • M5 - base

O byte 1 pode ser convenientemente alimentado diretamente no registrador de deslocamento, uma vez que controla a direção direita / esquerda dos motores 1 a 4.

Um tempo limite de 2 segundos é habilitado para comunicações. Se ocorrer um tempo limite, todos os motores serão parados como se um botão VERMELHO tivesse sido pressionado.

Etapa 8: ESBOÇOS e mais …

ESBOÇOS e mais …
ESBOÇOS e mais …

LUVA

O esboço de luva usa as seguintes bibliotecas:

  • DirectIO - disponível no Github
  • I2Cdev - disponível no Github
  • Wire - parte do Arduino IDE
  • MPU6050 - disponível no Github
  • SPI - parte do Arduino IDE
  • RF24 - disponível no Github

e três bibliotecas desenvolvidas por mim:

  • AvgFilter - disponível no Github
  • DhpFilter - disponível no Github
  • TaskScheduler - disponível no Github

O esboço de luva está disponível aqui: Esboço de luva v1.3

CAIXA DE CONTROLE DO BRAÇO

O esboço do braço usa as seguintes bibliotecas:

  • DirectIO - disponível no Github
  • PinChangeInt - disponível no Github
  • SPI - parte do Arduino IDE
  • RF24 - disponível no Github

e uma biblioteca desenvolvida por mim:

TaskScheduler - disponível no Github

O esboço do braço está disponível aqui: Esboço do braço v1.3

Folhas de dados para hardware usado

  • 74HC595 shift register - folha de dados
  • Motorista L293D - folha de dados
  • Módulo sem fio nRF24 - folha de dados
  • Módulo acelerômetro / giroscópio MPU6050 - folha de dados

31 de maio de 2015 ATUALIZAÇÃO:

Uma nova versão dos esboços da caixa de controle de luva e braço está disponível aqui: Esboços de luva e braço v1.5

Eles também estão localizados no github aqui.

Alterar

  • Adicionados mais dois bytes à estrutura de comunicação para enviar a velocidade do motor solicitada para os motores de pulso, cotovelo, ombro e base como um valor de 5 bits (0.. 31) da luva proporcional ao ângulo do gesto de controle (veja abaixo). Arm Control Box mapeia os valores [0.. 31] para os respectivos valores PWM para cada um dos motores. Isso permite o controle gradual da velocidade pelo operador e um manuseio mais preciso do braço.
  • Novo conjunto de gestos:

1. LED: LED de controle dos botões - botão do dedo médio - LIGADO, botão do dedo mínimo - DESLIGADO

2. GRIPPER: controles de faixa flexível Gripper - dedo meio dobrado - ABRIR, dedo totalmente dobrado - FECHAR

3. PULSO: O pulso é controlado inclinando a palma da mão da posição totalmente horizontal PARA CIMA e PARA BAIXO, respectivamente. Mais inclinação produz mais velocidade

4. BRAÇO: O braço é controlado inclinando a palma da mão na posição totalmente horizontal ESQUERDA e DIREITA. Mais inclinação produz mais velocidade

5. OMBRO: O ombro é controlado girando a palma para a DIREITA e ESQUERDA da palma da mão apontando para cima. A palma da mão é girada ao longo do eixo do cotovelo (como está acenando com a mão)

6. BASE: A base é controlada da mesma forma que o ombro, com a palma da mão voltada para baixo.

Etapa 9: O QUE MAIS?

O QUE MAIS?
O QUE MAIS?

IMAGINAÇÃO NO TRABALHO

Como de costume com esses sistemas, eles podem ser programados para fazer muito mais.

Por exemplo, o design atual já incorpora habilidades adicionais, não possíveis com o controle remoto padrão:

  • Aumento gradual da velocidade: cada movimento do motor é iniciado em uma velocidade mínima predefinida, que é aumentada gradualmente a cada 1 segundo até que uma velocidade máxima seja atingida. Isso permite um controle mais preciso de cada um dos motores (especialmente o pulso e a garra)
  • Cancelamento de movimento mais rápido: quando o Arm Box recebe o comando de parar um motor, ela faz a reversão momentânea do motor por cerca de 50 ms, “interrompendo” o movimento, permitindo um controle mais preciso.

O QUE MAIS?

Talvez gestos de controle mais elaborados possam ser implementados. Ou gestos simultâneos podem ser usados para controles elaborados. O braço pode dançar?

Se você tiver uma ideia de como reprogramar a luva, ou se tiver uma versão de um esboço que deseja que eu teste, me avise: [email protected]

Etapa 10: *** GANHAMOS !!! ***

*** NÓS GANHAMOS !!! ***
*** NÓS GANHAMOS !!! ***

Este projeto ganhou o primeiro prêmio no concurso Coded Creations, patrocinado pela Microsoft.

Confira! WOO-HOO !!!

Criações Codificadas
Criações Codificadas
Criações Codificadas
Criações Codificadas

Segundo prêmio nas criações codificadas

Recomendado: