Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Workshop de Robótica #CPBR8

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for RoboCore RoboCore
February 05, 2015

Workshop de Robótica #CPBR8

Apresentação usada no workshop ministrado durante a Campus Party Brasil de 2015, na quinta 05/02/15.

Avatar for RoboCore

RoboCore

February 05, 2015

More Decks by RoboCore

Other Decks in Technology

Transcript

  1. - Objetivo e uso real - O robô já está

    montado! - Conhecendo o robô e suas peças - Programando o Romeo - Lendo sensores - Controlando motores - Juntando tudo! - Condições - A lógica do seguidor de linha - Competição! agenda
  2. Objetivo e uso real - Objetivo: montar e programar um

    robô - Tipo de robô: seguidor de linha - Controlado ou autônomo? Autônomo! - Uso real deste tipo de robô
  3. O robô já está montado! - Nome do workshop deveria

    ser então: “programe seu primeiro robô” ao invés de “construa seu primeiro robô” - Ainda há muito trabalho pela frente!
  4. Conhecendo o robô e suas peças 1x Placa Romeo* 1x

    Chassi 4x Motores DC com caixa de redução* 4x Rodas 2x Sensores de Refletância (Linha)* 6x Pilhas Recarregáveis *dicas!
  5. - Sensores de Refletância (Linha) - Analógico Algumas dicas de

    funcionamento: + sobre esse sensor daqui a pouco...
  6. - Placa Romeo - Compatível com Arduino Leonardo - Controle

    de 2 motores DC independentes - 5 botões de uso geral - Pinagem em padrão três vias - Alimentação independente para servos - Soquete para módulo XBee Algumas dicas de funcionamento:
  7. - Conectar o Cabo Micro USB na placa e no

    computador - Aguardar o driver ser instalado - Abrir o programa do Arduino - Selecionar a placa Arduino Leonardo em Tools > Board - Selecionar a porta COM correta em Tools > Serial Port - Passar o example BLINK para o Romeo, que pode ser encontrado em File > Examples > 01.Basics > Blink - Dúvidas? Programando o Romeo
  8. - Os sensores de linha já estão conectados à placa

    Romeo através dos cabos jumper! - Um deles está no pino A1 e o outro no pino A2 - Escreva um código que faça a leitura dos sensores e mostre no monitor serial os valores. (para ver diferença nos valores, use a folha branca com um pedaço de fita isolante que está dentro da caixa com os materiais) Lendo os Sensores
  9. No Branco: No Preto: Diferença de Leitura Conclusão: Já sabemos

    como a placa vai saber se estamos sobre a linha ou fora dela!
  10. - Cada motor é controlador por 2 pinos - Um

    pino “informa” o sentido de rotação - O outro pino “informa” a velocidade do motor Controlando Motores Motor 1: Sentido: Pino D4 Velocidade: Pino D5~ Motor 2: Sentido: Pino D7 Velocidade: Pino D6~ ~ ao lado do número do pino significa que são pinos com PWM, ou seja, saídas “analógicas”
  11. - Saída Digital: Ou está ligado, ou desligado, sem meio

    termo. - Saída “Analógica” (PWM): Liga e desliga o pino de forma muito rápida, imperceptível, assim dá o efeito que a tensão está variando (“tensão analógica”) Controlando Motores
  12. Teste - Fazer os motores andarem: para frente, durante 5

    segundos; parar, por 2 segundos; para trás, por 5 segundos; parar, por 2 segundos; retornar à primeira instrução. Controlando Motores
  13. Sugestão de Código continua ao lado > Para controle do

    sentido de rotação: digitalWrite(M1, LOW) ou digitalWrite(M1, HIGH) Para controle da velocidade de rotação: analogWrite(E1, número de 0 a 255) onde 0 é parado, e 255 é a velocidade máxima!
  14. - Sabemos como ler os sensores e colocar essas informações

    dentro do Romeo; - Sabemos como andar pra frente, pra trás, parar e fazer curvas com nosso robô; - O que falta pra fazermos o robô seguir a linha? Resposta: Ler os dados dos sensores e fazer condições para cada leitura! Juntando tudo!
  15. Se vocês já souberem sobre esse assunto: então pulamos para

    o próximo tópico; se não continuamos neste assunto. isso é similar a: Condições if (vocês já souberem sobre esse assunto) { pulamos para o próximo tópico; } else continuamos neste assunto;
  16. - Podemos então ler os sensores e fazer algo a

    partir de um determinado valor: Condições if(valorSensor1 > 900){ digitalWrite(M1, LOW); analogWrite(E1, 200); } Este código faz com que, quando o valor do sensor 1 for MAIOR que 900: o motor 1 vira em um determinado sentido de rotação, e seu eixo roda com velocidade de “200”.
  17. - Se os dois sensores estiverem sobre a linha: robô

    anda pra frente; - Se um sensor estiver sobre a linha e o outro não: robô corrige a rota; A lógica do seguidor de linha Objetivo geral: Manter os dois sensores sobre a linha!
  18. 3 possíveis casos: - Sensor 1 e Sensor 2 sobre

    a linha - Sensor 1 sobre a linha e sensor 2 fora - Sensor 2 sobre a linha e sensor 1 fora Não iremos considerar os 2 fora da linha, mas poderia ser considerado. A lógica do seguidor de linha
  19. Caso 1 - dois sensores sobre a linha: o que

    fazer: andar reto! if((valorSensor1 > 900) && (valorSensor2 > 900)){ digitalWrite(M1, LOW); analogWrite(E1, 200); digitalWrite(M2, LOW); analogWrite(E2, 200); } A lógica do seguidor de linha
  20. Caso 2 - um sensor sobre a linha e outro

    sensor saindo à direita: o que fazer: corrigir para a esquerda! if((valorSensor1 > 900) && (valorSensor2 < 900)){ digitalWrite(M1, LOW); analogWrite(E1, 200); digitalWrite(M2, HIGH); analogWrite(E2, 200); } A lógica do seguidor de linha
  21. Caso 3 - um sensor sobre a linha e outro

    sensor saindo à esquerda: o que fazer: corrigir para a direita! if((valorSensor1 < 900) && (valorSensor2 > 900)){ digitalWrite(M1, HIGH); analogWrite(E1, 200); digitalWrite(M2, LOW); analogWrite(E2, 200); } A lógica do seguidor de linha
  22. Juntando os três possíveis casos, faça a programação de seu

    robô! A se pensar: - a posição atual dos sensores é a melhor? - seria interessante considerar os 2 sensores fora da linha? - o funcionamento do robô muda com as pilhas descarregando? Agora é com vocês!
  23. 1º Lugar: HUB USB + Squeeze + Mouse Pad +

    Bloco de Notas + Caneta 2º Lugar: Squeeze + Mouse Pad + Bloco de Notas + Caneta 3º Lugar: Mouse Pad + Bloco de Notas + Caneta Premiação da Competição