Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
ENGENHARIA DA COMPUTAÇÃO
Giovanna Fragoso Ferreira
KIT EDUCACIONAL ROBÓTICO PARA TREINAMENTO
EM LÓGICA DE PROGRAMAÇÃO
Orientador: Prof. Alessandro Brawerman
Curitiba, 2015
RESUMO
A nova geração de estudantes, particularmente os de ensino fundamental, está
imersa em um cenário onde a tecnologia é facilmente percebida e sobre constantes
mudanças, dentro e fora do ambiente acadêmico. Devido a esse ritmo acelerado no
crescimento tecnológico, os estudantes precisam estar preparados para enfrentar os
desafios apresentados no seu cotidiano.
A construção e programação de um robô, por exemplo, exige a combinação de
conhecimentos de diversas áreas, o que faz da robótica uma área multidisciplinar. Desta
forma, a robótica pode ser entendida como a ciência que estuda a elaboração, montagem
e programação de robôs para execução de tarefas sendo controladas por computadores
ou autômatos. Por esses motivos, surge à importância de inserir a robótica na educação
fundamental, a fim de familiarizar os alunos com conceitos básicos de forma lúdica
através da construção e programação de robôs.
Construir e programar robôs requer dos alunos conceitos abordados em sala de
aula e muitas pesquisas, assimilando o conteúdo apresentado em aula com a prática,
ainda desenvolvendo conceitos como trabalho em equipe, integração de disciplinas,
capacidade de falar em público, solucionar problemas e empreendedorismo.
É com esta visão que este trabalho aborda o desenvolvimento de uma ferramenta
lúdica robótica em conjunto com um ambiente de programação de alto nível para
educação de lógica de programação, integrando estratégias educacionais com
ferramentas de aprendizagem, com a utilização de uma interface computacional e
interação robótica. O projeto apresenta o desenvolvimento de uma plataforma robótica
simples, um carrinho, com alguns sensores e um aplicativo Android que serve de
interface para o desenvolvimento de programas que controlarão o robô.
Palavras-chave: Programação, Robótica Educacional, Lúdica, Educação Tecnológica.
ABSTRACT
The new generation of students, particularly elementary school, is immersed in a
scenario where technology is easily seen and on constant change, both inside and
outside the academic environment. Because of this fast-paced technological growth,
students need to be prepared to face the challenges presented in their daily lives.
Building and programming a robot, for example, requires a combination of
knowledge from different areas, which is a multidisciplinary area of robotics. This way,
the robot can be understood as the science that studies the development, assembly and
robot programming for task execution being controlled by computers or automatically.
For these reasons, it is approached the importance of inserting robotics in elementary
school in order to familiarize students with basic concepts in a playful manner by
building and programming robots.
Developing robots requires concepts that are discussed in class and a lot of
research, assimilating the content presented in class with practice, also developing
concepts such as teamwork, integration of disciplines, ability to speak in public,
troubleshoot and entrepreneurship.
In this matter this project describes the development of a robotic fun tool in
conjunction with a high programming environment level programming logic education,
including educational strategies learning tools with the use of a computer interface and
interact robotics. The project presents the development of a simple robotic platform, a
toy car, with some sensors and an Android application that interfaces to the
development of programs which controls the robot.
Keywords: Programming, Educational Robotics, Playful, Technological Education.
SUMÁRIO
1 INTRODUÇÃO ................................................................................................................... 5
1.1 OBJETIVO GERAL .................................................................................................. 6
1.2 OBJETIVOS ESPECÍFICOS .......................................................................................... 6
2 FUNDAMENTAÇÃO TEÓRICA ..................................................................................... 7
3 ESPECIFICAÇÃO TÉCNICA ............................................................................................. 9
3.1 ANÁLISE DE REQUISITOS ....................................................................................... 11
3.2 RESTRIÇÕES............................................................................................................... 11
3.3 DESCRIÇÃO DAS PARTES E INTERFACEAMENTO ENTRE SISTEMAS .............. 12
4 DESENVOLVIMENTO.................................................................................................... 16
4.1 HARDWARE .............................................................................................................. 16
4.2 SOFTWARE ................................................................................................................ 18
5 TESTE E RESULTADOS ................................................................................................... 21
6 CONSIDERAÇÕES FINAIS ............................................................................................. 24
7 BIBLIOGRAFIA ............................................................................................................... 25
1 INTRODUÇÃO
A presença de novas tecnologias aplicadas à educação tem se tornado cada vez
mais frequentes nas escolas, principalmente as de ensino básico, com alunos mais
familiarizados com dispositivos eletrônicos de alta tecnologia para acesso a informação.
A utilização de novas tecnologias em atividades de ensino gera um impacto no
processo de aprendizagem, despertando curiosidade e maior interesse do estudante,
instigando-os a criar soluções aos problemas propostos, desenvolver novas estratégias e
inovação.
Para Ragazzi (RAGAZZI, 2007), a robótica educacional tem como objetivo
“levar os alunos a descobrir o funcionamento da tecnologia de uma maneira
divertida”, desta forma, a robótica pode também discutir o conhecimento acumulado e
contribuir para que os alunos possam “utilizar, dominar e desenvolver o pensamento
crítico”.
Uma forma de viabilizar o conhecimento científico-tecnológico tem sido vista
através da inserção da robótica educativa nas escolas. Instigando a solução de
problemas com conceitos multidisciplinares e motivando os alunos a refletirem sobre
estes conceitos. Uma vez que o conhecimento se torna mais eficaz se for possível
integrar conceitos teóricos a uma aplicação prática.
Com o grande avanço da tecnologia, a robótica tem sido um instrumento de
ensino muito eficiente em diversas áreas, desenvolvendo a capacidade de elaborar
hipóteses, investigar soluções, estabelecer relações e tirar conclusões. Como
consequência desta evolução, a lógica de programação é uma habilidade que encontra-
se em extrema escassez de mão de obra em setores críticos para desenvolvimento de
softwares, incluindo programadores, analista de softwares e engenheiros de todas as
especialidades, devido a dificuldade de aprendizagem das linguagens de programação,
no qual requer a necessidade de raciocínio estrutural e lógico (MOLES, 1995).
1.1 OBJETIVO GERAL
Este trabalho destina-se a construção e desenvolvimento de uma plataforma robótica
para auxiliar na melhoria do raciocínio lógico, principalmente infantil, e no ensino
fundamental da lógica de programação.
1.2 OBJETIVOS ESPECÍFICOS
Para o desenvolvimento deste projeto, vários passos foram elaborados, gerando
assim os objetivos específicos do trabalho. São eles:
1. Fundamentar conhecimentos em tecnologias educacionais;
2. Estudo e análise de trabalhos relacionados;
3. Desenvolvimento de hardware para comunicação, movimentação, angulação,
velocidade, sensor de distância;
4. Desenvolvimento de protocolo de comunicação, para comunicação entre aplicativo
Android e robô;
5. Desenvolvimento de firmware;
6. Desenvolvimento de aplicativo Android;
7. Construção de um módulo robótico terrestre;
8. Execução de teste/experimentos práticos para validação do sistema;
2 FUNDAMENTAÇÃO TEÓRICA
A lógica de programação envolve uma tomada de decisão de uma sequência a ser
executada para atingir o resultado desejado, assim surgindo a linguagem de
programação.
Segundo Castilho (CASTILHO, 2006), existem poucos registros sobre a história da
robótica aplicada na educação. Em grande parte da população, existe uma dificuldade
considerável quando se trata de aprender uma linguagem de programação, devido a
necessidade de raciocínio estrutural e lógico a ser desenvolvido desde a infância.
Ao primeiro contato com a programação, os estudantes encontram um grande
obstáculo em aplicar seus conhecimentos e habilidades, gerando uma fonte de medo,
frustração e desistência do ramo (CHAVES DE CASTRO, 2003).
Com este conceito, para solucionar esse desafio e suprir a necessidade de mercado
global, vários autores, como por exemplo, (CARVALHEIRO & SETZER, 1995; BEN-
ARI, 1998; ROSSO & DANIELE, 2000; TOBAR et al., 2001; HADEN & MANN,
2003; NEVES & COELLO, 2006; COSTA et al., 2010) sugeriram implantar a lógica de
programação nos institutos educacionais de forma mais intuitiva.
É neste momento que surge a necessidade de introduzir a lógica de programação na
educação robótica nas instituições escolares e mostrar à sociedade novas ferramentas de
ensino e estímulo voltado às áreas técnicas e de engenharia de modo a despertar o
interesse dos jovens.
Segundo Menezes apud (MENEZES, 2002) Dicionário Interativo da Educação
Brasileira afirma que robótica educacional é:
"Termo utilizado para caracterizar ambientes de
aprendizagem que reúnem [...] kits de montagem
compostos por peças diversas, motores e sensores
controláveis por computador [...] que permitam
programar de alguma forma o funcionamento dos
modelos montados.
Ainda complementam que nos ambientes destinados a robótica, os indivíduos
devem construir sistemas compostos por programas que os controla ao realizar uma
determinada atividade.
Isto levou Saymourt Papert (PAPERT, 1964) dar início aos seus projetos
envolvendo robótica no Centro de Epistemologia Genética de Genebra, no Laboratório
de Inteligência Artificial do Instituo de Tecnologia de Massachussets.
Através da educação robótica o aluno vive a experiência de programar um robô ou
um sistema robotizado. O Instituto de Tecnologia de Massachusetts – MIT, nos Estados
Unidos, tem desenvolvido kits de robótica compostos por robôs ou conjuntos de peças,
motores, sensores, hardware e software de programação e controle desde os anos 70,
para utilização nas salas de aula americanas oferecendo a oportunidade de adquirir
meios de solucionar problemas constantes.
A RoboMind (HALMA, 2009) apresenta a ideia de uma IDE que oferece uma
linguagem de programação simples para movimentação de um robô e uma área de
mensagem, usada para visualizar erros sintáticos ou situações em que o robô apresenta
problemas na execução. O mesmo pode ser programado no Mindstorm (LEGO, 2009).
O Mindstorm, desenvolvido pela MIT, tem capacidade de ser programado em diversas
formas. Sensores podem ser programados para seguir linhas, desviar de obstáculos com
a opção de botões de controle, comunicação por Bluetooth e outros.
O Brasil, por sua vez, também apresenta inúmeros projetos, com elevado
desenvolvimento. O Instituto de Tecnologia da Informática e Comunicação – ITIC tem
elaborado inúmeros projetos envolvendo a robótica nas áreas educacional, exploração
de petróleo, simulação em ambientes virtuais e outros. O Paraná não deixa a desejar, já
com algumas instituições no qual implantaram a robótica em seus currículos como o
Colégio Marista Paranaense (PYKOCZ, 2012), “Quando o aluno se sente livre, aprende
mais fácil”, diz o diretor educacional do Marista, Mário José Pykocz.
O desenvolvimento de um trabalho de conclusão de curso elaborado e desenvolvido
por um aluno da Engenharia da Computação da PUC Paraná foi destaque em 2011, o
robô Tigrão (GAIOTO, 2011). Criado em 2006 com intuito de animar o ambiente
hospitalar onde crianças estão em tratamento médico. Com o mesmo intuito um robô
chamado Droidnet (NAGIME, 2013), desenvolvido por um aluno da Escola Técnica
Rezende-Rammel, virou grande notícia no Brasil devido a sua funcionalidade. O robô
foi desenvolvido quando o jovem aluno ao se reunir com sua família encontrou um dos
membros familiares doente, impossibilitado de ser visitado. Sendo assim, o robô de
quase dois metros, opera remotamente pela Internet e reproduz som e imagem do local
de onde se encontra.
3 ESPECIFICAÇÃO TÉCNICA
O objetivo principal desde trabalho consiste em auxiliar no treinamento da
lógica de programação através de um pequeno módulo robótico móvel, um carrinho -
automodelo, com comunicação com um dispositivo Android via Bluetooth.
O trabalho consiste em uma base robótica, contendo dois motores DCs, com
caixa de redução e eixo duplo para movimentação juntamente com dois encoders, duas
chaves óticas PHCT204 para medição de velocidade e angulação, um sensor de
infravermelho E18-D50NK representando a cabeça do robô e um Stellaris LauchPad da
Texas Instrumental que possui microcontrolador ARM Cortex LM4F120H5QR. Por fim
uma interface gráfica desenvolvida para um aplicativo Android que fornece ao usuário a
opção de movimentos direcionais, alternação de velocidade, condições como loops,
if/else, angulação que o robô irá executar e desviar caso encontre um obstáculo.
O robô por sua vez recebe estes comandos do aplicativo através de uma
comunicação via Bluetooth HC-05 e com o uso de um firmware de controle no
microcontrolador, os interpreta e executa.
A Figura 1 ilustra a arquitetura do projeto, demonstrando como este foi
concebido, em relação de hardware, base e o firmware.
MOTORES
MICROCONTROLADOR
APLICATIVO
ENCODER
SENSOR
BLUETOOTH
Figura 1: Arquitetura do projeto.
A Figura 2 mostra uma visão geral do projeto juntamente com a interligação dos
componentes principais. Os motores DC, encoders, sensor e Bluetooth são controlados
pelo microcontrolador, que ao receber um comando via Android, toma a decisão de
movimentação do robô. A Figura 3 apresenta uma foto do protótipo construído.
Figura 2: Visão geral do projeto.
Figura 3: Protótipo
3.1 ANÁLISE DE REQUISITOS
As funcionalidades do Robbie, assim chamado o protótipo, têm como alvo
despertar o interesse na programação lógica, vista por muitos como um grande desafio.
A usabilidade do robô foi criada de uma forma lúdica através da interface gráfica,
composta blocos de comandos, facilitando o entendimento e aprendizagem do mesmo.
O robô permite que, através de um aplicativo Android, o usuário possa, com blocos de
comandos gráficos, criar uma sequência de comandos como loop, if/else, controlando
assim a velocidade e angulação.
Os blocos de movimentação consistem em movimentos para frente, trás,
esquerda, direita, com velocidade controlada por PWM em seu máximo de 255 e
angulação 90º. O usuário por sua vez tem a opção de selecionar com qual ângulo o robô
deve desviar ao encontrar um obstáculo e qual velocidade gostaria que ele executasse.
Desta forma o usuário consegue entender os princípios básicos de programação
juntamente com a criação de condições tais como o loop e if/else. O protótipo do
automodelo foi construído em um módulo de carrinho robótico com componentes
facilmente encontrados no mercado, diminuindo o seu custo total, fácil suporte e
segurança ao usuário.
3.2 RESTRIÇÕES
O produto final em desenvolvimento tem como foco um custo máximo de
R$500,00 para atender o mercado, como é mais simples, com componentes de baixo
custo, seu custo final também deve ser menor que os concorrentes, como exemplo o
Mindstorm da Lego. O sistema é alimentado via USB por baterias Li-ion recarregáveis,
com uma durabilidade máxima de 3 horas contínuas. Os componentes que compõem
este projeto não apresentam quaisquer tipos de risco elétrico, ao usuário devido à baixa
tensão de alimentação, porém não possui proteção a qualquer tipo de líquido.
3.3 DESCRIÇÃO DAS PARTES E INTERFACEAMENTO ENTRE
SISTEMAS
O robô foi desenvolvido em um base de carrinho robótica, onde foram montados
nele, uma ponte H L298N, encoder com duas chaves óticas PHCT204, um módulo
Bluetooth HC-05, duas baterias Li-ion 5V, Stellaris LauchPad embutido um
microcontrolador LM4F120H5QR e um sensor E18-D50NK.
O microcontrolador LM4F120H5QR, Figura 4, utilizado no trabalho possui inúmeras
funcionalidades de extrema importância na construção do mesmo. Apresenta recurso de
conectividade com alto desempenho permitindo integrar uma variedade de periféricos
para aplicações específicas desejadas. Contendo um núcleo ARM Cortex-M4F, uma
memória flash integrada de até 256KB e 32KB de SRAM, com diversas interfaces de
comunicação e controle como UART, PWM, USB e ADC as quais foram utilizadas.
Como ilustrada na Figura 4, o diagrama de blocos do microcontrolador.
Embarcado no módulo robótico, o microcontrolador ARM Cortex
LM4F120H5QR, alimentado por uma bateria Li-ion de 5V, tem como atribuições o
controle de movimento dos motores, velocidade, aquisição de dados do sensor,
regulagem de tensão das baterias utilizada e a comunicação Bluetooth com o aplicativo
Android, como ilustrado pela Figura 5.
ARM Cortex-M4F
256 KB FLASH
32 KB SRAM
8 UARTS
Interfaces Serial
USB / 2 CAN
Clocks Reset
Sistema
GPIO´s
12 Timer PWM
Sensor Temp.
Controle de
Movimentação
3 Comparadores
Analógico
2x 12-bit ADC
16 saídas PWM
Timer
Comparador
Interupção
PWM
Gerador
PWM
Figura 4: Diagrama de blocos Stellaris microcontrolador ARM Cortex – M4F.
Figura 5: Diagrama de Bloco
A ponte H alimentada pela segunda bateria de Li-ion de 5V, possui um chip ST
L298N, Figura 6, o qual é utilizado para controle dos motores. Consome uma corrente
de 0-36mA, construída com seis entradas, duas sendo analógicas que controlam o PWM
dos motores (EN1 e EN2) e as outras quatro, entradas digitais (S1-S4) que são
acionadas de forma alternada para o motor girar em um sentido determinado. Conforme
ilustra a Figura 7.
Figura 6: Ponte H L298N.
Figura 7: Componente e Esquemático da Ponte H L298N.
Os motores utilizados na base do robô e conectados na ponte H são motores DC
com caixa de redução e eixo duplo, na qual através de um divisor de tensão da ponte H
são alimentados, operando em uma corrente entre 150mA e 200mA. Juntamente com os
motores um enconder foi utilizado para controle de alinhamento e angulação do mesmo.
O encoder consiste de um disco com 21 pontos, Figura 8, um raio de 3,34cm,
duas chaves óticas PHCT204, Figura 9, e duas portas do CI LM324, para cada motor.
As entradas não inversoras são ligadas ao receptor e as entradas inversoras a um trimpot
ajustável. Quando a tensão aplicada na entrada não inversora for menor que a entrada
inversora, as saídas do LM324 se manterão em nível alto, mandando um pulso pro
microcontrolador, que fará a leitura e identifica o deslocamento do robô.
Figura 8: Disco do encoder.
Figura 9: Chave Ótica PHCT204.
Para comunicação entre o módulo robótico e o aplicativo Android, um módulo
Bluetooth HC-05 alimentado por 3.3V proveniente do pino do microcontrolador foi
utilizado. Configurado como master, com um alcance de até 10m, e uma taxa de
transmissão de 8bits em 9600 baud rate, consumindo em cerca de 8mA durante a
comunicação e de 30 à 40mA no momento de pareamento. Figura 10 ilustrado esquema
elétrico do módulo.
Figura 10: Bluetooth HC-05 Esquemático Elétrico.
Para detecção de obstáculo um sensor E18-D50NK foi utilizado, e alimentado
com 5V pelo pino do microcontrolador, operando em uma distância de detecção de
18cm com uma resposta de 2ms. Como mostra a Figura 11 o funcionamento lógico do
sensor utilizado.
Figura 11: Funcionamento lógico do sensor E18-D50NK.
4 DESENVOLVIMENTO
O desenvolvimento do Robbie contou com planejamento e construção de um
sistema embarcado na plataforma robótica, desenvolvimento de um firmware, sistema
de controle, comunicação Bluetooth e o desenvolvimento de um aplicativo Android
para que o usuário pudesse escrever um programa de controle a partir de uma interface
gráfica.
Ao projetar o Robbie, foi feita uma análise dos componentes que seriam
utilizados para seu desenvolvimento. Sendo assim, o microcontrolador utilizado tem
como importância possuir certas funcionalidades. Cada componente foi testado
separadamente para ter certeza que todos estavam funcionando antes mesmo de integrá-
los.
1 - Motores – Direção (frente, trás, esquerda, direita) e velocidade
2 -Bluetooth – Comandos enviados pelo aplicativo com a movimentação dos
motores
3- Sensor de distância – Detecção de obstáculos
4- Encoder – Alinhamento dos motores, ajuste de velocidade e angulação
Os motores DC utilizados com caixa de redução foram testados para trabalhar
em seu máximo desempenho, permitindo que a velocidade fosse regulada assim como a
execução dos movimentos.
Os outros componentes como o Bluetooth para a transmissão dos comandos
foram ajustados com 9600 baud rate enviando um comando a cada 3 segundos. O sensor
de obstáculos mede a distância a partir de 18 centímetros do objeto, fazendo com que o
robô desvie, continuando a sequência de comandos na qual foi determinada para
execução. O encoder incremental foi utilizado para fazer o alinhamento do robô assim
regulando a quantidade de giro de cada motor.
4.1 HARDWARE
Para o desenvolvimento do firmware, em linguagem C, do microcontrolador
ARM Cortex LM4F120H5QR, utilizado neste projeto, fez-se o uso do ambiente de
desenvolvimento Energia. Este tem como função interpretar as sequências de comandos
enviados pelo aplicativo e a partir disso fazer a execução dos mesmos. Através de um
encoder que calcula o diâmetro da roda do robô e da quantidade das listas brancas e
pretas faz-se o cálculo para controlar a potência dos motores, devendo se movimentar
conforme os comandos enviados. A Figura 12 mostra o fluxograma de funcionamento
do firmware, demonstrando quais são as análises feitas pelo microcontrolador, ao
receber os comandos do aplicativo. Ao iniciar o aplicativo o firmware verifica se foi
realizada a conexão com o Bluetooth, se conectado o firmware espera a sequência de
comandos a ser criada e envia, caso não tenha conectado, o firmware não avança para
criação da sequência de comandos assim esperando que haja a conexão. Na sequência
de comandos o firmware espera quaisquer comandos que seja de velocidade, angulação
e principalmente de movimentação. Após receber a sequência o firmware faz a sua
analise e executa de acordo com cada comando enviado.
Figura 12: Fluxograma de funcionamento do firmware
Os motores são acionados pela utilização de uma ponte H, composta por um
dual full-bridge driver L298N. Como citado anteriormente, a mesma possui um
conector com quatro entradas digitais e duas entradas de PWM as quais são controladas
pelo ST L298N. As entradas digitais são ligadas nos pinos J1[3], J1[4], J2[14] e J2[15]
e os sinais PWM nos pinos J1[2] e J4[38] do microcontrolador.
Os demais componentes utilizados neste trabalho foram alimentados de acordo
com seu funcionamento, ligados nos pinos do microcontrolador. O disco do encoder foi
colocado no eixo de cada motor, juntamente com as suas respectivas chaves óticas
PHCT204 para fazer a leitura dos pontos. Com o trimpot ajustado corretamente, os
pinos de saída do LM324 referente a cada motor foram ligados nos pinos J4[31] e
J4[40].
Um sensor infravermelho E18-D50NK posicionado na parte frontal do robô,
consiste em um conjunto de transmissor e receptor infravermelho, para fazer a detecção
de obstáculos com uma distância de 18 cm, desviando-o, com um tempo de resposta de
2 ms. No qual o sensor foi ligado no pino J1[10]. E por fim para comunicação entre o
aplicativo e o robô, o módulo Bluetooth foi conectado nos pinos J1[5] RX e J1[6] TX.
4.2 SOFTWARE
O software utilizado no projeto foi desenvolvido em linguagem Java, para a
plataforma Android 4.4 ou superior, utilizando a IDE de desenvolvimento Android
Studio. Este representa o conteúdo que está presente nos smartphones com plataforma
Android, fazendo a interação com o usuário, apresentando o aplicativo que permite com
que o usuário crie, graficamente, uma sequência de comandos para que o robô venha
executar.
A Figura 13 mostra o fluxograma do funcionamento do aplicativo utilizado no
Android. Ao iniciar o aplicativo a tela inicial apresenta um botão INICIAR, Figura 14,
na qual faz a conexão com o Bluetooth e permite o início da criação de uma sequência
de comandos. No caso de falha ou quebra na conexão do Bluetooth, o aplicativo retorna
a tela inicial forçando que a conexão seja realizada novamente.
Figura 13: Fluxograma do software do aplicativo Android.
Figura 14: Tela Inicial
A tela de criação da sequência de comandos consiste de um ListView e um
GridView. O ListView armazena todos os botões de comando em um ArrayList, tais
como os de movimentação; frente, trás, esquerda, direita, o loop para repetir a sequência
quantas vezes desejar, LED como antena do robô, velocidades; SLOW, MEDIUM,
FAST, ângulos de 90° e 180° tanto para direita quanto esquerda e o botão go que
concatena os comandos em um ArrayList e envia para ser executado pelo robô.
Estes botões de comandos permitem ao usuário criar uma sequência de
comandos, pressionando-os por alguns segundos e arrastando-os para o GridView.
Neste momento um Drag and Drop é realizado assim colocando os botões/comandos em
uma sequência e armazenando em outro ArrayList.
Com isso, após a verificação da conexão através do Bluetooth, o sistema valida se existe
uma sequência, se existir, os comandos armazenados no ArrayList do GridView são
executados pelo microcontrolador na sequência em que foram inseridos. Se não, uma
mensagem aparece na tela pedindo com que uma sequência seja criada. Após a criação e
execução da sequência de comandos, a tela onde foi criada, é limpa para que novas
sequências possam ser enviadas. Como ilustra a Figura 15.
Para que o aplicativo Android e o robô se comunicassem, foi preciso utilizar
uma permissão de conexão através do Android chamado,
"android.permission.BLUETOOTH" e "android.permission.BLUETOOTH_ADMIN".
Sendo assim, foi desenvolvido um protocolo de comunicação para o Bluetooth.
Na classe do Bluetooth foi utilizado não somente o socket para conexão como
também o OutputStream para leitura e envio dos comandos. O firmware do
microcontrolador, primeiramente verifica dentro de um loop, se a serial do Bluetooth
está disponível, assim inicializando a leitura do que está sendo enviado do aplicativo,
armazenando-o em um caractere declarado como char e executando simultaneamente.
Uma interrupção chamada attachInterrupt, foi utilizada no recebimento dos
comandos via Bluetooth que controla os motores juntamente com a interrupção do
sensor. Desta forma o sensor ao detectar um obstáculo deve continuar executando o
mesmo comando até conseguir desviar do obstáculo continuando a sequência enviada.
Este comandos são armazenados em um Arraylist e enviados pelo Bluetooth no qual
executa em 8 byte com o baud rate de 9600, como mencionado anteriormente.
GridView
ListView
Figura 15: Funcionamento das telas
5 TESTE E RESULTADOS
Os componentes utilizados neste trabalho foram testados separadamente para
melhor desempenho do sistema. Primeiro teste realizado foram os motores, ponte H e
bateria. A princípio, uma bateria de 6V selada foi utilizada na alimentação dos
componentes descritos. Apesar de aumentar o torque dos motores a bateria durava em
torno de 1 hora em uso constante, devido ao alto consumo da ponte H, como citado
anteriormente.
Um sensor de ultrasom HC-SR04, foi utilizado como teste juntamente com um
servo motor para movimentar o sensor em um ângulo específico. Este sensor trabalha
com uma tensão de 5V, uma corrente de 15mA, o qual foi ajustado para detectar
obstáculos com distância de 18 cm. Já o servo motor foi ajustado para detectar ângulos
entre 37° - 143°, conforme demonstra o calculo abaixo.
𝑦2 − 𝑦1
𝑥2 − 𝑥1
= 143 − 37
18 − 0= (
106
18)
𝑦2 − 𝑦1 = m (x- 𝑥1) (y − 37) = (106
18) (x – 0)
y = (106
18) x + 37
Ângulo do servo = (106
18) distância + 37
Com a utilização desde sensor, o robô apresentava dificuldade em saber para
quais ângulos deveria girar para desviar dos obstáculos. Após vários testes, foi
observado a necessidade de uma interrupção. Mesmo com o uso da interrupção, o robô
ainda apresentava problemas ao detectar e desviar dos obstáculos, sendo assim o sensor
foi subtituido pelo sensor infraverlho E18-D50NK.
O Bluetooth por sua vez foi testado com o aplicativo Android, através de um
Toast, que imprimia na tela do aplicativo os comandos enviados, armazenados pelo
ArrayList. Com isso, pode-se notar que o protocolo de comunicação estava em total
funcionalidade.
Novos testes foram realizados com o Bluetooth, em relação ao tempo de
transmissão de uma quantidade de comandos ilustrado no gráfico 16. Como se pode
observar, os comandos enviados são executados em torno de 3 segundos por comando.
Figura 16: Tempo de Transmissão
Outro teste realizado se refere ao total de comandos executados com sucesso. O
teste envolveu a execução de 100 envios de comandos de movimentação (frente, trás,
esquerda, direita) com angulação default de 90º e velocidade default fast, com o PWM
em 255. O resultado mostrou um total de erro de 21% para os 100 envios de comando.
Da mesma forma foi realizado o teste com a opção de selecionar a mudança de ângulo
caso o robô detectasse um objeto e a troca de velocidade, apresentando um erro de 28%
dentre os 100 envios de comandos. Dado problema causado pela possibilidade de
liberação de memória do microcontrolador, uma vez que o microcontrolador possui uma
memória de processamento pequena como mencionado anteriormente.
Figura 18: Teste de Assertividade
10 25 50 100 250 500
Tempo 00:00:30 00:00:47 00:02:30 00:05:00 00:12:45 00:25:32
00:00:00
00:02:53
00:05:46
00:08:38
00:11:31
00:14:24
00:17:17
00:20:10
00:23:02
00:25:55
00:28:48
Tem
po
Comandos DefaultComandos com Velocidade +
Ângulo
100% 100 100
Erro % 21 28
0
10
20
30
40
50
60
70
80
90
100
Tota
l de
Ace
rtiv
idad
e
Uma melhor solução seria a utilização da alocação dinâmica de memória,
gerenciada pela função malloc, a qual aloca um bloco de bytes consecutivos na
memória, devolvendo o endereço desse bloco. Esse endereço por sua vez é armazenado
num ponteiro no qual é retornado. Outra solução seria a implementação de uma
máquina de estados, que iria manter a verificação de qual estado o comando enviado se
encontra e caso viesse encontrar qualquer tipo de interrupção o mesmo iria saber onde
retomar o comando.
Outro dado obtido de confiabilidade realizada encontra-se no sensor de
obstáculo que apresentou 28% de erro em 100 comandos enviados. Devido a limitação
de angulação do sensor utilizado, ao executar alguns comandos de desvio foram
encontrados alguns problemas. Uma melhor solução para este problema seria a
utilização de sensores nas laterais do protótipo assim tendo uma angulação maior ao
desviar dos obstáculos, com a opção de utilizar uma chave de contato que mesmo
quando o protótipo entrasse em contato com algum objeto, iria forçar que o mesmo
desviasse do objeto e continuasse a sequência de comandos.
As baterias recarregáveis de 2200 mAh de 5V, possuem uma durabilidade de
aproximadamente 3 horas contínua nesta aplicação, onde a ponte H L298N consome
uma corrente de 36 mA na tensão de 2,5V, o Bluetooth 8 mA por comunicação e 30 mA
ao fazer o pareamento e o sensor óptico uma corrente de 100 mA. Sendo assim o total
aproximado de consumo de corrente totaliza em 166 mA sem o envio de comandos.
Para a bateria utilizada de 2.2Ah com 5V com a carga integra é possível fornecer em
torno de 6 horas, sem qualquer tipo de comando sendo executado. O uso dos periféricos
faz com que a porcentagem da durabilidade das baterias diminua. Desta forma, o envio
de comandos de forma contínua aumenta o total da corrente utilizada para 330 mA,
consumindo em cerca de 32% a mais das baterias, durando em média de 3 horas.
6 CONSIDERAÇÕES FINAIS
O trabalho propôs um sistema educacional robótico para treinamento em lógica
de programação para melhor aprendizado do usuário, uma vez que a lógica de
programação é vista por muitos como um obstáculo. Sendo assim, este trabalho
desenvolvido em uma base de carrinho robótica, instiga a curiosidade do estudante ao
visualizar ludicamente uma das formas de lógica de programação.
A plataforma na qual o trabalho foi construído é de fácil acesso no mercado, que
consiste de dois motores DCs nos quais, normalmente, vem acoplado na base. Assim
como o dispositivo Bluetooth HC-05, muito utilizado em projetos de robótica,
especialmente para pareamento com outros dispositivos, permitindo a comunicação
entre eles.
Atualmente notamos a grande usabilidade de aplicativos em tablets e
smartphones. Por este motivo foi criado um aplicativo Android para os estudantes
possam através desde aplicativo, interagir com o robô de uma forma mais divertida,
treinando e desenvolvendo seu raciocínio na lógica de programação.
7 BIBLIOGRAFIA
BEN-ARI, M. (1998) “Constructivism in Computer Science Education” Twenty-
Ninth SIGCSE Technical Symposium on Computer Science Education, Atlanta, GA,
USA.
CARVALHEIRO, F. e Setzer, V. (1995) “Uma Introdução Geral aos Algoritmos”,
Anais do 3 o WEI, 4o Congreso Ibero Americano de Educación Superior em
Computación, 15o Congresso da SBC 1995, Brasil.
CHAVES DE CASTRO, T. et al (2003) “Utilizando Programação Funcional em
Disciplinas Introdutórias de Computação”, Anais do WEI 2003, Brasil.
COSTA, H.A.X.; Santos, R.P.; Werner, C.M.L. (2010) “Uma Análise do Processo de
Ensino e Aprendizagem de Engenharia de Software: Desafios e Soluções no
Contexto Brasileiro”, In: Proceedings of the XI International Conference on
Engineering and Technology Education, Ilhéus, BA, Brasil, 367-371
GAIOTO, Marcelo (2013) “Robô sai das aulas para alegrar hospitais”.
http://www.gazetadopovo.com.br/educacao/vida-na-universidade/pesquisa-e-
tecnologia/robo-sai-das-aulas-para-alegrar-hospitais-23vk9wjey69pn9tzcilmkzrri
HADEN, P and MANN, S. (2003) “The Trouble with Teaching Programming”,
Proceedings of the 16th Annual NACCQ, Palmerston North, New Zealand
NAGIME, Rayllonn (2013) “ Estudante apresenta Robô-avatar em feira da USP. A
proposta do projeto é ajudar pessoas enfermas e hospitalizadas”,
http://odia.ig.com.br/portal/cienciaesaude/rio-de-janeiro-tem-representante-em-feira-de-
tecnologia-1.550426
NEVES, M.F.; Coello, J.M.A. (2006) “OntoRevPro: Uma Ontologia sobre Revisão
de Programas para o Aprendizado Colaborativo de Programação Java”, In: Anais
do XVII Simpósio Brasileiro de Informática na Educação, Brasília, DF, Brasil, 569-578.
MENEZES, EbenezerTakunode; SANTOS, Thais Helena dos. Robótica Educacional
(verbete). Dicionário Interativo da Educação Brasileira. EducaBrasil. São Paulo:
Midiamix Editora, 2002. Disponível em: . Acesso em: Out. 2015.
MOLES, A.A. (1995). As ciências do impreciso. Rio de Janeiro: Civilização Brasileira.
TOBAR, C.M.; Rosa, J.L.G.; Coelho, J.M.A.; Pannain, R. (2001) “Uma Arquitetura
de ambiente Colaborativo para o Aprendizado de Programação”, In: Anais do XII
Simpósio Brasileiro de Informática na Educação, Vitória, ES, Brasil, 21-23.
RAGAZZI, Vivian. Robótica na Escola: é pra já! Disponível em: . Acesso em: Out.
2015.
ROSSO, A. e Daniele, M. (2000) “Our method to teach algorithmic development”,
ACM SIGCSE Bulletin, Volume 32, Issue 2, ACM Press, USA, pp 49-52.