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

Littlearm 2C:Construir um braço de robô Arduino impresso em 3D

Componentes e suprimentos

Arduino Nano R3
× 1
Servos (Tower Pro MG996R)
Servos MG90S
× 4
Meped Board
× 1

Ferramentas e máquinas necessárias

Impressora 3D (genérica)

Sobre este projeto


O LittleArm 2C foi projetado para ser o kit que as crianças podem usar facilmente para que as aulas de STEM possam implementar mais currículo de robótica. Ele foi feito mais robusto e muito mais fácil de montar, para que seja fácil para as crianças usarem.

Todas as peças podem ser facilmente impressas em 3D e são projetadas para manter o braço elegante e simples. Todo o projeto possui menos de 15 parafusos.

Para controlar o braço, você pode usar nosso aplicativo Windows (que foi originalmente escrito em código Python aqui) ou por Bluetooth com o aplicativo Android que criamos para ele.

As instruções completas para a montagem do LittleArm 2C podem ser encontradas aqui.

Os arquivos de impressão 3D podem ser baixados aqui.






Código

  • LittleArm 2C Arduino Sketch
LittleArm 2C Arduino Sketch C / C ++
 // Código arduino LittleArm 2C // Permite o controle serial do braço do robô impresso em 3D LittleArm 2C // Criado por Slant Concepts # include  // biblioteca arduino # include  // standard c biblioteca # define PI 3.141Servo baseServo; Servo ombroServo; Servo cotoveloServo; Servo gripperServo; // ++++++++++++++++ Variáveis ​​globais ++++++++++++++++++++++++++++++ +++ struct jointAngle {// um struct é uma maneira de organizar variáveis ​​em uma base interna de grupo; ombro interno; cotovelo interno;}; struct jointAngle desejadoAngle; // ângulos desejados do servosinto desejadoGrip; // posição desejada da garra gripperPos; // posição atual do comando gripperint; // o conjunto de anglesint desejadoDelay; // o atraso que os servos realizam entre as etapas // int ready =0; // um marcador a ser usado para sinalizar que um processo foi concluído // +++++++++++++++ DECLARAÇÕES DE FUNÇÃO +++++++++++++++++++ ++++++++ int servoParallelControl (int thePos, Servo theServo); // Esta é uma função para controlar os servos // ++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++ void setup () // A instalação preparou a placa Arduino para operação {Serial.begin (9600); // Liga a comunicação USB (porta serial) e faz com que ela se comunique a 9600 bits por segundo baseServo.attach (5); // conecta o servo no pino 5 ao objeto servo ombroServo.attach (4); // conecta o servo no pino 4 ao objeto servo elbowServo.attach (3); // conecta o servo no pino 3 ao objeto servo gripperServo.attach (2); // anexa o servo no pino 2 ao objeto servo Serial.setTimeout (50); // Pára de tentar falar com o computador e não há resposta após 50 milissenconds. Garante que o arduino não leia serial por muito tempo Serial.println ("started"); // Imprime no computador "Iniciado" baseServo.write (90); // posições iniciais dos servos ombroServo.write (100); elbowServo.write (110); // pronto =0;} // loop Arduino primário. É aqui que todos os seus programas primários devem ser colocados.void loop () {if (Serial.available ()) {// Se os dados estão vindo pela porta USB para o arduino, então ... // ready =1; // Pronto é definido como 1 para indicar que um comando está sendo executado // Os comandos são enviados do computador na forma "#, #, #, #, #, \ n" // O código abaixo "analisa" esse comando em inteiros que correspondem ao // ângulo da base, ângulo do ombro, ângulo do cotovelo, ângulo da garra e atraso nos servos, respectivamente. desejadoAngle.base =Serial.parseInt (); desejadoAngle.shoulder =Serial.parseInt (); desejadoAngle.elbow =Serial.parseInt (); desejadoGrip =Serial.parseInt (); desejadoDelay =Serial.parseInt (); if (Serial.read () =='\ n') {// se o último byte for '\ n' então pare de ler e execute o comando '\ n' significa 'concluído' Serial.flush (); // limpa todos os outros comandos empilhados no buffer Serial.print ('d'); // enviar a conclusão do comando "d" significa "done executing"}} // Esses valores indicam se a junta atingiu ou não sua posição ainda // variáveis ​​declaradas dentro de alguma parte do programa, como estas , são chamadas de "Variáveis ​​locais" int status1 =0; // status básico int status2 =0; // status do ombro int status3 =0; // status do cotovelo int status4 =0; // status da garra int done =0; // este valor informa quando todas as juntas alcançaram suas posições enquanto (done ==0) {// Loop até que todas as juntas tenham alcançado suas posições &&ready ==1 // mova o servo para a posição desejada // Este bloco de o código usa "Funções" para torná-lo mais condensado. status1 =servoParallelControl (desejadoAngle.base, baseServo, desejadoDelay); status2 =servoParallelControl (desejadoAngle.shoulder, ombroServo, desejadoDelay); status3 =servoParallelControl (desejadoAngle.elbow, cotoveloServo, desejadoDelay); status4 =servoParallelControl (desejadoGrip, gripperServo, desejadoDelay); // Verifique se todas as juntas alcançaram suas posições if (status1 ==1 &status2 ==1 &status3 ==1 &status4 ==1) {done =1; // Quando concluído =1, o loop irá parar}} // fim do tempo} // +++++++++++++++++++++++++++++ + DEFINIÇÕES DE FUNÇÕES +++++++++++++++++++++++++++++++++++++++++++++++++++ , Servo theServo, int theSpeed) {// Formulário de função:outputType FunctionName (inputType localInputName) // Esta função move um servo um certo número de passos em direção a uma posição desejada e retorna se está ou não próximo ou hase recahed dessa posição // thePos - a posição desejada // thServo - o pino de endereço do servo que queremos mover // theSpeed ​​- o atraso entre as etapas do servo int startPos =theServo.read (); // leia a posição atual do servo com o qual estamos trabalhando. int newPos =startPos; // newPos mantém a posição do servo conforme ele se move // ​​define onde está a pos em relação ao comando // se a posição atual é menor que a desejada, mova a posição para cima if (startPos <(thePos-5)) { newPos =newPos + 1; theServo.write (newPos); atraso (theSpeed); return 0; // Diz ao programa primário que o servo não atingiu sua posição} // Caso contrário, se a posição atual for maior que a desejada, mova o servo para baixo else if (newPos> (thePos + 5)) {newPos =newPos - 1; theServo.write (newPos); atraso (theSpeed); return 0; } // Se o servo estiver + -5 dentro da faixa desejada, diga ao programa principal que o servo atingiu a posição desejada. else {return 1; }} // fim do controle paralelo servo 

Esquemas

Existem apenas quatro conexões se você usar a placa Meped para a qual o Littlearm foi projetado.

Processo de manufatura

  1. Robô Raspberry Pi controlado por Bluetooth
  2. Construa seu robô de streaming de vídeo controlado pela Internet com Arduino e Raspberry Pi
  3. O braço do robô impresso em 3D de código aberto da Haddington Dynamics
  4. Robô SCARA de braço duplo
  5. Braço do robô MeArm - Seu robô - V1.0
  6. Robô seguidor de linha
  7. Arduino 3D-Printed Robotic Arm
  8. Braço robótico controlado por Nunchuk (com Arduino)
  9. Robô controlado por fala
  10. Braço do robô controlado por Ethernet