Módulo VI – Projeto Sensores – Atividade 5 – Projeto Final

Logo

Especialização em Inovação em Mídias Interativas – CIAR / UFG
Polo de Alto Paraíso – GO
Módulo VI – Sensores
Componentes: Anderson Santos de Brito, Christina Piovezan Dias, Elias do Nascimento Melo Filho, Jitone Leônidas Soares, Keyla Reis de Oliveira, Lairson Geisel, Meire Cristina Cunha, Renata Borges Ferreira Rios e Wellyelton Gualberto de Brito Rodrigues.

PROJETO FINAL: Fred, o Robô Nerd

INTRODUÇÃO

A Realidade Aumentada (RA) é a impressão de elementos virtuais em ambientes reais, acrescentando informações ou dados ao mundo real (TORI, 2010). No âmbito da educação, a RA pode ser utilizada de várias formas, como por exemplo, estimulando o estudante na análise do mundo real ao ofertar informações suplementares, objetos virtuais, ligadas ao ambiente real.

Ela pode também se estender na integração do mundo real com recursos de aprendizado digitais, possibilitando a visualização de fenômenos que não podem ser reproduzidos em ambiente real. E, por fim, a manipulação de materiais virtuais em uma variedade de perspectivas (WU, 2013).

A RA é uma particularização de um conceito mais geral, denominado realidade misturada, que consiste na sobreposição de ambientes reais e virtuais, em tempo real, por meio de um dispositivo tecnológico (KIRNER, 2006).

Acredita-se que a RA pode contribuir no processo de ensino-aprendizagem por oferecer uma nova forma de representação de conteúdo. A tecnologia de RA permite a partir da projeção de objetos ou de fenômenos inexistentes, uma maior interação entre o discente e o conteúdo exposto possibilitando um melhor entendimento do que antes ficava apenas na imaginação, sem, contudo, necessitar de um amplo conhecimento da tecnologia por parte do discente (ARAÚJO, 2009).

OBJETIVO GERAL

Criar um dispositivo eletromecânico (Fred, o Robô Nerd) capaz de realizar trabalhos de maneira autônoma ou pré-programada, cujo apoio e auxílio sejam voltados para uma aprendizagem baseada na realidade aumentada.

OBJETIVOS ESPECÍFICOS

  • Apresentar os benefícios da robótica para a educação, justificando-os por meio do Fred, o Robô Nerd;
  • Mostrar as etapas e os procedimentos para a criação do Fred, o Robô Nerd;
  • Identificar o material necessário para a confecção do Fred, o Robô Nerd e seu esquema elétrico, bem como a lógica de programação utilizada para o funcionamento deste;
  • Evidenciar a importância da realidade aumentada para o processo de ensino-aprendizagem.

REFERENCIAL TEÓRICO

O referencial teórico tem como base a pesquisa bibliográfica em sites sobre tecnologia, artigos científicos e documentos, de acordo com a orientação dos professores do Módulo VI – Sensores, e da tutora Thamara Lima Vieira Santos. Buscou-se desenvolver o trabalho, tendo como norte a utilização da plataforma Arduino (plataforma física de computação de código aberto baseado numa placa microcontroladora).

METODOLOGIA

Utilizamos a metodologia de pesquisa empírica, buscando testar hipóteses que tratem de relações de causa e efeito. Como se sabe, a metodologia de pesquisa empírica é consiste na utilização de um experimento para testar e validar hipóteses.

Nesta pesquisa, determina-se um objeto de estudo, identifica-se que variáveis participam e / ou interferem no processo, verifica-se a existência de relações de dependência entre as variáveis e, em uma outra etapa, analisa-se a sua aplicabilidade prática, de que modo esta pesquisa pode ser utilizada para interferir na realidade (DEMO, 1995). Em geral, o conceito de pesquisa científica na visão do senso comum está relacionado à pesquisa experimental, uma vez que ela traz resultados mais práticos para a sociedade.

Buscou-se conhecer e analisar as referências científicas existentes sobre um determinado assunto com o intuito de colher informações e conhecimentos. De acordo com o que foi pesquisado nas referências abordadas no desenvolvimento do projeto acerca da realidade virtual e a realidade aumentada para a construção de um robô, a metodologia empírica é fundamental para a importância da sistematização do esquema elétrico do robô aqui projetado e em seguida a descrição e a funcionalidade do mesmo.

1. REALIDADE AUMENTADA

A realidade aumentada é definida de várias maneiras: como o enriquecimento do ambiente real com objetos virtuais, usando algum dispositivo tecnológico, funcionando em tempo real; na melhoria do mundo real com textos, imagens e objetos virtuais, gerados por computador; e na mistura de mundos reais e virtuais em algum ponto da realidade / virtualidade contínua, que conecta ambientes completamente reais a ambientes completamente virtuais (PANTELI, 1999).

Contudo, a RA um sistema que suplementa o mundo real com objetos virtuais gerados por computador, parecendo coexistir no mesmo espaço e apresentando as seguintes propriedades: combina objetos reais e virtuais no ambiente real; executa interativamente em tempo real; alinha objetos reais e virtuais entre si; aplica-se a todos os sentidos, incluindo audição, tato, força e cheiro (AZUMA, 2001).

Já quando se refere aprendizagem multimeios entende-se como informação constituída de vários materiais não convencionais, que possuem em sua característica a marca do registro histórico e da evolução constante, uma vez que a cada dia surge uma nova tecnologia.

image004

Figura 1 – Marcadores de Realidade Aumentada Voltados para Aprendizagem.

Diferentes termos são empregados para denominar esses materiais, como materiais audiovisuais, meios audiovisuais, materiais não impressos, materiais não gráficos, materiais não bibliográficos, mídias, médias e multimeios. A terminologia também não é padronizada na língua inglesa, que emprega indistintamente audiovisual, nonprint materials, non-book materials, multimedia e médium, que são materiais que estão em constante evolução. O progresso da tecnologia faz surgirem os mais variados suportes […] (AMARAL, 1987).

                                image006

Figura 2 – Realidade Aumentada.

Funciona por meio do reconhecimento de marcadores impressos que, quando capturados pela webcam do computador, permitem que sejam posicionados sobre o marcador elementos virtuais como imagens, vídeos, animações, modelos 3D, etc.

2. DESCRIÇÃO E FUNCIONALIDADE DO PROJETO

Diante de tudo que a aprendizagem multimeios propicia, propomos a criação de um robô que vislumbre a RA, sobrepondo elementos virtuais e reais estejam estes alinhados ou não em um mesmo espaço tridimensional, interagindo assim em tempo real. Este dispositivo eletromecânico será capaz de realizar trabalhos de maneira autônoma ou pré-programada, cujo apoio e auxílio sejam voltados para uma aprendizagem multimeios. Um robô que permitirá explorar um assunto no âmbito tridimensional e sensorial.

Ao tratar a RA, diversos parâmetros serão contemplados, tendo em vista que a ideia consiste em um robô que permitirá explorar um assunto no âmbito tridimensional e sensorial. Ver, ouvir, sentir e perceber como se estivesse presente em determinado local, mesmo que não esteja. O robô, por meio de sensores, projetores e alto-falante possibilitará a RA através de um modelo 3D em que nós possamos, além de ver, tocar.

Com o nome sugestivo de Fred (o Robô Nerd), seria ainda possível promover a inclusão de alunos portadores de alguma deficiência (auditiva e visual), pois uma das funcionalidades do Fred seria a captação da fala do professor e a tradução simultânea para a Língua Brasileira de Sinais ou Braile, uma das funcionalidades, evitando o afastamento dessas crianças do contexto escolar.

image008Figura 3 – Robô Ilustrativo.

E com a produção em grande escala, seria possível os usuários domésticos adquirirem estes dispositivos eletromecânicos para que pudesse realizar essas mesmas funções em suas residências ou em qualquer outro lugar que fosse possível a prospecção de imagens, facilitando a assimilação de conteúdos um pouco mais complexos por parte dos estudantes, pois não haverá necessidade de carregar ou vestir algum equipamento para desfrutar da RA.

3. MATERIAL PARA CONFECÇÃO

Os materiais básicos para fabricar um robô são: o design, ferramentas, bateria, circuitos, sensores, motores e rodas/pernas. O funcionamento interno do robô é parte essencial na construção, com sensores e circuitos baseados no projeto do desing. A placa de circuito do microprocessador pode ser programada de muitas maneiras para diferentes objetivos, como movimentos, extensões de braço e reconhecimento de voz.

Os sensores transformam som, luz, movimento e outros elementos em sinais eletrônicos. Acelerômetros e giroscópios calibram a orientação e o movimento, permitindo que o robô execute ações com base no ambiente. Caso o robô precise se mover são necessários rodas e motores de passo. Alguns robôs, principalmente os humanóides, utilizam pernas ao invés de rodas.

Rodas maiores fazem com que o robô possa cobrir uma área maior de forma mais rápida, enquanto rodas menores dão ao robô maior tração para puxar e empurrar, além dos movimentos mais precisos. Motores de passo fornecem movimento preciso para braços e também para as rodas do robô. O projeto trata-se de um motor elétrico de corrente contínua que vira o seu eixo em alguns graus quando recebe impulsos de um computador.

4. ESQUEMA ELÉTRICO

Primeiramente, a ideia de todo o projeto elétrico foi baseada na construção de um robô apresentando pelo Núcleo de Pesquisa em Sistemas e Tecnologia da Informação da Universidade Ceuma e por professores de São Luís do Maranhão, com o intuito na elaboração de um robô, com movimentação (CARDOSO apud PEREIRA, 2014).

O primeiro elemento a ser usado é a placa de Arduíno, que nesse caso, iremos utilizar sua versão Duemilanove, uma versão um pouco mais antiga do que a versão UNO (versão mais utilizada hoje por motivo de aporte educacional). Entretanto, exemplificando as diferenças de versões, o que muda bastante entre as duas são os microcontroladores.

A versão UNO utiliza o Atmega 328, o mesmo do Duemilanove. Porém, no Arduíno UNO, existe um microcontrolador adicional (Atmega8U2) no lugar do chip FTDI utilizado no Duemilanove, que é responsável pela conversão USB / serial, como descrito na figura abaixo. Portanto, essa é única diferença, ou seja, o projeto pode ser realizado com a versão UNO do Arduíno.

image010

Figura 4 – Placa Arduino.

Para o funcionamento do projeto, precisa-se do que chamamos de driver, também conhecido na linguagem eletrônica por CI. Nesse caso, iremos utilizar o Driver SN754410 que contém quatro drivers internos que permitem controlar até quatro motores em um único sentido ou dois motores nos dois sentidos. Os pinos 3, 6, 14 e 11 são utilizados para conectar os motores que irão compor o funcionamento das rodas do robô.

Na figura abaixo, estão ilustrados os componentes do driver a ser utilizado. A ligação do CI deve ser iniciada por uma protoboard a ser conectada com fios próprios para ligação Arduíno ou fios adaptados (cabo de telefone fixo) que possuem a mesma função.

image012Figura 5 – Componentes do Driver.

A ligação do CI é realizada a partir dos comandos em que os pinos de saída (output) 3, 4, 9. 5, 6 e 10 do Arduíno são conectados aos pinos de entrada (input) 2, 7, 1, 10, 15 e 9 do CI SN754410 para fazer o acionamento dos motores. Os demais pinos são ligados na protoboard. Para a ligação dos pinos utilizaremos o esquema abaixo como exemplo:

image015Figura 6 – Ligação dos Pinos.

Para que o robô possa identificar o caminho a sua frente e ter referências da realidade aumentada e virtual, iremos utilizar um sensor ultrassônico que possui sensores para detecção de obstáculos; possibilitando o aumento da precisão de deslocamento do robô em um ambiente, uma vez que permite que o robô diminua   sua incerteza com relação à sua localização dentro de um entorno previamente modelado. O modelo de sensor que será usado é o HC-SR04.

Sensores deste tipo se justificam pelo baixo custo e uma precisão aceitável para determinar a distância de um objeto utilizando o sonar para desviar de obstáculos.

image016Figura 7 – Sensor Modelo HC-SR04.

As características principais para que possam ser usados, a título de informações importantes no momento da ligação do sistema, são:

  • distância máxima – 500 cm;
  • distância mínima – 3 cm;
  • sensibilidade – detecta um cabo de vassoura com 3 cm de diâmetro a mais de 2 m de distância;
  • disparo (Trigger) – 10uS Min. Nível TTL;
  • pulso de eco – sinal TTL positivo, proporcional à distância ao obstáculo;
  • dimensões – 43 mm x 20 mm x 17 mm.

Para que o robô tenha movimentações específicas, será utilizado um motor de corrente contínua com o objetivo de realizar o controle independente de dois   motores DC que serão afixados na estrutura do robô para que ele seja capaz de deslocar-se em qualquer direção. Os motores podem ser retirados de lixos eletrônicos como impressoras velhas que geralmente possuem motores elétricos de 12V (9-20V).

image018Figura 8 – Motor Elétrico 12V.

Para se movimentar,  o robô precisará de três elementos físicos de movimentação: rodas de tração, apoio e engrenagens. Esses materiais podem ser retirados de impressoras velhas que possuem sistema parecidos com o que desejamos aplicar no projeto. Um exemplo disso pode ser visualizado, na imagem abaixo, a qual mostra uma impressora desmontada. É possível compreender a quantidade de engrenagens que a mesma possui.

image020 Figura 9 – Impressora Desmontada.

Iniciando a questão das rodas, o tamanho delas é um fator interessante do projeto. Com rodas grandes temos movimentos rápidos, menos torque para transportar carga pesada e controle de posição difícil. Com rodas pequenas temos movimentos mais lentos e fácil posicionamento.

A roda de apoio estará acoplada por um pino na traseira da plataforma de suporte, dando auxílio necessário na mudança de direção do robô por ser leve e possibilitar movimentos giratórios rápidos. Essa roda pode ser comprada separadamente em lojas de eletrônicos.

O motor, a engrenagem e o eixo do suporte são encontrados unidos em  certas impressoras a jato de tinta. Para a engrenagem com a roda não cair de seu eixo, deve ser feito um furo com parafusadeira e uma broca na ponta que deve ser mais fina do que o eixo a ser perfurado, com mais ou menos 0,5cm de profundidade. Logo em seguida, deve ser injetado com um alfinete para preencher o orifício aberto e depois colocar a roda já unida/parafusada com a engrenagem, utilizando uma tachinha com pino fino de metal e ponta redonda ou com uma circunferência, e posteriormente inserida na referida engrenagem.

Uma estrutura é necessária. Ela será de idealização livre e dependerá do local e como o robô irá adaptar-se melhor. Em relação ao esquema de Firmware, será utilizada a biblioteca do ARToolKit baseada na ARToolKit. Foi desenvolvida pela Graz University Technology e fez parte do projeto Studierstube [SCH96]. Esta biblioteca apresenta algumas otimizações, como, por exemplo, possibilidade de se utilizar computações de ponto fixo ao invés de ponto flutuante, com o intuito de gerar aplicações eficientes para dispositivos móveis, tais como PDAs (Personal Digital Assistants) e smartphones.

Os marcadores utilizados por esta biblioteca são semelhantes aos do ARToolKit, com a diferença que o desenho no interior do quadrado de bordas pretas consiste em uma codificação do identificador do marcador. Essa codificação possibilita que o usuário utilize até 512 diferentes marcadores, diminuindo a ocorrência da confusão entre marcadores diferentes.

Uma das importantes características e utilização dessa biblioteca no projeto – que está presente no ARToolKitPlus – é a utilização da técnica de limiar adaptativo, a qual permite o ajuste automático do sistema de detecção dos marcadores conforme as alterações sofridas pela a luz do ambiente capturadas pela câmera.

Para uma melhor utilização do ARToolKitPlus é necessário um breve conhecimento da linguagem de programação intitulada de WIRING, que é uma linguagem de programação baseada em C/C++ para escrever e ler nas entradas/saídas digitais  e analógicas do sistema Arduíno.

Os programas desenvolvidos leem valores do sensor de ultrassom e quando recebem a reflexão de volta de algum obstáculo os motores DC são ativados. Um conversor USB-TTL FTDI no Arduíno encaminha o firmware através da comunicação serial USB.

Na imagem abaixo, está descrito o resumo de todo o sistema elétrico apresentado nas etapas anteriores. Pode-se observar a alimentação de dois conjuntos de 9V (alimentação fundamental para cada motor), e a sequência de disposição de dois Leds (nesse caso de cores laranjadas), que são esquematizados para indicar obstáculos do sensor ultra-som interligado com o CI, e o desempenho físico e mecânico do robô.

image022Figura 10 – Esquema Elétrico do Projeto.

5. LÓGICA DE PROGRAMAÇÃO

Lógica de programação é um conjunto de todas as instruções baseadas na lógica matemática que foram dadas ao programa com o objetivo de solucionar um problema, de modo que essas atividades se relacionem entre si montando um raciocínio detalhado capaz de solucionar o problema.

O programador constrói o software do robô através desta linguagem de programação. Este dispositivo deverá apoiar a aprendizagem de estudantes fora e dentro da sala de aula, utilizando recursos da RA, para que os estudantes possam assimilar o conteúdo ministrado pelos docentes, bem como possa ser empregado no processo de aprendizagem de estudantes que possuam alguma deficiência (visual e / ou auditiva).

Utilizar-se-á os princípios do Projeto Robótica Pedagógica ou Educacional Livre, que possui uma proposta diferenciada. Enquanto a maioria dos projetos de robótica no ambiente escolar é desenvolvida com a utilização de kits padronizados, este projeto parte para soluções livres em substituição aos produtos comerciais. Propõe o uso de softwares livres como base para a programação, e utiliza-se da sucata de equipamentos eletroeletrônicos e outros tipos de lixo, para a construção de kits alternativos de robótica pedagógica (de acordo com a realidade social de cada escola) e protótipos de artefatos cognitivos (robôs, braços mecânicos, elevadores).

Como se trata de um projeto educacional, a programação será baseada em software open-source do Linux – sistema operacional que permite a qualquer pessoa modificar o código original. Será utilizado o Robot Operating System (ROS), pois este sistema fornece bibliotecas e ferramentas para criar aplicações para robôs. Fornece abstração de hardware, dispositivo de drivers, bibliotecas, visualizadores, transmissão de mensagens, e gerenciamento de pacotes. O ROS também está licenciado sob uma fonte aberta.

5.1 Reconhecimento de Luminosidade

O Robô faz automaticamente uma afirmação ou pergunta caso perceba, por meio de sensores, que a luminosidade está baixa ou alta. A lógica básica de programação para esta funcionalidade é:

Inicio

Leia (luminosidade)

Teste (luminosidade)

Caso (luminosidade > 0 e luminosidade <= 10) então

aleatoriamente (

fale(“Hora de descansar. Vamos dormir?”,p1),

fale(“Ei, não me guarde. Você ainda está ai?”,p2),

fale(“Vamos aprender sobre economia de energia?”,p3)

);

aguardar(resposta,30);

caso (luminosidade > 10) então

aleatoriamente (

fale(“Bom dia! O que vamos aprender hoje?”,d1),

fale(“Fale um tema e aprenda mais sobre ele comigo!,d2),

fale(“Deseja ouvir uma música?”,d3)

);

aguardar(resposta,30);

fim caso

Fim;

5.2 Reconhecimento de Comandos de Voz

Para receber estímulos externos, o robô será equipado com reconhecimento de voz. Para tanto, será usado o Annyang, um projeto em javascript para adicionar comandos de voz aos seus aplicativos web.  Um exemplo de lógica de programação para essa funcionalidade, quando:

Inicio

ouça(comando,teste_luminosidade)

caso teste_luminosidade = p1

se (comando = ‘sim’) então

fale(“Boa noite”)

desligar();

senão

se (comando = ‘não’) então

fale(“Dormir para quê? Eu sou um robô!”)

fimse;

fimse;

caso teste_luminosidade = p2 …

.

.

.

Fim;

5.3 Leitura de Sinalizadores de Realidade Aumentada

O robô também contará com um sistema de reconhecimento de marcadores de RA e com isso apresentará materiais educativos. A lógica de programação para reconhecimento destes dispositivos é:

caso teste_luminosidade = p3 — O que vamos aprender hoje?

se (comando = ‘Física Quântica’) então

fale (“Física Quântica! Um dos meus assuntos favoritos!”);

liga_câmera();

localize_marcador_RA();

se localizado = ‘S’ então;

mostrar_aula(“Física Quântica”);

senão

aguardar(30);

fale(“Deculpe. Não encontrei seu objeto interativo. Tente novamente.”);

fimse

senão

fale(“Desculpe. Não entendi seu tema. Tente novamente.”);

Fim;

REFERÊNCIAS

AMARAL, S. A. Os Multimeios, a Biblioteca e o Bibliotecário. Revista de Biblioteconomia de Brasília, Brasília, v. 15, n. 1, p. 45-68, jan./jun. 1987.

ARAÚJO, D. (2009). Uso de Realidade Aumentada como Ferramenta Complementar ao Ensino das Principais Ligações entre Átomos. Workshop de Realidade Virtual e Aumentada. 6, 28-30, Pôsteres do WRVA 2009. Disponível em: <http://sites.unisanta.br/wrva/st/62401.pdf&gt;. Acesso em: 17 de jun. 2015.

AZUMA, R. et al. (2001). Recent Advances in Augmented Reality. IEEE Computer Graphics and Applications, v .21, n.6, p. 34- 47.

CARDOSO, Raul. G. S; PEREIRA, T. S; CRUZ, J. H; ALMEIDA, Will. R. M; Uso da Realidade Aumentada em Auxílio à Educação. Pag. 330. Computer on the Beach 2014.  Disponível em: <http://www6.univali.br/seer/index.php/acotb/article/viewFile/5337/2794&gt;. Acesso em: 17 jun. 2015.

DEMO, Pedro. Metodologia Científica em Ciências Sociais. 3. ed. São Paulo: Atlas, 1995.

KATO, H.; BILLINGHURST, M.; POUPYREV, I. ARToolKit version 2.33 Manual. Novembro. 2000. Disponível em: <http://hiperrealidade.com.br/home/index.php?option=com_content&task=view&id=6&Itemid=28&gt;. Acesso em: 16 jun. 2015.

KIRNER, C.; TORI, R. Fundamentos de Realidade Aumentada. In: Claudio Kirner; Romero Tori; Robson Siscoutto. (Ed.). Fundamentos e Tecnologia de Realidade Virtual e Aumentada. Pré Simpósio SVR 2006, SBC, Belém, 2006, pp. 22-38.

PANTELI V. Vesamontex. Projeto e Descrição Detalhada das Atividades e Resultados da Implementação de uma Solução de Realidade Virtual Aplicada a Educação. 1999.

SILVA, V. L. M. et al. O uso do Multimeios no processo de ensino-aprendizagem da Escola General Rodrigo Otavio – EMGO. Biblioteca Escolar em Revista,  V.1, N.2,  p. 45-62, 2012. Disponível em: <http://revistas.ffclrp.usp.br/BEREV/article/viewFile/126/pdf&gt; Acesso em: 17 de jun. 2015.

TORI, R. Virtualidade Real: 3D e Realidade Aumentada na Educação. Site Educação sem Distância. 2010. Disponível em: <http://romerotori.blogspot.com.br/2010/09/virtualidade-real-3d-e-realidade.html&gt; Acesso em: 17 de jun. 2015.

WU, H.-K. et al. Current Status, Opportunities and Challenges of Augmented Reality in Education. Computers & Education, Elsevier Ltd, v. 62, p. 41–49, mar. 2013. ISSN 03601315.

Módulo VI – Projeto Sensores – Atividade 4 – Processing

Logo

Exercício 1: Elaborar um desenho usando elementos gráficos: linhas, triângulos, retângulos e elipses. Fazer esta figura executar movimentos de translação, rotação e mudança de escala de modo a gerar um padrão gráfico no plano com simetria.

//definição de variáveis
float x,y,z;
float t = 100.0;

//tamanho do palco
void setup() {
size(500, 500);
//noStroke();
}

//desenhos
void draw() {
background(235);

//velocidade da rotação
x = x + 4;

//velocidade da escala
y = y + 0.02;

//cálculo da escala
z = cos(y)*2;

//ponto de translação (no centro do palco)
translate(250, 250);

//cor das linhas (pretas)
fill(255);

//desenho das linhas
line(-250, -250, 500, 500);
line(0, 0, -250, -0);
line(0, 0, -250, 0);
line(0, 0, 250, -0);
line(-250, 250, 500, -500);

//comando para rotação
rotate(x);

//retângulo preto
fill(0);

//escala
scale(z/2);
rect(-100, -100, t*2, t*2);
rotate(t/10);

//retângulo cinza
fill(135);
ellipse(-20, -20, t, t);

//triângulo
fill (80);
triangle(100, 0, 200, 100, 20, 100);

//arco
fill (150);
arc(-150, 150, 150, 150, PI, TWO_PI);

}

Resposta oficial do exercício 1:
http://www.hrenatoh.net/curso/processing/ex_processing_01.pdf

pasted_image_at_2015_05_28_05_01_pm

Aula 2 – Exercício 1.1: Observando para a forma como a instrução para desenhar uma linha foi escrita “line(1,0,4,5);” como você imagina ser a instrução para desenhar um retângulo? Um círculo? Um triângulo? Escreva a instrução em português e traduza para “código”.

“Desenhe um retângulo, partindo do ponto inicial 1 (horizontal), 0 (vertical) até o ponto final 4 horizontal, 5 vertical”.
Código: rect(1,0,4,5);

“Desenhe um círculo, partindo do ponto inicial 1 (horizontal) 0 (vertical) até o ponto final 4 horizontal, 5 vertical”.
Código: ellipse(1,0,4,5);

“Desenhe um triângulo, partindo do ponto de coordenadas 30horizontal, 75vertical, em seguida passando ao segundo ponto de coordenadas 58horizontal, 20vertical e chegando ao terceiro ponto 86horizontal, 75vertical”.
Código: triangle(30, 75, 58, 20, 86, 75);

Aula 2 – Exercise 1-2: Using the blank graph below, draw the primitive shapes specified by the code.

Sem título

Aula 2 – Exercise 1-3: Reverse engineer a list of primitive shape drawing instructions for the diagram below.

sem-tc3adtulo1

Aula 2 – Exercise 1-4: Try to guess what the instructions would be for the following screenshot.

1.4

Aula 2 – Exercise 1-5: Complete the following program. Guess what RGB values to use (you will be able to check your results in Processing after reading the next chapter). You could also use the color selector, shown in Figure 1.19.

1-5

Aula 2 – Exercise 1-6: What color will each of the following lines of code generate?

1-6

Exercício 3 / Exercício 4: Elaborar um desenho, mandala ou cenário utilizando as funções de decisão e repetição.

pasted_image_at_2015_06_04_01_01_pm

int circleX, circleY;
int x, y;

void setup() {
size (650, 650);
smooth(20);
translate(width/2, height/2);
background(#000000);
for (int i=0; i<20; i++) {
drawCircle(“triangle”, 20, 1, 127);
}
for (int i=0; i<20; i++) {
drawCircle(“vertex”, 10, 2, 255);
}
for (int i=0; i<30; i++) {
drawCircle(“vertex2”, 30, 2, 70);
}
}

void drawCircle (String myShape, int count, int myScale, int myColor) {
fill(#FC2800);
if (myShape == “triangle”) {
triangle(130, 75, 58, 20, 86, 75);
}
else if (myShape == “vertex”) {
beginShape();
fill(#00FF3D);
stroke(#00FF3D);
vertex(80, 80);
vertex(60, 40);
vertex(60, 40);
vertex(60, 40);
vertex(60, 60);
vertex(30, 60);
endShape(CLOSE);
}
else if (myShape == “vertex2”) {
strokeWeight(2);
stroke(#7D2CDB);
fill(#7D2CDB);
beginShape();
vertex(250, 200);
vertex(180, 200);
vertex(180, 60);
vertex(150, 80);
vertex(220, 160);
endShape(CLOSE);

}
else if (myShape == “ellipse2”) {
strokeWeight(2);
stroke(#DB2C2C);
fill(#03D7FF);
ellipse(360, 0, 30, 30);
}
rotate(TWO_PI/count);
}

Exercício 5: Elaborar um programa utilizando representações com vértices e curvas.

void setup () {
size(500, 500);
background(#FFFFFF);
smooth();
}

void draw () {
translate (height/2, width/2);
for (float i=0; i<360; i += 0.5) {
pushMatrix();
rotate(radians (i)*frameCount/2);
drawFigure();
popMatrix();
}
}

void drawFigure() {
fill(#FFFFFF, 10);
stroke (#000000, 90);
strokeWeight(2);
triangle(0, 0, 180, 160, 0, 160);
}

Aula 6 – Exercício 5: Desenhe três imagens, cada uma com uma matiz diferente.

size (640,426);
background(0);
PImage img;
img=loadImage(“UFG – 1.png”);
image (img,0,0);
tint(74,203,79);
image (img,490,0,150,213);
tint(196,49,49);
image (img,490,213,150,213);

Aula 6 – Exercício 6: Carregar uma imagem GIF e outra PNG com transparência.

PImage photo;
void setup(){
size (500, 500);
photo = loadImage(“UFG.png”);
imageMode(CORNER);
}
void draw(){
background(240, 230, 140);
image(photo,mouseX, mouseY);

}
void mouseMoved(){
}

* Para rodar uma imagem em formato GIF, basta carregar uma foto neste formato através do menu Sketch / Add File e alterar a linha “photo = loadImage(“XXX.gif”);” com o nome do arquivo.

Aula 6 – Exercício 7: Elaborar um círculo que evolua do ponto (0,0) até bater na borda inferior da tela (300,300) alterando as cores no processo de evolução. Ao bater, o círculo deve voltar ao ponto (0,0) e ficar em loop.

void setup()
{size(600,200);background(0);}

int t=600, i=200,x=t,y=i,w=50,h=375, m=0;
int speed=100,v=100;
float r,g,b;

void draw()
{noStroke();fill(r=random(255),g=random(255),b=random(255));
x=x+speed;
fill(r=random(255),g=random(255),b=random(255));stroke(0);strokeWeight(5);ellipse(m+23,v,w,50);
m=m+speed;
if( m > 550){ m=550;}
if( m > 550){ m=550; }
else if(m==550)
{speed= speed*-1;}
if( m < 0){ m=0; }
if( m < 0){ m=0; }
else if(m==0){speed= speed*-1;}
}

Aula 07 – Processing – Trigonometria e Acesso Randômico

  • Não possui exercício.

Aula 08 – Processing – Função Void() – Setup e Draw

  • Não possui exercício.

Exercício 9: Tirar uma foto e carregar no Processing. Fazer alguma modificação nessa imagem por programação. Essa produção deverá ser mostrada na aula por alguns alunos que serão escolhidos.

Opcional – fazer modificações que podem ser controladas pelo mouse ou pelo toque em alguma tecla.

Foto original: Turma BrasFor.

Foto original: Turma BrasFor, 2015.

PImage img;
int cellsize = 2;
int cols, rows;

void setup() {
size(400,400,P3D);
img = loadImage( “BrasFor.jpg” );
cols = width/cellsize;
rows = height/cellsize;
}

void draw() {
background(255);
img.loadPixels();

for (int i = 0; i < cols; i++ ) {
for (int j = 0; j < rows; j++ ) {
int x = i*cellsize + cellsize/2;
int y = j*cellsize + cellsize/2;
int loc = x + y*width;
color c = img.pixels[loc];

float z = (mouseX/(float)width) * brightness(img.pixels[loc])- 100.0;

pushMatrix();
translate(x,y,z);
fill(c);
noStroke();
rectMode(CENTER);
rect(0,0,cellsize,cellsize);
popMatrix();

}
}
}

Exercício 10: Terminar os exercícios da bolinha, postando os respectivos programas em três variações:

a) a bolinha descendo e subindo, rebatendo nas bordas superior e inferior;

int x;
int y;
int w;
int h;

int speed;

void setup() {
size(500,500);
// background(175,238,238);

x = width/2;
y = height/2;
w = 50;
h = 50;
speed = 2;
}
void draw() {
background(175,238,238);
fill(0,0,0);
ellipse(x,y,w,h);

if(y > width) {
speed = -speed;
}
else if (y < 0 ){
speed = -speed;
}
y = y + speed;

}

b) a bolinha caindo e subindo com gravidade;

Opcional – colocar uma raquete na base inferior, controlada pelo mouse, de modo a implementar o ping-pong.

int x, y, w, h, speedX, speedY;
int paddleX, paddleY, paddleW, paddleH, paddleS;
boolean up,down;
void setup() {
size(500,500);
x = width/2;
y = height/2;
w = 50;
h = 50;
speedX = 5;
speedY = 5;
rectMode(CENTER);
paddleX = 60;
paddleY = height/2;
paddleW = 30;
paddleH = 100;
paddleS = 5;
}
void draw() {
background(207,207,207);
drawCircle();
moveCircle();
bounceOff();
drawPaddle();
movePaddle();
contactPaddle();
}
void drawPaddle() {
fill(5,5,5);
rect(paddleX, paddleY, paddleW, paddleH);
}
void movePaddle() {
if ( up ) {
paddleY = paddleY – paddleS;
}
if(down) {
paddleY = paddleY + paddleS;
}
}
void restrictpPaddle() {
if(paddleY – paddleH/2 < 0) { paddleY = paddleY + paddleS; } if(paddleY + paddleH/2 > height) {
paddleY = paddleY – paddleS;
}
}

void contactPaddle() {
if(x – w/2 < paddleX + paddleW/2) { speedX = -speedX; } } void drawCircle() { fill (0, 0 ,0); ellipse( x, y, w, h); } void moveCircle() { x = x + speedX; y = y + speedY; } void bounceOff() { if( x > width – w/2) {
speedX = -speedX;
} else if ( x < 0 + w/2) { speedX = -speedX; } if ( y > height – h/2) {
speedY = -speedY;
} else if (y < 0 + h/2) {
speedY = -speedY;
}
}

void keyPressed() {
if (key == ‘w’ || key == ‘W’) {
up = true;
}
if (key == ‘s’ || key == ‘S’) {
down = true;
}
}
void keyReleased() {
if (key == ‘w’ || key == ‘W’) {
up = false;
}
if (key == ‘s’ || key == ‘S’) {
down = false;
}
}

* A tecla “W” sobe o retângulo e a tecla “S” desce o retângulo.

c) a bolinha rebatendo nas 4 bordas.

int x;
int y;
int w;
int h;
int speedX;
int speedy;
void setup() {
size(500,500);
// background(147,112,219);
x = width/2;
y = height/2;
w = 50;
h = 50;
speedX = 2;
speedy = 3;
}
void draw() {
background(147,112,219);
fill(0,0,0);
ellipse(x,y,w,h);
if( x > width -w/2) {
speedX = -speedX;
}
else if ( x < 0 + w/2){ speedX = -speedX; } if ( y > height – h/2) {
speedy = -speedy;
}
else if (y < 0 + h/2) {
speedy = -speedy;
}
x = x + speedX;
y = y + speedy;
}

Exercício 11: Elaborar um programa utilizando efeitos sonoros.

import ddf.minim.*;
Minim cadena;
AudioPlayer music;
void setup(){
size(400,400);
cadena=new Minim(this); music=cadena.loadFile(“Hino Nacional Brasileiro.mp3”);
}
void draw(){
background (0,128,0);
}

void keyPressed() {
if (key == ‘1’) {
music.play();
}
if ( key == ‘2’){
music.pause();
music.play();
}
}

* A tecla “1” inicia o áudio e a tecla “2” pausa o áudio.

Exercício 12: Elaborar um programa utilizando as funções de vídeo e de processamento de imagens.

Video

import processing.video.*;

Capture video;

void setup() {
size(640, 480);
println(Capture.list());

video = new Capture(this, 640, 480);
video.start();
}

void captureEvent(Capture video) {
video.read();
}

void draw() {
image(video, 0, 0);
}

Exercício 13: Elaborar um programa utilizando as funções de processamento de imagens.

PImage img;
int pointillize = 16;

void setup() {
size(322,156);
img = loadImage(“UFG.png”);
background(255);
smooth();
}

void draw() {

int x = int(random(img.width));
int y = int(random(img.height));
int loc = x + y*img.width;

loadPixels();
float r = red(img.pixels[loc]);
float g = green(img.pixels[loc]);
float b = blue(img.pixels[loc]);

Aula 14 – Processing – Trabalho Final

Tema

Estrutura Flutuante
Structural Fluctuations_No4_Part_4_Epilog
Por Dennis Böck

Link onde foi encontrado o programa

http://www.openprocessing.org/sketch/11001

O que o programa faz

O botão esquerdo do mouse muda a cor de vermelho para azul esverdeado. Movendo o mouse em sentido horário a partir do canto esquerdo inferior para o canto direito inferior, há mais variações. Clicando no botão direito do mouse, reinicia a animação.

O que foi alterado

  • Retirada das “linhas explicativas” do código, reduzindo assim seu tamanho. Exemplo: //linha explicativa.
  • Trocada a cor de fundo de preto para branco para melhor visualização.
  • Trocada algumas das cores das estruturas flutuantes.
  • Diminuição do tamanho da animação para melhor ajuste em tela.
  • Retirada, no código, da linha “rotateX(-PI/3.0);” que gerava o erro “rotateX() can only be used with a renderer that supports 3D, such as P3D or OPENGL”.

Ideia final desenvolvida

color c;
int i, x1, y1, x2, y2;
int iteration;
float h;
float theta = 2f*PI/iteration;
float k;
float fp;
color hs;
int hs2;
int hs3;
int hs4;

void setup()
{
size(700, 450, P2D);
smooth();
background(255);
frameRate(40);
}

void draw(){
{

translate(width/2, height/2);
x1 = (int) random(width/2);
y1 = (int) random(height/200);
x2 = (int) random(width/2);
y2 = (int) random(height/200);
c = color( (int) random(35), (int) random(255), (int) random(30*k), (int) random(8));
float entscheidung = random(1);
hs = color( 0, 10,0);
hs2 = 1;
hs3 = 0;
hs4 = -220;

if(entscheidung > 0.125)
{
stroke(c);
noFill();
}
else
{
stroke(25 * sin (h), 10, h/2, 100);
noFill();
}
for (h=0 ; h<50 ; h++);
{
h= log (5*h);
}

int j = (int) random(4);
iteration = (int) pow(3, j);

for( i=0 ; i < iteration; i++)
{
curve(40, 40, 80, 60, 100, 100, 60, 120);
curve(x1, 40, y2, y1, 100, x2, 60, y2);
noFill();
rotate(2f*PI/iteration);

for ( k=0 ; k < 350 ; k++);
{
beginShape();
vertex(k, k/2);
bezierVertex(2*k, 25, 10*k, 50, 5*k,sin (k));
bezierVertex(log (k), 100, log (-k), 100, 10, 10);
endShape();

rotate(PI/4.0);
rect(0, 0, 30, 30);
rotate(PI/2.0);

if(mousePressed) {
c = hs;
h=random(5*h);
hs2 = hs;
hs3 = hs4;
} else {
c=c;
h=h;
}

for( fp=0 ; fp > 20; i++);
{
ellipse(252, fp, 8, 5);
fill(c, 5*h, 20, 5);
pushMatrix();
translate(40, 40);
rotate(2*PI/3.0);

ellipse(x1/2, x1, 80, 80);
translate(width/2, height/2);
rotate(PI/1.0);

fill(random(240), random(20), 0);
rect(random(400), 4, 3, 2);
fill(248, 252, 10);
rect(random(410), 8, 3, 2);
rect(random(400), 8, 3, 2);
fill(random(248), (random(255)-160), 10);
rect(random(380), 8, 3, 2);
fill(240, 150, 20);

fill(240+hs3, random(200), 10-hs3, 200);
ellipse(240, 8, 10, 10);

fill(240, mouseX, 10+hs3, mouseY);
ellipse(252, fp, 8, 5);

if (mousePressed && (mouseButton == LEFT)) {
c = hs;
h=random(5*h);
hs2 = hs;
hs3 = -255;
hs4 = 0;
}
else if (mousePressed && (mouseButton == RIGHT)) {
setup();
}
else {
c=c;
h=h;
}

fill(255+hs3, random(204+hs3),hs4);
triangle(mouseX/1.6, 3,height/30, mouseX/80, mouseY/10, 1);

int inverseX = width/10-mouseX;
int inverseY = height/10-mouseY;

ellipse(252, 8, 10, 10);

fill(240, random(200), 10, 200);
rotate(PI/4);
ellipse(252, 8, 7, 8);
noFill();
bezier(50, 75, 25, 25, random(125), 25, x1, 75);

popMatrix();
}

beginShape();
vertex(30, 70);
bezierVertex(25, 25*k, 67, 50, 50, 100);
bezierVertex(200, 100, 50, 25, x1*h, y1/8);
endShape();

for( fp=0 ; fp > 20; i++);{
fill(c, 5*h, 20, 5);
pushMatrix();

ellipse(x1/2, x1, 80, 80);
fill(240,random (200*hs2), 10);
ellipse(random(60) ,40, 8, 5);
ellipse(random(60) ,60, random(8), sin (h));
fill(random(240*hs2), 0, 0);
translate(7, 100);
ellipse(random(60) ,40, random(8), 5);

noFill();

bezier(50, 75, 25, 25, 125, 25, x1, 75);

popMatrix();

}
beginShape();
vertex(10, 20);
bezierVertex(50, 50, 10, 25, 2*k, 10);
//bezierVertex(10, 20, 10, 20, 60, 60);
endShape();

rotate((0.5f*PI*(log (k))/iteration*2)*8);
}
}
}
}

Referências para os códigos:

http://www.hrenatoh.net/curso/index_pro.html
http://www.openprocessing.org/collections/
http://www.openprocessing.org/sketch/11001
https://processing.org/examples/
https://github.com/shiffman/LearningProcessing
http://www.learningprocessing.com/exercises/

Módulo VI – Projeto Sensores – Atividade 2 – Christina Piovezan

Problema 1: Pesquise sobre os microcontroladores e apresente ao menos três tipos de plataformas de prototipagem atuais e suas principais características.

Um microcontrolador é um sistema computacional completo, no qual estão incluídos uma CPU (Central Processor Unit), memória de dados e programa, um sistema de clock, portas de I/O (Input/Output), além de outros possíveis periféricos, tais como, módulos de temporização e conversores A/D entre outros, integrados em um mesmo componente.

As três plataformas de prototipagem mais comuns são:

  • Arduino é uma plataforma de prototipagem eletrônica de hardware livre e de placa única, projetada com um microcontrolador Atmel AVR com suporte de entrada/saída embutido, uma linguagem de programação padrão, a qual tem origem em Wiring, e é essencialmente C/C++. O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar por artistas e amadores, principalmente, para aqueles que não teriam alcance aos controladores mais sofisticados e de ferramentas mais complicadas;
  • BeagleBone é baseada no proces­sador AM3359, um ARM Cortex-A8 da Texas Instru­ments que roda em até 720MHz, e pos­sui 32K de cache L1, 256K de cache L2, 176K de ROM e64K de RAM interna. Além disso, pos­sui acel­er­ador grá­fico 3D, con­tro­lador LCD de 24 bits e con­tro­lador para a inter­face touch­screen;
  • Raspberry Pi é um computador do tamanho de um cartão de crédito, que se conecta a um monitor de computador ou TV, e usa um teclado e um mouse padrão, desenvolvido no Reino Unido pela Fundação Raspberry Pi. Todo o hardware é integrado numa única placa. O principal objetivo é promover o ensino em Ciência da Computação básica em escolas.

Referências:
Disponível em:

http://www.sabereletronica.com.br/artigos/2849-beaglebone-placa-de-desenvolvimento-de-baixo-custo&gt;
http://sergioprado.org/introduzindo-a-beaglebone/&gt;
http://pt.wikipedia.org/wiki/Raspberry_Pi&gt;
http://pt.wikipedia.org/wiki/Arduino&gt
http://tecnologia.hsw.uol.com.br/microcontroladores1.htm&gt;
Acesso em: 19 de maio de 2015.

Problema 2: As plataformas de prototipagem possuem pinos de entrada/saída analógicas e digitais. Cite a diferença entre elas e dê exemplos de sensores que podem ser conectados a cada uma.

Pode-se configurar os pinos como entrada ou saída, para acionar um LED deve-se configurar os pinos como saída e para ler uma tecla deve-se configurar os pinos como entrada.

As diferenças são:

Entrada e Saída

As portas de entrada são utilizadas para a tomada de dados de sensores, enquanto as de saída são utilizadas para enviar comandos para hardware externo.

As entradas digitais só podem assumir dois estados, 0 ou 1, Alto e Baixo, ou seja, 0 V ou 5 V. Nada entre eles, dessa forma só é possível ler apenas dois estados. Por exemplo, verificar se uma porta está aberta ou fechada, identificar se um botão está pressionado ou solto. Elas são Pretas ou brancas. Claras ou escuras.

As entradas analógicas são de 0 e 1, com tudo entre. Em vez de apenas preto e branco, você pode ter cinza escuro, cinza claro, etc. Estes são somente de Inputs.

Digital e Analógica

Com as entradas digitais você aplica em lógica discreta para controle de seus projetos, porém em muitas situações a variação das grandezas envolvidas acontece de forma analógica, ou seja, variam continuamente em relação ao tempo e podem assumir infinitos valores dentro de uma faixa.

Sensores com entradas digitais

Sensores táteis ou digitais, como botões e interruptores ou motores.

Sensores com saída analógica

Sensores de seleção de materiais, de monitoramento de espessura e de monitoramento de posição como controle da posição final em cilindros hidráulicos e monitoramento das posições das válvulas.

Referências:
Disponível em

http://inovareinteragirporjose.blogspot.com.br/2015/05/modulo-5-sensores-parte-2b.html&gt;
http://webcache.googleusercontent.com/search?q=cache:http://www.erusbot.com/arquivos/materiais/Minicurso%2520Arduino%2520JACEE%25202012.pdf&gws_rd=cr&ei=VudfVbCINcWSsQT28IAo&gt;
Acesso em: 21 de maio de 2015.

Módulo VI – Projeto Sensores – Atividade 2 – Meire Cunha

Olá gentes,

Problema 1: Pesquise sobre os microcontroladores e apresente ao menos três tipos de plataformas de prototipagem atuais e suas principais características?

Os microcontroladores são dispositivos de tamanho reduzido, capazes de realizar controle de máquinas e equipamentos eletro-eletrônicos através de programas. São dispositivos que reúnem, em um único circuito integrado, diversos componentes de um sistema computacional simplificado. Em outras palavras, podemos afirmar que um microcontrolador é um pequeno microcomputador integrado em um único chip. Por se tratar de um componente programável, é bem versátil, podendo ser empregado em aplicações das mais diversas.

Como todo circuito integrado, a maior parte de seu custo não está vinculada ao material físico com que é produzido, mas sim no projeto, desenvolvimento e produção dos circuitos internos que garantem a funcionalidade a ele atribuída. Atualmente, empresas como a Intel, Microchip, Atmel, Motorola, Philips, e outros importantes fabricantes investem milhões de dólares em pesquisas e desenvolvimento de microcontroladores cada vez mais eficientes, mais velozes e com maior capacidade, mais recursos de conectividade e controle e menor consumo de energia elétrica.

O Arduino é uma plataforma de prototipagem eletrônica open-source que se baseia em hardware e software flexíveis e fáceis de usar. É destinado a artistas, designers, hobbistas e qualquer pessoa interessada em criar objetos ou ambientes interativos. O Arduino pode sentir o estado do ambiente que o cerca por meio da recepção de sinais de sensores e pode interagir com os seus arredores, controlando luzes, motores e outros atuadores. O microcontrolador na placa é programado com a linguagem de programação Arduino, baseada na linguagem Wiring, e o ambiente de desenvolvimento Arduino, baseado no ambiente Processing. Os projetos desenvolvidos com o Arduino podem ser autônomos ou podem comunicar-se com um computador para a realização da tarefa, com uso de software específico (ex: Flash, Processing, MaxMSP).

As placas podem ser construídas de manualmente ou adquiridas já montadas e o software pode ser baixado gratuitamente. O projeto do hardware (arquivos de CAD) está disponível sob licença open-source e você é LIVRE para adaptá-lo para as suas necessidades.

O Raspberry Pi é um microcomputador de reduzidas dimensões, desenvolvido pela Raspberry Pi Foundation em conjunto a Universidade de Cambridge em 2012 com o intuito de promover o estudo da ciência da computação nas escolas do ensino básico ao ensino secundário (Upton et al.,2014). O hardware deste microcomputador é integrado numa única placa de circuito impresso e existem dois modelos: o A e o B, ambos usam processador multimídia Broadcom BCM2835 system-on-chip (SoC) de 700 Mhz com placa gráfica integrada VideoCore IV. Os modelos possuem uma entrada de cartão SD, devido não apresentar memória interna, portanto faz-se necessário adquirir para o armazenamento de dados, bem como a instalação do sistema operacional e aplicações. Os dispositivos A e B respectivamente possuem 256 e 512 MB de memória RAM, saídas de áudio, vídeo, rede, USB e mini USB, além de 26 pinos que sevem como entrada e saída, interligando diversos tipos de hardwares podendo controlá-los (Richardson et al.,2013). O Raspberry Pi possui um processador ARM, logo, não é possível instalar o sistema operacional Windows. No entanto, estão disponíveis gratuitamente sistemas operacionais baseados no Linux compatíveis com este microcomputador. O Raspbian representado na figura 2, é um exemplo de sistema operacional, uma distribuição Linux baseado em Debian que no site do Raspberry é distribuído o New Out Of Box Software (NOOBS), com boa parte dos programas pré-instalados facilitando a utilização pelo usuário (Horan et al.,2013).

O Arduino e o Raspberry Pi são plataformas amplamente utilizadas por profissionais que têm interesse no campo das aplicações ubíquas. Elas possuem interfaces básicas para criação de pequenos projetos ou para aqueles que devem ser alimentados com bateria. Ambas usam a linguagens de programação de alto nível que são bastantes difundidas (C/C++, Phyton e Java). O Arduino, por ser uma plataforma mais antiga, tem uma grande rede de colaboradores ativos na web. O Raspberry é uma plataforma mais recente (lançada em 2012), tem um processador mais rápido que o Arduino, já vem pronto para acessar a web e possui mais interfaces que o Arduino. Tanto Arduino quanto o Raspberry permitem o desenvolvimento de diversos tipos de projetos. Por exemplo: automação residencial (Ligar e desligar dispositivos elétricos, controle remoto para TV, aparelhos de Ar-condicionado, etc.), tocador de audio books, leitor de livros eletrônicos entre outros. Alguns exemplos de projetos podem ser encon trados no Youtube e em outros sites na Web

A Tiva Launchpad é uma plataforma de prototipação de baixo custo baseada no microcontrolador ARM Cortex-M4F da Texas Instruments. A exemplo das demais plataformas de prototipação baseadas em microcontroladores mais modernos, a Tiva dispensa o uso de gravadores ou emuladores externos. Esse kit possui um emulador com interface USB que permite a gravação e depuração do código através da interface JTAG do próprio microcontrolador. Diferente do Arduino e do Kit PIC18F4550, a Tiva dispensa o uso de programas do tipo bootloader que viabilizam a gravação in-circuit do microcontrolador.

Para expandir as possibilidades da Tiva, foi desenvolvida uma placa de expansão com alguns recursos adicionais como: relógio de tempo real, memória EEPROM, display LCD, teclado matricial e interface serial RS-232.

Problema 2: As plataformas de prototipagem possuem pinos de entrada/saída analógicas e digitais. Cite a diferença entre elas e dê exemplos de sensores que podem ser conectados a cada uma.

Entrada/saída Analógico: pode assumir vários valores, no nosso caso ele pode variar de 0 Vcc até 5Vcc, ou seja ele pode assumir o valor 2,4 Vcc em um instante e depois 3,2 Vcc. Entrada/saída Digital: possui dois níveis de tensão, Um ou Zero, ou seja, tem tensão ou não tem tensão. Chamamos também de nível alto ou baixo. No caso será 0 Vcc ou 5 Vcc.

Portas de Entrada e Saída digital (input/output)

Esses terminais podem receber nível alto ou baixo se estiverem configurados como entrada; ou podem aplicar tensão no terminal em nível alto ou baixo, se estiverem configurados como saída. Qualquer porta digital do microcontrolador pode ser utilizada como entrada ou saída. Os terminais que você estiver utilizando como entrada nunca pode ficar sem nível de tensão, seja alto ou baixo, pois o microcontrolador não conseguirá definir qual é o nível de entrada. O microcontrolador possui limite de corrente nas portas, tanto de entrada quanto de saída.

Porta de entrada analógica

O Microcontrolador possui um conversor analógico/digital nas portas de entrada analógica, o valor convertido será de acordo com o ranger configurado no microcontrolador. Exemplo: Configuramos o microcontrolador para fazer a conversão analógica/digital do valor zero até 1023. Quando o nível de tensão no terminal estiver em 0 Vcc (nível mínimo), o microcontrolador irá converter para 0 (zero). Se o nível estiver em 5 Vcc (nível máximo), o microcontrolador irá converter para 1023. Se estiver em 2,5 Vcc (metade do nível), será convertido para 512 (metade do intervalo).

Por padrão os microcontroladores usam como referência a tensão de alimentação, ou seja, 5Vcc será sempre o máximo.  Mas existem terminais para que você possa usar como máximo um nível de tensão diferente. Por exemplo definir 3,3 Vcc como máximo. Esses terminais são identificados com VREF, esta tensão nunca pode ser maior do que a tensão suportada pelo microcontrolador.

Fontes consultadas:

http://www.cursoimobilizador.com.br/artigos/conceito-do-microcontrolador
http://blogdonatanael.blogspot.com.br/2013/05/comparacao-das-tres-plataformas-de.html
http://playground.arduino.cc/Portugues/HomePage
http://www.researchgate.net/profile/Manoel_Neto4/publication/268685128_Desenvolvimento_de_Aplicaes_Ubquas_com_Arduino_e_Raspbery_Pi/links/547339b40cf2d67fc035fa55.pdf
http://pdf.blucher.com.br/mathematicalproceedings/cnmai2014/0144.pdf
http://www.abenge.org.br/cobenge-2014/Artigos/129235.pdf
http://www.ssbrasil.com.br/blog/microcontrolador-em-c-aula2/

Há-Braços,
Meire Cunha

Módulo VI – Projeto Sensores – Atividade 1 – Meire Cunha

casa11

Olá turma,

Problema 1:

Quando o professor Lúcio Teles nos apresentou esse e outro vídeo parecido, naquela época, início de 2012, achamos tudo muito incrível, mas distante de nós. No entanto, se formos observar, vários recursos já estão sendo utilizados. Hoje, já temos carros que possuem um sistema de escurecimento dos vidros nos mesmos moldes das famosas Lentes Transition, iguais às cortinas de vidro da casa e as janelas com escurecimento eletrônico dos Boeing 787.

Atualmente contamos com televisores com telas curvas com touch e acesso à internet (as smarTVs). Os cooktops estão cada vez mais modernos e já existem o por indução. As geladeiras mais modernas, ao custo de, aproximadamente, 30 mil reais, já contam com sensores super modernos na porta que marcam temperatura, programas e estoques de alimentos. Já desfilam pelas ruas carros com computadores de bordo, GPS e até carros elétricos. Além disso, contamos com provadores eletrônicos no qual o usuário pode “experimentar”, virtualmente, uma roupa <http://sovirtual-fashiondepot.blogspot.com.br/2012_12_01_archive.html>

Problema 2:

Um robô autônomo necessita de sensores e atuadores para interagir com o meio ambiente. Baseado nos sensores e atuadores o robô deve interpretar os sinais provenientes dos sensores para tomada de decisão. A seguir serão apresentados os tipos mais comuns de sensores e atuadores.  Os sensores são transdutores, ou seja, conversores de grandezas físicas em sinais elétricos correspondentes. Tipos de Sensores: – Bússola; – Sistema de GPS (Global Positioning System) – Sistemas Inerciais (Acelerômetros, Giroscópio) – Sistema de Visão; Câmeras de Vídeo.

Os atuadores são componentes que realizam a conversão da energia elétrica, hidráulica, pneumática em energia mecânica. Exemplos: LEDs e sinalizadores sonoros, cilindros hidráulicos e motores. Efetuador é o elemento de ligação entre o robô e o meio que o cerca. Pode ser do tipo garra ou ferramenta. O principal escopo de uma garra é pegar um determinado objeto, transportá-lo a uma posição pré-estabelecida e após alcançar tal posição, soltá-lo. A ferramenta tem como função realizar uma ação ou trabalho sobre uma peça, sem necessariamente manipulá-la. Exemplo: maçarico, pistola de pintura e porta-eletrodo.

Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Exemplos: – MP3 players,  Impressoras, Equipamentos de rede. Um microcomputador é uma máquina eletrônica capaz de manipular informações. As partes básicas de um microcomputador são: Monitor (Vídeo), Teclado/Mouse, Gabinete – Placa mãe, UCP (microprocessador), Memórias (ram e rom), Disk Drives, Disco Rígido (winchester) etc. Exemplos: Celeron® Processor: Pentium® III Processor: Intel® Xeon™ Processor.

Fontes consultadas:

http://automacaoerobotica.blogspot.com.br/2012/07/sensores-e-atuadores-aplicados-robotica.html
http://www.feis.unesp.br/Home/departamentos/engenhariaeletrica/aula-5—sensor-25-04-2013b.pdf
http://www.fundacaobradesco.org.br/vv-apostilas/mic_pag8.htm
http://www.embarc.com.br/p1600.aspx

Há-braços,
Meire Cunha

Módulo VI – Projeto Sensores – Atividade 1 – Christina Piovezan

Problema 1

Muito do que foi apresentado no vídeo já está presente nos dias de hoje, porém de maneira mais simples ou menos utópica. Isso é reflexo das mais variadas possibilidades tecnológicas e estudos direcionados à praticidade e à segurança da informação, por exemplo.

O atual Jornal Nacional (TV Globo) é um exemplo de comunicação/apresentação em tempo real e a longa distância. O Facetime (Iphone), o Skype, o Hangout são outros exemplos do avanço tecnológico na comunicação.
Curioso é que no vídeo há uma “pequena” deixa com relação ao desperdício dos recursos naturais. Prestaram atenção que, mesmo tendo toda a tecnologia a favor do conforto e da praticidade, a personagem deixa a torneira aberta por mais de 2 minutos enquanto lê suas mensagens? Talvez a tecnologia apresentada no vídeo seja incapaz de promover a diminuição da falta de água no planeta.

Bom, voltando ao enunciado da pergunta, deixo abaixo o link Estratégia Nacional de Ciência, Tecnologia e Inovação 2012 – 2015.
Boa leitura!

Problema 2

Sensores são transdutores, ou seja, conversores de grandezas físicas em sinais elétricos correspondentes. Um robô é equipado com sensores para monitorar a velocidade com que se move, a posição em que se encontra, a localização de uma peça a ser manipulada, as dimensões da peça, a aproximação de um ser humano, e o impacto com um obstáculo (MORAES, 2003).

Atuadores são componentes que realizam a conversão da energia elétrica, hidráulica, pneumática em energia mecânica. A potência mecânica gerada pelos atuadores é enviada aos elos através dos sistemas de transmissão para que os mesmos se movimentem. É possível classificar os atuadores de acordo com o tipo de energia que utiliza. A escolha do tipo de atuador mais indicado está relacionada com a esta classificação.

  • Atuadores Hidráulicos: utilizam um fluido à pressão para movimentar o braço. São utilizados em robô que operam grandes cargas, onde é necessária grande potência e velocidade, mas oferecem baixa precisão.
  • Atuadores Pneumáticos: utilizam um gás à pressão para movimentar o braço. São mais baratos que os hidráulicos, sendo usados em robôs de pequeno porte.  Oferecem baixa precisão, ficando limitados a operações do tipo pega-e-coloca (do inglês, pick and place).
  • Atuadores Eletromagnéticos: motores elétricos (de passo, servos, Corrente Continua ou Corrente Alternada) ou músculos artificiais, usados em robôs de pequeno e médio porte.
Sistemas embarcados estão relacionados ao uso de hardware (eletrônica) e software (instruções) incorporados em um dispositivo com um objetivo pré-definido. A diferença entre um sistema embarcado e um computador de propósito geral está justamente na objetividade. Computadores como PCs, notebooks e afins são máquinas multiobjetivo, ou seja, foram criadas e dimensionadas para atuar num domínio de funções muito grande. Já os sistemas embarcados ou SEs possuem dimensionamento de recursos direcionado a um domínio de objetivos bem menor, ou mesmo singular.

Microprocessadores (ou processador) é o cérebro da placa mãe, controla as operações do computador como um todo e também interpreta e executa as instruções dos programas.

Referências:

Módulo VI – Projeto Sensores – Atividade 2 – Keyla Reis

Problema 1: Pesquise sobre os microcontroladores e apresente ao menos três tipos de plataformas de prototipagem atuais e suas principais características?

As 3 plataformas de prototipagem (desenvolvimento) mais comuns atualmente, são: Arduino, BeagleBone e Raspberry Pi (imagem na ordem).

_DSC7090

Primeiramente vamos conhecer um pouco de cada uma:

Arduino: As placas Arduino Duemilanove e Arduino Mega 2560 são as mais comuns e os preços são bem acessíveis.

Raspberry Pi: Temos o modelo B que possui duas portas USB e uma porta ethernet. Os preços são bons, mas ainda deve-se ter cuidado ao comprar no Brasil, pois os preços aqui não são nada baratos na maioria das vezes.

BeagleBone: Uma BeagleBone Black é um bom suporte ao Android e ao Ubuntu o problema é comprar uma no Brasil, a placa que custa $45 (cerca de R$ 90,00) lá fora, é vendida por cerca de R$ 230,00 aqui no país.

A seguir, um quadro comparativo, semelhante ao original publicado no blog Digital Diner mas com o modelo atual da BeagleBone (black) e com revisão na parte da comunicação do Arduino (rede e vídeo):

d1dec-comparac3a7c3a3o

Problema 2: As plataformas de prototipagem possuem pinos de entrada/saída analógicas e digitais. Cite a diferença entre elas e dê exemplos de sensores que podem ser conectados a cada uma.

As plataformas analógicas são as que possuem sinal contínuo cuja variação no intervalo das ondas das parábolas pode variar muito gerando ruído. Carrega pouca informação.

As plataformas digitais possuem valores discretos entre os seus intervalos de variação diferente das variações quase infinitas do analógico com isso diminuindo a frequência.

Podemos citar como exemplos de sensores: sensores de temperatura como os termômetros  (analógico), sensores de movimento (digital).  Há também os sensores de TV que podem ser digital ou analógico, dependendo da qualidade da imagem e do som.

Referências:

Blog do Natanael. Comparação das três plataformas de prototipagem mais comuns. Disponível em: <http://blogdonatanael.blogspot.com.br/2013/05/compracao-das-tres-plataformas-de-html> Acesso: 17 mai. 2015.