|
|
(64 revisões intermediárias por 3 usuários não estão sendo mostradas) |
Linha 3: |
Linha 3: |
| ==Objetivo== | | ==Objetivo== |
| O objetivo do projeto de '''Robótica''' é preparar equipes de alunos para participar das competições da '''Olimpíada de Robótica do IFPR'''. | | O objetivo do projeto de '''Robótica''' é preparar equipes de alunos para participar das competições da '''Olimpíada de Robótica do IFPR'''. |
|
| |
| ;Modalidades: No Edital 01/2018 PROEPI a Olimpíada de Robótica do IFPR terá as seguintes modalidades:
| |
| *'''Seguidor de linha Junior''' (Lego)
| |
| *'''Seguidor de linha Pro''' (Arduíno)
| |
| *'''Resgate OBR''' (Lego e Arduíno)
| |
| *'''Sumô 1 kg''' (Lego)
| |
| *'''Mini Sumô 500 g''' (Arduíno)
| |
|
| |
| ===Seletivas Etapa I 2018===
| |
| *13/Abr - '''Seguidor de Linha'''
| |
|
| |
|
| [[Arquivo:Robotica2018-1.jpg|200px]] | | [[Arquivo:Robotica2018-1.jpg|200px]] |
| [[Arquivo:Robotica2018-2.jpg|200px]] | | [[Arquivo:Robotica2018-2.jpg|200px]] |
| [[Arquivo:Robotica2018-3.jpg|200px]]
| |
| [[Arquivo:Robotica2018-4.jpg|200px]]
| |
|
| |
|
| Resultados Primeira Etapa da Olimpíada de Robótica
| | ;Modalidades: |
| | *Seguidor de linha Junior (Lego) |
| | *Seguidor de linha Pro (Arduíno) |
| | *Resgate OBR(Lego e Arduíno) |
| | *Sumô 1 kg (Lego) |
| | *Mini Sumô 500 g''' (Arduíno) |
|
| |
|
| {| border="1" cellpadding="2" style="text-align: center;"
| | ==[[Oficina_de_Robotica|Oficina de Robótica com Arduíno]]== |
| !Colocação
| |
| !Equipes
| |
| !Tempo(segundos)
| |
|
| |
| |-
| |
| | 1º || MechCats RED || 14,777
| |
| |-
| |
| | 2º || MechCats PURPLE || 15,343
| |
| |-
| |
| | 3º || MechCats WHITE || 17,316
| |
| |-
| |
| | 4º || MechCats BLUE || Voltas Inválidas
| |
| |-
| |
| | 4º || MechCats Yellow || Voltas Inválidas
| |
| |}
| |
|
| |
|
| | Nesta oficina são desenvolvidos os conhecimentos básicos sobre o '''[[Arduino|Arduíno]]''', assim como o uso de sensores de linha e controle de motores, necessários para a montagem de '''Robôs Seguidores de Linha'''. |
|
| |
|
| *08/Mai - '''Resgate'''
| | ===Materiais sobre robótica com Arduíno=== |
| *29/Mai - '''Sumô''' | | ;Sensores: |
| | *[[Mídia:RoboticaSensores.pdf|Sensores e atuadores utilizados nos robôs]] |
|
| |
|
| ===Equipes e Orientadores===
| | ;Baterias: |
| ;Professores orientadores 2018: | | *[[Mídia:RoboticaBaterias.pdf|Baterias utilizados nos robôs]] |
| *[[Usuário:Evandro.cantu|Evandro Cantú]] (Coordenador) | | *[https://www.youtube.com/watch?v=_fT_W3AwIT8 Como recuperar baterias baixas] |
| *Jesus Segantine (Vice coordenador) | |
| *Charles Busarello (Colaborador)
| |
| *Donovan Zanone (Técnico)
| |
| | |
| ====Equipes Lego 2018====
| |
| ;Equipe 1 (MechCats RED):
| |
| :Joshua Binotto <br/> Luiz Henrique Rodrigues <br/> Rodrigo Leal <br/> Vitor Müller | |
| | |
| ;Equipe 2 (MechCats WHITE):
| |
| :Matheus Brustolin <br/> Pedro Henrique Fagundes <br/> Pedro Henrique Zucco <br/> Yan Diogo Marafon
| |
|
| |
|
| ;Equipe 3 (MechCats BLUE):
| | ==Seguidor de Linha com controle PID== |
| :Gabriel Felipe <br/> Guilherme Franchin <br/> Henrique Amaral
| |
|
| |
|
| ;Equipe 4 (MechCats YELLOW): | | ;[[Seguidor de Linha com controle PID]]: Página Wiki com resumo da '''Teoria de Controle PID''' e de uma forma de implementação deste tipo de controle em um '''Robô Seguidor de Linha'''. |
| :Marcela Kashima <br/> Gabriela Martins <br/> Luan Kelvin <br/>
| |
| | |
| ;Equipe 5 (MechCats PURPLE):
| |
| :Diogenes Matrakas <br/> Ricardo Torrez <br/> Wesley Pinto <br/> Saury Junior da Rocha | |
| | |
| ====Equipes Arduíno 2018====
| |
| ;Equipe 1:
| |
| :Micheli Trindade Moura <br/> Ana Carolina Freitas <br/> Deborah da Silva Rezende <br/> Hanna Caroline de Oliveira Schu <br/> Juliana de Souza Pereira
| |
| | |
| ;Equipe 2:
| |
| :Fernando Apolinário <br/> João Victor Oliveira <br/> Rafhael Pereira Zrenner
| |
|
| |
|
| ==Robótica com Lego Mindstorms== | | ==Robótica com Lego Mindstorms== |
| O '''[http://www.lego.com/en-us/mindstorms/ Lego Mindstorms]''' é uma linha do brinquedo LEGO, voltada para a educação tecnológica. É constituído por um conjunto de peças de montar da linha tradicional LEGO e peças especiais integradas com motores, eixos, engrenagens, polias e correntes, acrescido de sensores de toque, de intensidade luminosa e de temperatura, controlados por um processador programável. | | O '''[http://www.lego.com/en-us/mindstorms/ Lego Mindstorms]''' é uma linha do brinquedo LEGO, voltada para a educação tecnológica. É constituído por um conjunto de peças de montar da linha tradicional LEGO e peças especiais integradas com motores, eixos, engrenagens, polias e correntes, acrescido de sensores de toque, de intensidade luminosa e de temperatura, controlados por um processador programável. |
|
| |
|
| Neste projeto utilizaremos o módulo '''Lego NXT 2.0'''.
| | ;Projetos para Lego NXT 2.0: |
| | |
| ;Sites com projetos para NXT:
| |
| *[http://www.nxtprograms.com/projects2.html Projetos com Lego Mindstorms] | | *[http://www.nxtprograms.com/projects2.html Projetos com Lego Mindstorms] |
|
| |
|
| ;Software para módulo Lego NXT: O '''Lego NXT''' usa software proprietário que roda sobre a plataforma '''Windows''' da '''MicroSoft'''. | | ;Software para módulo Lego NXT: |
| | | *O '''Lego NXT''' usa software proprietário que roda sobre a plataforma '''Windows''' da '''MicroSoft'''. |
| ;Softwares Alternativos para Lego Mindstorms:
| | *O '''[[Enchanting e LeJOS|Enchanting]]''' (descontinuado) era uma adaptação da linguagem '''[[Scratch]]''', voltada para a programação dos módulos '''Lego NXT''', através da substituição do ''firmware'' original pelo sistema '''LeJOS''' (''Lego Java Operating System''). |
| :*[[Scratch]]: Linguagem de programação gráfica, baseada em blocos construtivos que lembra o brinquedo '''Lego'''.
| |
| :*[[Enchanting e LeJOS]]: O '''Enchanting''' é uma adaptação da linguagem '''Scratch''', voltada para a programação dos módulos '''Lego NXT''', através da substituição do ''firmware'' original pelo sistema '''LeJOS''' (''Lego Java Operating System'').
| |
| | |
| ==Robótica Livre com Arduíno==
| |
| | |
| A modalidade '''Robótica Livre''' permite que os robôs sejam construídos com materiais e componentes diversos e programados por qualquer sistema de microcontroladores, incluindo o Arduíno.
| |
| | |
| ;Materiais disponibilizados no Curso de Capacitação em Robótica organizado pelo IFPR: Ministrado pelo professor Marcos Dinís Lavarda (Campus Campo Largo)
| |
| *[[Mídia:RoboticaRegras.pdf|Regras das Competições de Robótica]]
| |
| *[[Mídia:RoboticaBaterias.pdf|Baterias utilizados nos robôs]]
| |
| *[[Mídia:RoboticaSensores.pdf|Sensores e atuadores utilizados nos robôs]]
| |
| | |
| ;Sites com materiais de apoio para controle dos motores:
| |
| *[http://www.dfrobot.com/wiki/index.php?title=Arduino_Motor_Shield_%28L298N%29_%28SKU:DRI0009%29 Wiki Arduino Motor Shield DFrobot]
| |
| *[https://cdn-learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf Manual Arduino Motor Shield ADAfruit]
| |
| *[http://blog.filipeflop.com/motores-e-servos/controle-motor-dc-arduino-motor-shield.html Exemplos de uso do Arduino Motor Shield ADAfruit]
| |
| *[https://www.arduino.cc/en/Reference/Servo Arduino Reference Servo]
| |
| *[https://www.arduino.cc/en/Reference/Stepper Arduino Reference Steeper]
| |
| | |
| ===Módulo Julieta===
| |
| | |
| O módulo Julieta é uma solução completa para criação de robôs móveis de pequeno porte que possui todos os componentes necessários para movimentar seu robô em uma única e compacta placa <ref>https://www.robocore.net/loja/produtos/julieta.html</ref>
| |
| | |
| Detalhes do '''hardware''' do módulo e exemplos de '''programas''' podem ser visualizados no site [https://www.robocore.net/loja/produtos/julieta.html '''Robocore/Julieta'''].
| |
| | |
| ===Seguidor de Linha com controle PID dos motores===
| |
| | |
| ;[[Sistemas de Controle]]: Teoria sobre Sistemas de Controle PID
| |
| | |
| Referências:
| |
| *http://labdegaragem.com/profiles/blogs/tutorial-rob-seguidor-de-linha-com-controle-pid-e-ajustes-por
| |
| *http://www.roboliv.re/conteudo/pid-controle-proporcional-integral-derivativo
| |
| *http://www.andrix.com.br/robo-seguidor-de-linha-utilizando-um-controlador-proporcional-derivativo-pd-com-arduino/
| |
| | |
| Artigos:
| |
| *http://www2.uesb.br/computacao/wp-content/uploads/2014/09/ROB%C3%94-SEGUIDOR-DE-LINHA-AUT%C3%94NOMO-UTILIZANDO-O-CONTROLADOR-PROPORCIONAL-DERIVATIVO-EM-UMA-PLATAFORMA-DE-HARDWARE-SOFTWARE-LIVRE.pdf
| |
| *http://sistemaolimpo.org/midias/uploads/230c61ca8833329f9ffc867a89566dcd.pdf
| |
| | |
| ==Programas==
| |
| | |
| ===Teste do sensor Infra Vermelho===
| |
| <source lang="c">
| |
| //Arduino Sensor Infra Red
| |
| int sensor = 0;
| |
| int leitura = 0;
| |
|
| |
| void setup()
| |
| {
| |
| pinMode(sensor, INPUT);
| |
| Serial.begin(9600);
| |
| }
| |
|
| |
| void loop()
| |
| {
| |
| leitura1 = analogRead(sensor);
| |
| Serial.print("Leitura: ");
| |
| Serial.println(leitura);
| |
| Serial.println();
| |
| delay(1000);
| |
| }
| |
| </source>
| |
| | |
| ===Teste do Motor Shield DFrobotic===
| |
| <source lang="c">
| |
| //Arduino Shield DFrobotic
| |
| //PWM Speed Control
| |
| | |
| int E1 = 5;
| |
| int M1 = 4;
| |
| int E2 = 6;
| |
| int M2 = 7;
| |
|
| |
| void setup()
| |
| {
| |
| pinMode(M1, OUTPUT);
| |
| pinMode(M2, OUTPUT);
| |
| }
| |
|
| |
| void loop()
| |
| {
| |
| int value;
| |
| for(value = 150 ; value <= 250; value+=10)
| |
| {
| |
| digitalWrite(M1,HIGH);
| |
| digitalWrite(M2, HIGH);
| |
| analogWrite(E1, value); //PWM Speed Control
| |
| analogWrite(E2, value); //PWM Speed Control
| |
| delay(30);
| |
| }
| |
| }
| |
| </source>
| |
| | |
| ===Teste do Motor Shield DKelectronics===
| |
| <source lang="c">
| |
| //Programa : Teste de motor DC12V com motor shield ponte H
| |
| //Autor : Equipe FILIPEFLOP
| |
|
| |
| #include <AFMotor.h>
| |
|
| |
| AF_DCMotor motor1(1); //Seleciona o motor 1
| |
| AF_DCMotor motor2(2); //Seleciona o motor 2
| |
|
| |
| void setup()
| |
| {}
| |
|
| |
| void loop()
| |
| {
| |
| motor1.setSpeed(255); //Define a velocidade maxima
| |
| motor2.setSpeed(255); //Define a velocidade maxima
| |
| motor1.run(FORWARD); //Gira o motor sentido horario
| |
| motor2.run(FORWARD); //Gira o motor sentido horario
| |
|
| |
| delay(5000);
| |
| motor1.setSpeed(0);
| |
| motor2.setSpeed(0);
| |
| motor1.run(RELEASE); //Desliga o motor
| |
| motor2.run(RELEASE); //Desliga o motor
| |
|
| |
| delay(5000);
| |
| motor1.setSpeed(150); //Define velocidade baixa
| |
| motor2.setSpeed(150); //Define velocidade baixa
| |
| motor1.run(BACKWARD); //Gira o motor sentido anti-horario
| |
| motor2.run(BACKWARD); //Gira o motor sentido anti-horario
| |
|
| |
| delay(5000);
| |
| motor1.setSpeed(0);
| |
| motor2.setSpeed(0);
| |
| motor1.run(RELEASE); //Desliga o motor
| |
| motor2.run(RELEASE); //Desliga o motor
| |
|
| |
| delay(5000); //Aguarda 5 segundos e repete o processo
| |
| }
| |
| </source>
| |
| | |
| ===Programa Seguidor de Linha V7 2017===
| |
| <source lang="c">
| |
| //Componentes: Motor Shield DKelectronics e sensor InfraRed
| |
| //Programadores: Eduardo Alexandre; Joabe; Evandro Cantu
| |
|
| |
| #include <AFMotor.h>
| |
|
| |
| AF_DCMotor motorEsq(2); //Seleciona o motor esquerdo
| |
| AF_DCMotor motorDir(1); //Seleciona o motor direito
| |
| | |
| int sensorEsq, sensorLinha, sensorDir, sensorFim;
| |
| int contFim = 4; //Conta marcas de início, fim e cruzamentos
| |
| boolean flag = false;
| |
| long tempoTotal; //Tempo total da volta
| |
| int tempoExtra = 2000; //Tempo extra após fim de pista
| |
| int velMin = 80, velMed = 120, velMax = 255; //Velocidades dos motores
| |
| int limiar = 500; //limiar do sensor de cor
| |
| | |
| void segueLinha(){
| |
| | |
| //le os sensores
| |
| sensorEsq = analogRead(5);
| |
| sensorLinha = analogRead(4);
| |
| sensorDir = analogRead(3);
| |
| sensorFim = analogRead(1);
| |
| | |
| //Se estiver na linha segue em frente
| |
| if (sensorLinha < limiar){
| |
| motorEsq.setSpeed(velMax);
| |
| motorEsq.run(FORWARD);
| |
| motorDir.setSpeed(velMax);
| |
| motorDir.run(FORWARD);
| |
| }
| |
|
| |
| //Se sensorDir acha linha vire para a direita
| |
| if (sensorDir < limiar && sensorLinha > limiar){
| |
| motorEsq.setSpeed(velMed);
| |
| motorEsq.run(FORWARD);
| |
| motorDir.setSpeed(velMin);
| |
| motorDir.run(BACKWARD);
| |
| }
| |
|
| |
| //Se sensorEsq acha linha vire para a esquerda
| |
| if (sensorEsq < limiar && sensorLinha > limiar){
| |
| motorDir.setSpeed(velMed);
| |
| motorDir.run(FORWARD);
| |
| motorEsq.setSpeed(velMin);
| |
| motorEsq.run(BACKWARD);
| |
| }
| |
| }
| |
|
| |
| void setup(){
| |
| }
| |
| | |
| void loop(){
| |
| | |
| //Segue linha até encontrar marca de fim de pista
| |
| while(contFim > 0){
| |
| segueLinha();
| |
| if (sensorFim < limiar)
| |
| flag = true;
| |
| if (sensorFim > limiar && flag == true){
| |
| flag=false;
| |
| contFim--;
| |
| }
| |
| }
| |
| | |
| //Segue linha por mais 2 segundos antes de parar
| |
| tempoTotal = millis();
| |
| while((millis() - tempoTotal) < tempoExtra)
| |
| segueLinha();
| |
| | |
| //Pára motores
| |
| motorDir.run(RELEASE);
| |
| motorEsq.run(RELEASE);
| |
| | |
| //Espera 10s
| |
| delay(10000);
| |
|
| |
| while(true);
| |
| }
| |
| </source>
| |
|
| |
|
| ==Referências== | | ==Referências== |