|
|
(44 revisões intermediárias por 2 usuários não estão sendo mostradas) |
Linha 7: |
Linha 7: |
| [[Arquivo:Robotica2018-2.jpg|200px]] | | [[Arquivo:Robotica2018-2.jpg|200px]] |
|
| |
|
| ;Modalidades: No Edital 06/2019 PROEPI a Olimpíada de Robótica do IFPR terá as seguintes modalidades: | | ;Modalidades: |
| *'''Seguidor de linha Junior''' (Lego) | | *Seguidor de linha Junior (Lego) |
| *'''Seguidor de linha Pro''' (Arduíno) | | *Seguidor de linha Pro (Arduíno) |
| *'''Resgate OBR''' (Lego e Arduíno) | | *Resgate OBR(Lego e Arduíno) |
| *'''Sumô 1 kg''' (Lego) | | *Sumô 1 kg (Lego) |
| *'''Mini Sumô 500 g''' (Arduíno) | | *Mini Sumô 500 g''' (Arduíno) |
|
| |
|
| ====Equipes Robótica Livre 2019==== | | ==[[Oficina_de_Robotica|Oficina de Robótica com Arduíno]]== |
| ;Equipe 1: Fares Josif Solibie <br/> Gabriel Felipe <br/> Guilherme Franchin <br/> Henrique Amaral <br/> Yan Diogo Mafafon
| |
|
| |
|
| ====Equipes Lego 2018====
| | 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'''. |
| ;Equipe 1: Juliana Kashina <br/> Rafael Mateus Techio <br/> Jhonatan Felipe dos Santos <br/> Augusto de Antoni Pavlak <br/> Antônio Carlos
| |
|
| |
|
| ;Equipe 2: Thalitah Lael Lerias <br/> Lucas Georgetti Pais de Oliveira <br/> Wesley Costa <br/> Agatha Isabelle Loreto Camara | | ===Materiais sobre robótica com Arduíno=== |
| | ;Sensores: |
| | *[[Mídia:RoboticaSensores.pdf|Sensores e atuadores utilizados nos robôs]] |
|
| |
|
| ;Equipe 3: Luiz Felipe Gomes de Oliveira Ramires <br/> Paule Sergio Godoi Portugal <br/> Estevão Henrique Danielli de Oliveirabr/> Guilherme Henrique Barros Fragoso Sobral | | ;Baterias: |
| | *[[Mídia:RoboticaBaterias.pdf|Baterias utilizados nos robôs]] |
| | *[https://www.youtube.com/watch?v=_fT_W3AwIT8 Como recuperar baterias baixas] |
|
| |
|
| ==Olimpíada Brasileira de Robótica - OBR== | | ==Seguidor de Linha com controle PID== |
|
| |
|
| ;[http://www.obr.org.br/wp-content/uploads/2018/03/OBR2018_MP_ManualRegrasRegional_v1Mar.pdf Regras Modalidade Prática] | | ;[[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'''. |
|
| |
|
| ==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==
| |
| | |
| ;[[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'''.
| |
| | |
| ==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== |