Kits Educacionais de Robótica
NASCIMENTO (2002) afirma que a robótica é uma área multidisciplinar que se vale dos conhecimentos de outras ciências para a criação do robô. Desta forma tem-se inerentemente um projeto interdisciplinar onde o aluno aplica de forma prática o conteúdo e pesquisa de acordo com sua necessidade e interesse. As ideias e pesquisas proporcionam a curiosidade pela investigação, o que leva ao desenvolvimento intelectual do aluno.
BACAROGLO (2005) também salienta que o importante dentro de uma dinâmica de trabalho com alunos em uma aula de robótica é criar condições para discussão e promover abertura, de modo que todos os alunos e professores participem apresentando sugestões na resolução dos problemas.
Destaca também a importância de se criarem problemas para serem solucionados, pois as dificuldades servem para explorar a capacidade do aluno.
Podemos ainda sintetizar os principais estímulos obtidos através desta pratica pedagógica (ROBÓTICA EDUCACIONAL, 2006):
| 1 – Desenvolvimento do raciocínio e lógica na construção de protótipos que simulem a realidade; |
| 2 – O desenvolvimento de aspectos ligados ao planejamento e organização de projetos; |
| 3 – Capacidade de análise no estudo de engrenagens e sistemas complexos de modo a compreender o seu funcionamento; |
| 4 - A criatividade na produção dos robôs; Capacidade de solução de problemas; |
| 5 - A autonomia; |
| 6 - Cooperação. |
Um projeto, denominado FIRST, constitui uma competição internacional de robótica destinada a inspirar os alunos do Ensino Médio a seguirem carreiras em ciência e tecnologia. Através de um desafio realizado anualmente, os alunos (em equipe) projetam robôs para competir com outras equipes de todo mundo. Observa-se que cada um dos trabalhos citados utiliza uma abordagem diferente de ensino, no entanto, possuem o objetivo comum de utilizar a Robótica como instrumento que pode despertar o interesse pela área tecnológica (BUCKHAULTS, 2009).
Ao contrário do que muita gente pensa, a empresa Lego não é de origem Norte Americana e, sim Dinamarquesa. Em uma breve pesquisa é possível identificar fatos históricos do nascimento desta empresa internacional. O início de tudo se deu por volta do ano de 1932 quando um humilde carpinteiro Dinamarquês de nome Ole Kirk Christiansen que em função de seus filhos começou a fabricar carrinhos de madeira e, posteriormente tais carrinhos de brinquedo transformaram-se em uma empresa que só a partir de 1934 passou a ser chamada de LEGO, que teve origem nas palavras "legt" e "godt", traduzindo-se em "Brincar Bem".
2.2 O KIT LEGO MINDSTORMS NXT 2.0
A Lego é conhecida mundialmente pelo desenvolvimento de brinquedos educativos de montar por blocos. Esses kits são constituídos de diversas peças que se encaixam para formar personagens, temas, estruturas, etc. Em parceria com o MIT (Massachusets Institut Tecnologic) a Lego desenvolveu um kit robótico para incentivar e difundir o ensino da robótica para o público juvenil.

Figura 2 - Kit educativo Lego Mindstorms NXT 2.0.
O princípio da Lego é incentivar a montagem do kit pelos usuários. O kit Mindstorms NTX 2.0 proporciona a montagem de alguns robôs inicialmente projetados, porem um ponto alto do kit é a versatilidade na montagem, que proporciona o desenvolvimento da criatividade e possibilidade de montagem de projetos.
O kit Lego Mindstorms NXT 2.0 é composto de 619 partes encaixáveis, um modulo programável NXT, sensores, servo motores, cabos flexíveis. A essa variedade de peças podemos dar margem a criatividade e imaginação para darmos vidas aos mais diferentes robôs com as mais variadas funções. Nos próximos tópicos conheceremos mais a fundo o kit e poderemos dar asas a imaginação.

Figura 3 - Robô de esteira Lego Mindstorms
Assista ao vídeo sobre 4 tipos de montagens muito utilizadas utilizando kit Lego Mindstorms NXT 2.0:
https://www.youtube.com/embed/85kI6oBSXHY
2.3 CONHECENDO AS PARTES INTEGRANTES
O kit Lego Mindstorms NXT 2.0 é composto de:
| • 619 partes de encaixe, |
| • Bloco NXT programável, |
| • Sensor ultrassônico, |
| • Sensor de cor, |
| • Dois sensores de toque, |
| • Três servo motores, |
| • Cabo usb paralelo, |
| • 7 cabos flat, |
| • Tablado de teste, |
| • Cd de Instalação, |
| • Manual. |

Figura 4 - Kit completo Lego Mindstorms NXT 2.0
Será descrito detalhadamente cada parte integrante bem como seu funcionamento e suas interações entre eles. A alimentação do bloco programável NXT é feita por seis pilhas AA 1,5V, podendo também utilizar pilhas recarregáveis de 1,2 V ou baterias apropriadas vendidas pela Lego como acessórios.
"Um cuidado importante ao usarmos pilhas recarregáveis é verificarmos sempre a tensão das mesmas, pois como a tensão resultante é inferior a das pilhas não recarregáveis a autonomia do módulo fica reduzida. Outra precaução é usarmos sempre todas as pilhas do mesmo tipo, ou seja, ou usamos todas as baterias recarregáveis ou somente pilhas comuns, não usando ao mesmo tempo pilhas e baterias recarregáveis ao mesmo tempo, pois isso pode ocasionar danos ao módulo NXT."
2.3.1 Sensores
Basicamente um sensor é um equipamento que converte um sinal mecânico (como um toque, som, movimento) ou informação (luz, cor) em um sinal elétrico 'legível' que possa ser interpretado pelo modulo NXT.
Com base nessas informações captadas pelos sensores podemos interpretar e programar decisões de acordo com a intenção e funcionalidade do nosso robô, por exemplo: caso o robô se aproxime de um obstáculo, o sensor de proximidade, ou ultrassom, pode nos informar a que distancia ele está e de acordo com as informações dos motores podemos saber sua localização, seu posicionamento espacial e programarmos o robô para desviar do obstáculo facilmente.
Essa é apenas uma das utilizações que podemos aplicar o uso dos sensores. Uma aplicação bastante desafiadora desenvolvida recentemente é a solução de um brinquedo chamado 'cubo mágico' que consiste em uniformizar as cores das seis faces de um cubo.
Assista ao vídeo Solução do cubo mágico em 5 segundos utilizando o kit Lego Mindstorms NXT 2.0
http://www.youtube.com/embed/rbh1TtwSxMk
2.3.2 Sensor de toque
Esse sensor (Figura 5) reage a pressão exercida nele. De acordo com a funcionalidade ele reage quando pressionado, quando liberado ou a um clique rápido. Essa versatilidade permite uma ampla utilização do sensor nas mais diversas montagens.
2.3.3 Sensor de luminosidade e Cor
Esse sensor (Figura 6) consegue captar a intensidade luminosa e transformar em sinais elétricos. Seu mecanismo de funcionamento consiste em, primeiro, pela recepção de diferentes intensidades luminosas que identificam para o sensor o quanto está claro ou escuro e segundo que no próprio sensor existe um emissor de raios infravermelho que são emitidos e ao serem refletidos pelo objeto ou superfície são captados identificando assim, por exemplo, um segmento de referência cor preta conforme figura 7.

Figura 6 - Sensor de luminosidade e cor
Esse sensor é capaz de identificar diversos espectros de cores, bem como posteriormente podemos emitir um feixe luminoso colorido. A luz basicamente é uma onda eletromagnética, sendo que cada cor possui uma intensidade energética diferente, ou seja, as cores mais avermelhadas são mais 'energizadas' que as cores mais frias, ou azuladas. Nosso sensor consegue medir essa intensidade energética diferenciando assim cada cor. O sensor de luminosidade também é utilizado como sensor de cor.

Figura 7 - Segmento de Referência
Assista ao vídeo Segmento de referência:
http://www.youtube.com/embed/h_eChYml4nM
2.3.4 Sensor de som
Assim como a luz, as ondas sonoras também são portadoras de energia, mas diferentemente da luz, o som não possui característica de onda eletromagnética, e sim mecânica. Ao falarmos, por exemplo, emitimos diferentes ondas carregadas com diferentes quantidades de energia, os sons, em geral são basicamente ondas mecânicas. Com o sensor sonoro (Figura 8) consegue-se identificar os diferentes sons, por exemplo, um comando de voz como 'SIGA' porque nesse som existe uma onda com diferente quantidade de energia. Ao gravarmos o comando 'SIGA' o NXT (modulo programável) compara o comando que foi recebido pelo sensor com o que foi gravado, se houver uma semelhança mínima legível o robô executa a ação.

2.3.5 Sensor ultrassônico
Esse sensor (Figura 9) é um dos principais componentes do nosso Kit. O sensor ultrassônico possibilita a identificação de obstáculos, medir distâncias, mirar em objetos para lançar bolas, percorrer labirintos, etc. Ou seja, as possibilidades são tantas quantas a nossa imaginação mandar. Assim como o sensor de luminosidade e sonoro, o sensor ultrassônico é um misto desses dois equipamentos. Ele emite uma onda ultrassônica que ao bater em algum obstáculo é refletido e retorna para o sensor, de acordo com o tempo que a onda demora para ser transmitida e recebida, é calculado a distância do obstáculo. Esse é o mesmo princípio que os morcegos e os submarinos usam para se localizarem.

Figura 9 - Sensor ultrassónico
2.4 SERVO MOTORES
São motores elétricos, porém com um diferencial, são capazes de identificar a posição que o eixo se encontra, bem como podemos acioná-lo por uma quantidade precisa de rotações ou sermos mais precisos ainda fazendo com que o eixo se movimente por uma quantidade precisa de graus em relação ao centro. Isso se deve a um sistema de engrenagens e sensores internos que possibilitam essa alta precisão.

Figura 10 - Servo motor com suas engrenagens internas
2.5 MÓDULO PROGRAMÁVEL NXT
Pode-se dizer que o módulo programável (Figura 11) é o coração e o cérebro do kit Lego NXT. Nele é onde grava-se os programas e é ele que executa o controle dos motores e interpreta os sinais recebidos dos sensores para executar as ações previamente programadas.
Possui uma entrada USB paralela, três entradas independentes para cada motor e quatro entradas para os respectivos sensores. É alimentado por seis pilhas AA 1,5V podendo também utilizar pilhas recarregáveis AA 1,2V (como a tensão é menor devemos ficar atento ao nível de carga indicado pelo NXT) que são colocadas retirando a parte posterior do NXT, tomando cuidado com a correta polaridade das pilhas.
O módulo possui um menu interno bem interativo e de fácil manuseio. Sua frente possui quatro botões sendo dois para navegação lateral no menu, um botão de ENTER e outro BACK. Em um momento posterior iremos detalhar melhor seu funcionamento.

Figura 11 - Módulo programável NXT, o "cérebro" do kit
A instalação do software Lego Mindstorms é bem fácil e intuitiva. Segue abaixo os passos para a correta instalação. Após inserirmos o CD de instalação, devemos executar o programa de instalação a partir do Windows Explorer e clicaremos no SETUP da unidade de CD-DVD a tela abaixo será apresentada.
Segue abaixo a sequência de telas de instalação do software Lego Mindstorms NXT 2.0. Devemos selecionar o idioma que mais nos familiarizamos e sempre clicarmos em "Next" até concluirmos a instalação.

Tela inicial de instalação do software Lego.

Softwares e pacotes a serem instalados

Termo de contrato e licença, clicar em "I accept ...".

Tela final de instalação
O processo de instalação está contido nesse material a efeito ilustrativo, sendo de fácil entendimento e intuitivo, dispensável para o usuário aluno e provavelmente já fornecido instalados nos computadores a serem utilizados no curso.
4.1 Visão Geral
Depois de instalado o software, um atalho do mesmo ficara disponível na área de trabalho do usuário, para iniciarmos o programa basta darmos dois cliques no mesmo.

Figura 18 - Atalho Lego Mindstorms NXT 2.0.
Após iniciarmos o programa será apresentada a tela inicial.

Figura 19 - Tela inicial do software
Na tela inicial temos a possibilidade de criarmos um novo programa em "Create new program" e depois é só salvar. Caso já tenhamos um programa que esteja salvo no computador e que estivemos trabalhando recentemente podemos abri-lo na parte "Open". Todos os outros menus de contexto que estão não tela também estão disponíveis para o usuário como em "File", "Edit", etc.
Também na tela inicial existe uma guia rápida para montagem de robôs previamente desenvolvidos pela Lego. No nosso curso usaremos como objeto de estudo o veículo de esteira e baseado nele executaremos nossas atividades.
Existe um guia prático de montagem desse modelo detalhadamente no software, por esse motivo não abordaremos o processo de montagem, ficando a cargo de aluno ser acompanhado pelo instrutor sua montagem correta.
Podemos definir um nome para nosso programa ou simplesmente clicarmos em "Go>>", como explicado anteriormente, para darmos início a programação. Na tela seguinte, temos a área de trabalho com a descrição básica de seus componentes em vermelho.
.jpg)
Figura 20 - Área de programação do lego NXT
4.2 Paleta de controles
Na tabela abaixo temos uma descrição mais detalhada da paleta de controle completa, com seus grupos principais e submenus que serão usados no desenvolvimento dos nossos programas. Não serão detalhadas todas as ferramentas, para não estendermos muito o conteúdo desse material, porém explicaremos os comandos mais usados na maioria das aplicações. Para exibirmos as ferramentas (ou objetos) que estão contidas em cada grupo de programação devemos posicionar o cursor do mouse em cima do grupo pretendido que ele se expandirá e exibirá seus submenus, a partir daí, simplesmente clicamos e arrastamos para a área de programação, na parte de início dos programas, como mostrado na figura 21. Os objetos ficarão ligados uns aos outros em uma sequência direta de execução, sendo que uma ação será feita após a outra que esteja encadeada (JUNIO et al, 2013).
Os objetos somente serão executados se estiverem ligados em sequência, ou seja, mesmo que se coloque um comando na área de programação, se esse não estiver conectado na sequência com outro comando ou no início (start), não será executado.
A seguir será apresentada a Paleta completa de comandos


A seguir será exemplificado o Bloco move da Paleta common (comandos comuns).

Figura 22 - Paleta common (comandos comuns) expandida
Common: Nesse grupo encontram-se os blocos da paleta comum, que são os mais utilizados geralmente em um programa. Com eles podemos acionar os servo-motores, criar algumas repetições, usar o display do NXT para apresentar valores, dentre outras aplicações. Ex: Move Block, Loop Block, etc (JUNIO et al, 2013).


23 - Bloco move
O Move serve para girar os servo-motores em sentido horário ou anti-horário, e dessa forma, fazer com que seu robô ande para frente ou para trás em uma linha reta, ou girar para poder fazer uma curva. Você pode também definir a distância percorrida pelo seu robô através da configuração de duração do movimento.

24 - Paleta de configuração do bloco move
A seguir será detalhada a Paleta de configuração do bloco move (JUNIO et al, 2013).
1. Seleciona os motores que você quer controlar. Caso você selecione dois ou mais motores, eles se moverão em sincronia;
2. Escolhe o sentido de giro do motor (Horário ou anti-horário), ou informa para ele parar. Selecionando Pare (Stop) irá desligar os motores;
3. Caso você esteja usando dois ou mais motores para controlar um veículo, um de cada lado, a configuração Steering estará disponível. Ela serve para controlar a potência oferecida aos dois sensores de forma automática. Ao deslizar o botão, o motor da esquerda ou da direita receberá mais ou menos potência, o que é útil para fazer curvas;
4. Regula o nível de potência dada para os motores, de 0 a 100%;
5. Escolhe de qual forma será controlada a Duração do movimento do robô (por rotações do motor, por graus de giro, segundos decorridos ou de forma infinita). Controlando a duração do movimento, é possível controlar a distância percorrida pelo robô.
6. Escolhe a próxima ação do seu robô (após a duração do movimento ser respeitada). Os motores podem frear (Brake) ou estacionar (Coast). O comando Brake faz com que o motor pare com mais precisão. Ele também gasta mais energia, visto que realmente trava as engrenagens do seu motor. Já o comando Coast para os motores mais suavemente.
7. As três caixas de feedback fazem a contagem dos graus de giro ou rotações dadas pelo motores em tempo real, com o programa rodando, mas ainda ligado ao computador pelo cabo USB. Aperte o botão reset para zerar os valores exibidos.
Consulte os textos:
NUNES,J.E.A; DA SILVA,J.H.J; BOUÇAS,M.V;DE OLIVEIRA,S.R:Apostila de Robótica Educacional, Versão 1.0, Niterói, Rio de Janeiro, Universidade Federal Fluminense, TEE – Departamento de Engenharia Elétrica - Programa de Educação Tutorial da Engenharia Elétrica – PET-Elétrica, 2013. Disponível em: http://www.peteletrica.uff.br/wp-content/uploads/2013/08/Apostila-Rob%C3%B3tica-Educacional.pdf.
MINDSTORMS education. Manual do NXT 2.0. Disponível em: http://www.inf.furb.br/~aureliof/downloads/ManualNXT.pdf
4.3 Blocos de programação
O software do kit Lego tem o objetivo de ser simples, fácil e intuitivo, pois se destina a jovens acima de dez anos de idade. Para isso o modelo de programação recorre a um misto de conceitos básicos, como programação orientada a objeto, e outro conceito seria a programação estruturada.
Todos os sensores, motores e ações do robô foram transformados em blocos, como os descritos no tópico acima, ou seja, foram transformados em um bloco equivalente ao objeto físico do kit. As configurações básicas daquele objeto, por exemplo, um motor, como sentido, potência, direção se tornaram configuráveis no bloco de programação. Isso facilita muito para o usuário, pois não é necessário saber nenhuma linguagem de programação especifica para programar as ações do robô. Outro ponto positivo é a facilidade visual de poder tratar objetos físicos como se fossem objetos virtuais na área de programação, tendo as funções mais usadas de fácil acesso e podendo ser configurado com um simples clique do mouse.
O fato de os objetos serem dispostos encadeados na área de programação possibilita que as ações sejam executadas sequencialmente, em fila, como se estivessem montadas em uma estrutura, daí o nome linguagem estruturada. Na linguagem estruturada as ações são executadas em fila, e um comando só é executado após o termino do comando anterior. Isso facilita a programação, pois o usuário só precisa se preocupar com uma sequência lógica, sem se preocupar com os possíveis caminhos que o programa pode tomar.
Segue abaixo os principais blocos de programação bem como uma breve descrição de suas funcionalidades.
O bloco de Movimento (Move): Faz com que o Motor do seu robô se mova.
Bloco para Registrar/Fazer a leitura (Record\Play): O bloco para Registrar/Fazer a leitura permite a você programar o robô com movimentos físicos – e mais tarde realizar novamente o movimento em qualquer lugar do programa.
Bloco do Som: O bloco de Som permite a seu robô criar som, incluindo palavras pré-registradas.
Bloco de Espera (Wait): O bloco de Espera faz seu robô aguardar para uma entrada de sensor, assim como o som ou intervalo de tempo.
Bloco de ciclo (Loop): Use o bloco de Ciclo, se deseja que seu robô continue a fazer as mesmas coisas sempre, assim como ir para frente e para trás até que o Sensor de Toque seja pressionado. Equivalente em programação ao comando "While". Esse bloco resulta em uma ação em Loop, ou seja, será executada até que a condição de parada seja satisfeita.
Bloco do Monitor: O bloco do Monitor permite que controle o monitor no NXT. Você pode digitar, mostrar ícones ou mesmo arrastar através do seu programa.
Bloco de Comutação (Switch): O bloco de Comutação permite que o robô tome suas próprias decisões, assim como ir para a esquerda quando ouve um som alto evirar à direita quando ouvir um som baixo. Equivalente ao comando "If"(Se) e "Else-If"(Senao-Se). É uma maneira de fazer uma pergunta ao robô e dependendo da resposta o robô tomara a decisão proposta no programa.
Após construirmos nosso programa, devemos gravar no modulo NXT, fazendo o download das informações para o mesmo. Devemos seguir os seguintes passos:
Certifique-se que o programa esteja salvo, nomeado de maneira fácil. O nome não deve ser extenso. Para salvarmos devemos clicar no ícone mostrado na figura.

Figura 32 - Salvando o programa.
Depois de salvo nosso programa, devemos conectar o cabo USB no modulo.


Figura 34 - Botão Download para gravar as informações
Na gravação, aparecerá uma janela de comunicação informando o status do processo, algum possível erro e a finalização e o pronto uso para teste. É possível executar os programas com o NXT conectado ao computador, porém não é aconselhado para evitar acidentes e danos ao robô.
Feito o processo de gravação do modulo NXT devemos executar nosso programa gravado. Alguns passos devem ser seguidos:
Devemos nos certificar que as pilhas ou baterias estão instaladas corretamente, tomando os cuidados abordados anteriormente no nosso material.

Ligar o modulo NXT. Para isso pressionamos o botão central até identificarmos o seu funcionamento.

Através do menu do NXT navegaremos nas setas laterais da parte frontal conforme as imagens abaixo. Caso acessemos um menu indevidamente, o botão quadrado abaixo do botão On/Off serve para voltarmos para o menu anterior. Se mantivermos o botão quadrado pressionado por mais tempo, será disponibilizado a opção para desligar o NXT.

Uma vez no menu "NXT file", devemos procurar o arquivo que foi salvo anteriormente e enviado para o NXT. Devemos ter o cuidado de sempre atualizarmos o programa ao enviarmos para o NXT e salva-lo com um nome de fácil identificação e preferencialmente o mais curto possível, pois nomes extensos não serão mostrados por completo devido ao tamanho reduzido do display.
Após identificarmos nosso arquivo, devemos mais uma vez pressionarmos o botão de On/Off. No menu seguinte serão dadas algumas opções, como deletar o arquivo, executar o arquivo, "Run". Devemos ter o cuidado de executar o programa em local seguro, por exemplo, evitarmos executar em cima de uma mesa ou bancada ocasionando acidentes de queda ou quebra do equipamento.
Assista ao vídeo Aprendendo a programar no LEGO usando os motores B e C:
http://www.youtube.com/embed/wpdS488Ve1E
Assista ao vídeo Aprendendo a programar no LEGO: Looping
http://www.youtube.com/embed/PXyFzU8YDVk
Recentemente a Lego lançou no mercado seu novo produto na versão MINDSTORMS EV3, o novo design do brinquedo traz funções robóticas para uma nova geração acostumada com as novidades tecnológicas.
Com já era de se esperar, a nova versão em relação as anteriores aumenta a capacidade de memória e o processamento de sua CPU, possibilitando configurações e programações mais rápidas e avançadas. O modelo vem equipado com sensores de cor e som capazes de identificar melhor o ambiente e a distâncias dos objetos dando uma noção espacial as funções programáveis. O EV3 se comunica fácil com outros dispositivos controladores, via wireless e/ou bluetooth com sistemas Android e iOS pode ser remotamente controlado por esses sistemas. A figura 38 ilustra o lego humanóide.

Figura 38 - Divulgação da Lego do Kit Mindstorms EV3
7.1 O Kit LEGO- Características Técnicas
Versaremos nesse ponto uma linguagem mais técnica a fim de conhecer melhor o equipamento Mindstorms EV3 para melhor compararmos e associarmos a Educação como propõe esse projeto, as características técnicas auxiliarão no dimensionamento melhor das atividades a serem propostas, pois se faz necessário conhecer e dominar não só as ferramentas disponíveis como motores, sensores, chassi e CPU como a linguagem de programação fornecida pela fabricante Lego Group.
O novo KIT LEGO MINDSTORMS vem com um processador 10 vezes mais rápido do que o modelo anterior da linha MINDSTORMS, o que permite que o brinquedo controle muito mais peças e sensores ao mesmo tempo. O novo sistema conta também com memória RAM de 64 MB e memória de armazenamento de 16 MB. Também traz sensores que ajudam o robô a se locomover de forma autônoma. Os sensores infravermelhos de proximidade permitem que os robôs sigam, ataquem ou corram de objetos que encontrem no caminho. Peças de tijolo com giroscópios podem ser adquiridas separadamente pelos donos para dar mais equilíbrio ao brinquedo. Além de um bom processador e sensores o kit do EV3 vem com três motores para realizar as principais funções de movimento do robô. Dois motores servem especificamente para mover as peças – braços, pernas e tentáculos dos modelos construídos. O terceiro motor é dedicado a ações mais específicas, como disparar munição. A comunicação com o bloco de construção principal, com o processador do brinquedo, vem equipado com Bluetooth para conectar o robô com dispositivos móveis. Há apps para iOS e Android para controlar e programar o brinquedo remotamente. Além disso, é possível comunicar o equipamento através de uma rede WiFi.
Para que seja possível a montagem do LEGO MINDSTORMS EV3, apresentamos nas figuras 39 e 49: principais componentes, como 01 CPU (Central de Unidade de Processamento), 02 atuadores phantom (Motores), 01 sensor de cor, 01 sensor de distância, 01 controle remoto, 01 motores simples; Conjunto de peças unitárias e Conjunto de peças completas.

Figura 39 - Principais componentes do Kit Mindstorms EV3

Figura 40 - Conjunto completo com todas as peças do Kit Mindstorms EV3
7.2 Linguagem de programação LEGO
Para a maioria das pessoas que fazer uso desse equipamento que tem em seu DNA um brinquedo, a comunicação entre o software e o equipamento deve ser fácil haja visto que a manipulação é lúdica, o software é fornecido gratuitamente pela Lego Group com características de programação simples e autoexplicativas, permitindo assim ao usuário saber o que uma determinada função é capaz de fazer antes da execução pelo Mindstorms EV3. Abaixo segue figura ilustrativa da tela inicial do Software.

Figura 41 - Tela inicial do software fornecido pela LEGO
Assista ao vídeo sobre o Lego EV3:
http://www.youtube.com/embed/qzOza1fO9_8
Assista ao vídeo programando no Lego EV3:
http://www.youtube.com/embed/iLwxWFavn6U
Consulte Guia do Usuário do Lego EV3 disponível em:
Para darmos instruções às maquinas, necessitamos primeiramente 'falar' a língua delas, ou seja, usar linguagens de programação próprias para cada tipo de máquina, ou hardware.
Assim como existem vários idiomas que nos permitem ter uma grande diversidade de palavras e comunicação entre diferentes povos, para as maquinas o raciocínio é análogo, ou seja, existem muitas linguagens de programação nos mais diferentes níveis de complexidade e interação com o hardware, como as linguagens de baixo nível, Assembler de menos facilidade, até as de alto nível que se distanciam do hardware e se tornam mais fáceis para o programador, como Java.
No nosso caso, usaremos uma IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Integrado) própria da Lego que trata os sensores, motores e peças em geral como objetos representados por figuras. Cada objeto fica disponível em uma paleta lateral organizados por funcionalidades e facilmente acessados com o ponteiro do mouse.
Após selecionarmos os objetos (motores, sensores, etc) ao clicarmos individualmente em cada, poderemos configura-lo de modo a responder de acordo com nosso interesse. Para usarmos os diversos componentes é simples, somente temos que liga-los de maneira seguida.
Também dispomos de elementos comuns a muitas linguagens de programação como loops, criticas, laços, break, etc. Mais à frente daremos noções básicas sobre alguns comandos úteis que servirão para uma grande gama de aplicações.
8.1- Críticas (If, Else, ElseIf)
No nosso ambiente do software da Lego não programaremos, a priori, diretamente com uma linguagem escrita diretamente, e sim com símbolos que representam os comandos. Um comando de crítica simboliza uma pergunta que pode ter duas respostas, uma negativa e outra afirmativa.
Por exemplo, caso o veículo se aproxime de um obstáculo, o programa fará uma crítica, ou pergunta para o sensor: "Você está acionado?". Caso o sensor esteja o programa deverá contemplar uma ação, exemplo, parar o veículo, caso não, o carro continuará em frente.
Este tipo de pergunta é feito com um bloco de programação visto anteriormente, bloco de comutação Switch.

Figura 42 - Bloco de comutação. Equivalente ao "IF".
Após selecionarmos esse bloco, o mesmo fica disponível na área de programação da seguinte maneira. Lembrando que os comandos somente serão executados se estiverem na linha de execução da área de programação.

Figura 43 - Bloco de comutação expandido
Podemos observar que quando o bloco está expandido aparecem dentro dele duas sequencias de execução, a superior é efetuada caso a crítica que o bloco representa seja satisfeita, ou seja, o caso de, "Se a minha condição for feita, faça isso". Na figura temos o exemplo do sensor de toque, caso o sensor esteja pressionado, ele executa a linha superior. Se o sensor for pressionado e liberado, ele executara a linha de comando inferior.
Abaixo veremos como programar o bloco de comando Switch.

Figura 44 - Programando o bloco switch.
| 1. Tipo de entrada: Pode ser um sensor ou um valor oriundo de alguma resposta ou operação logica de alguma outra parte do programa. |
| 2. Tipo de sensor: Todos os sensores podem ser usados nesse bloco de programação. Neste caso usaremos o sensor de toque. Esse bloco é adaptado para o tipo especifico de sensor. |
| 3. Tipo de visualização do bloco na área de programação: Pode ter uma aparência reduzida ou expandida como mostrado na figura anterior. Em programas muito extensos essa função reduz o tamanho do bloco e melhora o aproveitamento da área de programação: |
| 4. Porta de entrada. Existem quatro portas de entrada de sensores onde são conectadas no modulo NXT. |
| 5. Action: Ação a qual será testada pelo bloco de programação. No caso da figura, temos três possibilidades, o sensor ser pressionado, ser liberado, ou ser dado um toque. Para os três caso, o sensor executara o que for assinalado nessa área. |
Vale lembrar que esse bloco de programação se modifica de acordo com o sensor ou valor selecionado. Caso o sensor de luminosidade seja testado, outras configurações ficam disponíveis para configurar. Porem todas as configurações dos outros sensores são intuitivas e fáceis de configurar.
8.2 Laços/ Loop's
Os laços de programação são instruções que ficam sendo executadas continuamente até que a condição de parada ou quebra do loop seja atendida. Por exemplo, se quisermos que o nosso robô sempre siga uma faixa escura pintada no chão, temos que colocar as instruções de teste dentro de um loop, pois o veículo terá que testar continuamente se está seguindo a lista. Se fizermos um programa que faz o robô desviar de objetos em seu caminho, o programa terá sempre que testar se existem obstáculos para desviar. Ou seja, a maioria dos programas que são executados por tempo indeterminado, ou que sempre devem verificar uma condição para seu comportamento, devem estar contidos dentro de um loop's de programação.

Figura 45 - Bloco de comando Loop.
| 1. Tipo de loop: Representa a condição de parada do loop. É o tipo entrada que será testado. Pode ser um sensor, um valor oriundo de outra parte do programa, infinito (forever), por tempo, por quantidade de vezes que ele será executado ou uma condição logica determinada por outra parte do programa. |
| 2. Tipo de sensor: A resposta do sensor pode ser a condição de parada, ou quebra, do loop. Nessa imagem temos que se o sensor de toque for pressionado, o loop será parado. Todos os sensores podem ser usados no comando loop. |
| 3. Contador: Informa quantas vezes o loop foi executado. Essa resposta pode ser utilizada em outros comandos no mesmo programa. |
| 4. Porta de entrada. Existem quatro portas de entrada de sensores onde são conectadas no modulo NXT. |
| 5. Action: Ação a qual será testada pelo bloco de programação. No caso da figura, temos três possibilidades, o sensor ser pressionado, seja liberado, ou seja, dado um toque. Para os três caso, o sensor executara o que for assinalado nessa área. |
Vale lembrar que esse bloco de programação se modifica de acordo com o sensor ou valor selecionado. Caso o sensor de luminosidade seja testado, outras configurações ficam disponíveis para configurar. Porem todas as configurações dos outros sensores são intuitivas e fáceis de configurar.
Outra característica desse bloco é que o restante do programa só será executado após a saída do loop. Devemos ter cuidado ao usar esse controle, pois se a condição de parada não for bem definida, ou não puder ser satisfeita, o comando será executado indefinidamente, o que chamamos de loop infinito.
Os comandos descritos acima podem ser utilizados livremente, desde que se respeite a lógica de programação explicada acima. Blocos de programação podem ser utilizados de outros blocos, bem como a combinação entre eles é livre.
Devemos ter atenção ao usarmos o comando loop, pois se tivermos muitos comando encadeados, ou internos de outros loops, o processamento do NXT ficará lento e a lógica de programação será de difícil entendimento.
Neste tópico abordaremos os principais sensores que são utilizados na maioria das aplicações básicas. Existem várias maneiras de usarmos os sensores, porem para efeitos práticos e para facilitar o aprendizado, utilizaremos a maneira associada aos blocos de programação vistos anteriormente.
Os sensores abordados mais a fundo são os sensores de toque, ultrassônico e de luminosidade/cor. Com esses sensores podemos fazer vários tipos de montagens, dentre elas temos quatro abordadas mais à frente no material juntamente com algumas atividades propostas.

Figura 46 - Sensor de toque, luminosidade/cor e ultrassônico.
9.1 Sensor de toque
O sensor de toque funciona como um interruptor, botão ou botoeira de acionamento elétrico. Com ele podemos identificar obstáculos, acionar ou desligar os motores, etc. Uma aplicabilidade pratica desse tipo de sensor é, por exemplo, em elevadores. Quando está acionado indica que o elevador está parado em um determinado andar, quando não indica que o elevador está em movimento. São inúmeras as aplicabilidades.
Primeiramente devemos escolher que tipo de bloco de programação devemos utilizar, switch ou o loop, abordados anteriormente. Esse sensor é compatível com esses dois blocos como também pode ser utilizado de maneira independente, mas para facilitar o aprendizado, utilizaremos o mesmo em conjunto com esses blocos. Para efeito didático usaremos o bloco Loop, pois o Switch foi abordado anteriormente.

Figura 47 - Paleta de controle do comando Loop.
Primeiramente devemos selecionar o comando loop, como demonstrado na figura acima. Esse comando vem por padrão em loop infinito, ou seja, a repetição ocorre indefinidamente. Para configurar o sensor de toque como condição de parada, devemos clicar no comando na área de programação, assim sua paleta de configuração ficará disponível.

Figura 48 - Seleção do tipo de parada do loop.
Na opção "control", devemos selecionar "sensor". Após essa seleção, a paleta de configuração do loop se modificará para as configurações dos sensores. Nessa nova paleta devemos escolher o sensor de toque, "Touch Sensor", esse sensor é pré-definido originalmente.

Figura 49 - Paleta de configuração do sensor de toque.
Nessa paleta podemos configurar, como explanado anteriormente com mais detalhes, a porta de entrada de conexão, o acionamento e a ação que determina o fim do loop.
9.2 Sensor ultrassônico
Os procedimentos inicias descritos acima para a seleção do sensor de toque se aplicam para o sensor ultrassônico, porem se diferenciam na seleção do sensor e nas configurações como mostrado abaixo.

Figura 50 - Paleta de configuração do sensor ultrassônico.
Define a entrada do sensor no modulo NXT. Um cuidado que devemos ter quando trabalhamos com mais de um sensor é definirmos atenciosamente que porta de entrada que estamos trabalhando para não haver contratempos.
Nesse sensor é possível configurarmos se queremos que ele identifique distancias menores que as que programamos, ou seja, se ele se aproximar a uma distância inferior da que planejamos ele quebrará o loop, ou a distancias maiores que definimos.
Pode ser em centímetros, polegadas. Devemos ficar atentos, pois por padrão é configurado em polegadas (padrão inglês/americano), porem o nosso padrão é em centímetros.
9.3 Sensor de luminosidade/cor
Os procedimentos de seleção do sensor descritos acima se aplicam ao sensor de luminosidade/cor, por isso mostraremos a paleta de configuração do mesmo abaixo com sua descrição detalhada em tópicos.

Figura 51 - Paleta de configuração do sensor de cor.
| 1. Porta de entrada: Indica a que porta de entrada o sensor está conectado no NXT. |
| 2. Tipo de sensor: Seleciona o tipo de sensor que está associado ao loop. |
| 3. Contador de loop: exibe e indica o valor da quantidade de repetições do loop. |
| 4. O sensor de cor está na mesma peça do sensor de luminosidade, existe a possibilidade do sensor de cor identificar a luminosidade através da intensidade luminosa das cores.
Figura 52 - Sensor de cor usado para identificar luminosidade. |
|
5. Faixa de teste: Assim como o sensor de ultrassom, o sensor de luminosidade também pode identificar as cores através de uma faixa de cores, que podem estar dentro do valor descrito ou fora dele, dependendo de como configuremos esse sensor. |

Figura 53 - Paleta de configuração do sensor de luminosidade.
| 1. Indica que porta de entrada o sensor está conectado. |
| 2. Tipo de loop. |
| 3. Indica que o sensor de luminosidade está selecionado. |
| 4. Intensidade luminosa que está sendo testada. Podemos testar valores que estão dentro ou fora dos parâmetros configurados. |
| 5. O sensor emite as três cores básicas, vermelho, azul e verde, e detecta a quantidade de luz que está sendo refletida da superfície de teste. |
Assista ao vídeo 07 "relógio digital com o lego NTX”. Elabore um texto com uma síntese sobre a lógica envolvida para que o relógio funcione perfeitamente.
BACAROGLO, M. Robótica Educacional: Uma metodologia educacional. Dissertação de Mestrado. Londrina: UEL, 2005.
BUCKHAULTS, C: Increasing computer science participation in the FIRST robotics competition with robot simulation. In: Proceedings of the 47th Annual Southeast Regional Conference, Clemson, South Carolina (2009).
BENITTI, F.B. VAVASSORI; VAHLDICK, A; URBAN, D.L; KRUEGER, M.L; HALMA, A: Experimentação com Robótica Educativa no Ensino Médio: CSBC - XXIX Congresso da Sociedade Brasileira de Computação, UFRGS, 2009
SILVA, F.A; Robo Educ: Universidade Federal do Rio Grande do Norte, Pós-Graduação em Engenharia Elétrica. Uma Metodologia de Aprendizado com Robótica Educacional,2009. Tese (Doutorado).
INOVA Engenharia "Proposta para modernização da educação em engenharia no Brasil", 2006.
NASCIMENTO, Paulo C. Inteligência Artificial. Disponível em: http://www.unicamp.br/unicamp/unicamp_hoje/ju/fev2002/unihoje_ju170pag04.html>Acesso em 30 de Maio de 2013.
NUNES, J. E. A; DA SILVA, J. H. J; BOUÇAS, M. V; DE OLIVEIRA, S. R: Apostila de Robótica Educacional, Versão 1.0, Niterói, Rio de Janeiro, Universidade Federal Fluminense, TEE – Departamento de Engenharia Elétrica - Programa de Educação Tutorial da Engenharia Elétrica – PET-Elétrica, 2013.
Disponível em:
http://www.peteletrica.uff.br/wp-content/uploads/2013/08/Apostila-Rob%C3%B3tica-Educacional.pdf Acessado em 01 de Janeiro de 2014.
SOUSA.L; LIMA.R; PERREIRA.V; DE CARVALHO.R.N; CORREIA.B.W; MACIEL DIAS.B.N: utilização do kit lego mindstorms para motivar e atrair alunos para os cursos de engenharia da ufc campus de sobral – xli congresso brasileiro de ensino em engenharia, UFRGS, 2013.
MINDSTORMS education, Manual do NXT 2.0.Disponível em: http://education.lego.com/downloads/?q={DC0CE993-6544-45A1-8680-B2A547D1EEB6Acessado em 01 de Janeiro de 2014.
MINDSTORMS EV3. Guia do Usuário Disponível em: http://www.lego.com/en-us/mindstorms/downloads/software/ddsoftwaredownload/Acessado em 01 de Mario de 2014.